| 27 | } |
| 28 | |
| 29 | func (s *EntityService) Search(kind, query string) ([]EntityDTO, error) { |
| 30 | all, err := s.List(kind) |
| 31 | if err != nil { |
| 32 | return nil, err |
| 33 | } |
| 34 | q := strings.ToLower(strings.TrimSpace(query)) |
| 35 | if q == "" { |
| 36 | return all, nil |
| 37 | } |
| 38 | out := []EntityDTO{} |
| 39 | for _, entity := range all { |
| 40 | if strings.Contains(strings.ToLower(entity.Name), q) || |
| 41 | strings.Contains(strings.ToLower(entity.Description), q) || |
| 42 | strings.Contains(strings.ToLower(strings.Join(entity.Tags, " ")), q) { |
| 43 | out = append(out, entity) |
| 44 | } |
| 45 | } |
| 46 | return out, nil |
| 47 | } |
| 48 | |
| 49 | func (s *EntityService) Save(kind string, input EntityDTO) (EntityDTO, error) { |
| 50 | store, err := entityStore(kind) |