package metadata import ( "errors" "fmt" ) type AudioMetadata struct { FileName string `json:"filename"` Duration int `json:"duration"` } type MetadataMemoryStorage struct { Metadata map[string]AudioMetadata } func NewMetadataMemoryStorage() *MetadataMemoryStorage { return &MetadataMemoryStorage{Metadata: map[string]AudioMetadata{}} } func (metadata *MetadataMemoryStorage) Put(a AudioMetadata) (err error) { fmt.Println(metadata, a) _, ok := metadata.Metadata[a.FileName] if !ok { metadata.Metadata[a.FileName] = a return nil } return errors.New("already exists") // 409 Conflict } func (metadata *MetadataMemoryStorage) get(filename string) (a AudioMetadata, err error) { val, ok := metadata.Metadata[filename] if ok { return val, nil } return AudioMetadata{}, errors.New("not found") // 404 Not Found } func (metadata *MetadataMemoryStorage) filterMaxDuration(maxDuration int) (a []string) { result := []string{} for _, item := range metadata.Metadata { if (item.Duration <= maxDuration) || (maxDuration <= 0) { result = append(result, item.FileName) } } return result }