package model import ( "mime" "time" ) type MediaFile struct { ID string Path string Title string Album string Artist string ArtistID string AlbumArtist string AlbumID string HasCoverArt bool TrackNumber int DiscNumber int Year int Size int Suffix string Duration int BitRate int Genre string Compilation bool CreatedAt time.Time UpdatedAt time.Time } func (mf *MediaFile) ContentType() string { return mime.TypeByExtension("." + mf.Suffix) } type MediaFiles []MediaFile type MediaFileRepository interface { CountAll() (int64, error) Exists(id string) (bool, error) Put(m *MediaFile) error Get(id string) (*MediaFile, error) FindByAlbum(albumId string) (MediaFiles, error) FindByPath(path string) (MediaFiles, error) GetStarred(userId string, options ...QueryOptions) (MediaFiles, error) GetRandom(options ...QueryOptions) (MediaFiles, error) Search(q string, offset int, size int) (MediaFiles, error) Delete(id string) error DeleteByPath(path string) error }