diff options
-rw-r--r-- | timetask/fields.go | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/timetask/fields.go b/timetask/fields.go index 4e3ac7c..6d1fa69 100644 --- a/timetask/fields.go +++ b/timetask/fields.go @@ -1,5 +1,7 @@ package timetask +import "fmt" + type Client struct { ID uint Name string @@ -31,3 +33,64 @@ type Fields struct { PersonID uint `yaml:"person_id"` Clients []Client } + +// func thingByName(things []interface{}, name string) (*interface{}, error) { +// for _, thing := range things { +// t = IDName(thing.(IDName)) +// if t.Name == name { +// return &thing, nil +// } +// } +// +// return nil, fmt.Errorf("Thing not found") +// } + +func (f *Fields) ClientByName(client_name string) (*Client, error) { + for _, client := range f.Clients { + if client.Name == client_name { + return &client, nil + } + } + + return nil, fmt.Errorf("Client %s not found", client_name) +} + +func (c *Client) ProjectByName(project_name string) (*Project, error) { + for _, project := range c.Projects { + if project.Name == project_name { + return &project, nil + } + } + + return nil, fmt.Errorf("Project %s not found", project_name) +} + +func (p *Project) ModuleByName(module_name string) (*Module, error) { + for _, module := range p.Modules { + if module.Name == module_name { + return &module, nil + } + } + + return nil, fmt.Errorf("Module %s not found", module_name) +} + +func (p *Project) TaskByName(task_name string) (*Task, error) { + for _, task := range p.Tasks { + if task.Name == task_name { + return &task, nil + } + } + + return nil, fmt.Errorf("Task %s not found", task_name) +} + +func (p *Project) WorkTypeByName(work_type_name string) (*WorkType, error) { + for _, work_type := range p.WorkTypes { + if work_type.Name == work_type_name { + return &work_type, nil + } + } + + return nil, fmt.Errorf("Work type %s not found", work_type_name) +} |