quintodrome/domain/mediafile.go

58 lines
1.3 KiB
Go
Raw Normal View History

2016-03-02 05:07:24 -09:00
package domain
2016-02-26 23:35:01 -09:00
import (
"mime"
"time"
2016-02-26 23:35:01 -09:00
)
type MediaFile struct {
ID string
2016-02-26 23:35:01 -09:00
Path string
Title string
Album string
Artist string
ArtistID string
2016-02-26 23:35:01 -09:00
AlbumArtist string
AlbumID string `parent:"album"`
2016-03-03 06:34:17 -09:00
HasCoverArt bool
TrackNumber int
DiscNumber int
Year int
2016-03-02 19:51:26 -09:00
Size string
Suffix string
Duration int
BitRate int
Genre string
2016-02-26 23:35:01 -09:00
Compilation bool
PlayCount int
PlayDate time.Time
Rating int
2016-03-02 21:07:13 -09:00
Starred bool
2016-03-23 15:02:58 -08:00
StarredAt time.Time `idx:"Starred"`
2016-02-26 23:35:01 -09:00
CreatedAt time.Time
UpdatedAt time.Time
}
func (mf *MediaFile) ContentType() string {
return mime.TypeByExtension("." + mf.Suffix)
}
2016-03-03 17:01:55 -09:00
type MediaFiles []MediaFile
func (a MediaFiles) Len() int { return len(a) }
2016-03-03 17:42:12 -09:00
func (a MediaFiles) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a MediaFiles) Less(i, j int) bool {
return (a[i].DiscNumber*1000 + a[i].TrackNumber) < (a[j].DiscNumber*1000 + a[j].TrackNumber)
2016-03-03 17:42:12 -09:00
}
2016-03-03 17:01:55 -09:00
type MediaFileRepository interface {
BaseRepository
Put(m *MediaFile) error
2016-03-03 08:08:44 -09:00
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)
2016-03-02 09:18:39 -09:00
}