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.
deepgram-demo/internal/metadata/metadataStorage.go

47 lines
1.1 KiB

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
}