navidrome/model/mediafile.go

53 lines
1.1 KiB
Go

package model
import (
"mime"
"time"
)
type MediaFile struct {
ID string
Path string
Title string
Album string
Artist string
ArtistID string
AlbumArtist string
AlbumID string `parent:"album"`
HasCoverArt bool
TrackNumber int
DiscNumber int
Year int
Size string
Suffix string
Duration int
BitRate int
Genre string
Compilation bool
PlayCount int
PlayDate time.Time
Rating int
Starred bool
StarredAt time.Time `idx:"Starred"`
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)
GetStarred(options ...QueryOptions) (MediaFiles, error)
PurgeInactive(active MediaFiles) error
GetAllIds() ([]string, error)
Search(q string, offset int, size int) (MediaFiles, error)
}