Loggest thine Stuff
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

65 lines
1.3 KiB

package projects
import (
"context"
"git.aiterp.net/stufflog3/stufflog3/usecases/items"
"git.aiterp.net/stufflog3/stufflog3/usecases/scopes"
"git.aiterp.net/stufflog3/stufflog3/usecases/stats"
)
type Service struct {
Scopes *scopes.Service
Stats *stats.Service
Items *items.Service
Repository Repository
}
func (s *Service) Find(ctx context.Context, id int) (*Result, error) {
scopeID := s.Scopes.ScopeFromContext(ctx).ID
project, err := s.Repository.Find(ctx, scopeID, id)
if err != nil {
return nil, err
}
requirements, requirementStats, err := s.Repository.ListRequirements(ctx, id)
if err != nil {
return nil, err
}
items, itemProgresses, err := s.Items.ListProject(ctx, id)
if err != nil {
return nil, err
}
stats, err := s.Stats.List(ctx)
if err != nil {
return nil, err
}
result := GenerateResult(
*project,
requirements,
requirementStats,
items,
itemProgresses,
stats,
)
return &result, nil
}
func (s *Service) List(ctx context.Context) ([]Entry, error) {
projects, err := s.Repository.List(ctx, s.Scopes.ScopeFromContext(ctx).ID)
if err != nil {
return nil, err
}
entries := make([]Entry, 0, len(projects))
for _, project := range projects {
entries = append(entries, generateEntry(project))
}
return entries, nil
}