Files
gonic/model/model.go
2019-06-04 16:09:39 +01:00

80 lines
2.7 KiB
Go

package model
import (
"time"
)
// q: what in tarnation are the `IsNew`s for?
// a: it's a bit of a hack - but we set a models IsNew to true if
// we just filled it in for the first time, so when it comes
// time to insert them (post children callback) we can check for
// that bool being true - since it won't be true if it was already
// in the db
type Artist struct {
IDBase
Name string `gorm:"not null; unique_index"`
Folders []Folder
}
type Track struct {
IDBase
CrudBase
Folder Folder
FolderID int `gorm:"not null; unique_index:idx_folder_filename" sql:"default: null; type:int REFERENCES folders(id) ON DELETE CASCADE"`
Filename string `gorm:"not null; unique_index:idx_folder_filename" sql:"default: null"`
Artist Artist
ArtistID int `gorm:"not null; index" sql:"default: null; type:int REFERENCES artists(id) ON DELETE CASCADE"`
ContentType string `gorm:"not null" sql:"default: null"`
Duration int `gorm:"not null" sql:"default: null"`
Size int `gorm:"not null" sql:"default: null"`
Bitrate int `gorm:"not null" sql:"default: null"`
TagDiscNumber int `sql:"default: null"`
TagTitle string `sql:"default: null"`
TagTotalDiscs int `sql:"default: null"`
TagTotalTracks int `sql:"default: null"`
TagTrackArtist string `sql:"default: null"`
TagTrackNumber int `sql:"default: null"`
TagYear int `sql:"default: null"`
}
type User struct {
IDBase
CrudBase
Name string `gorm:"not null; unique_index" sql:"default: null"`
Password string `gorm:"not null" sql:"default: null"`
LastFMSession string `sql:"default: null"`
IsAdmin bool `sql:"default: null"`
}
type Setting struct {
CrudBase
Key string `gorm:"not null; primary_key; auto_increment:false" sql:"default: null"`
Value string `sql:"default: null"`
}
type Play struct {
IDBase
User User
UserID int `gorm:"not null; index" sql:"default: null; type:int REFERENCES users(id) ON DELETE CASCADE"`
Folder Folder
FolderID int `gorm:"not null; index" sql:"default: null; type:int REFERENCES folders(id) ON DELETE CASCADE"`
Time time.Time `sql:"default: null"`
Count int
}
type Folder struct {
IDBase
CrudBase
Path string `gorm:"not null; unique_index" sql:"default: null"`
Parent *Folder
ParentID int `sql:"default: null; type:int REFERENCES folders(id) ON DELETE CASCADE"`
AlbumArtist Artist
AlbumArtistID int `gorm:"index" sql:"default: null; type:int REFERENCES artists(id) ON DELETE CASCADE"`
AlbumTitle string `gorm:"index" sql:"default: null"`
AlbumYear int `sql:"default: null"`
Cover string `sql:"default: null"`
Tracks []Track
IsNew bool `gorm:"-"`
}