package model import ( "time" ) type ( ReleaseType string Release struct { ID string `json:"id"` Visible bool `json:"visible"` Title string `json:"title"` Description string `json:"description"` ReleaseType ReleaseType `json:"type" db:"type"` ReleaseDate time.Time `json:"releaseDate" db:"release_date"` Artwork string `json:"artwork"` Buyname string `json:"buyname"` Buylink string `json:"buylink"` Copyright string `json:"copyright" db:"copyright"` CopyrightURL string `json:"copyrightURL" db:"copyrighturl"` } FullRelease struct { *Release Tracks []DisplayTrack `json:"tracks"` Credits []Credit `json:"credits"` Links []Link `json:"links"` } ReleaseShorthand struct { ID string `json:"id"` Title string `json:"title"` ReleaseType ReleaseType `json:"type" db:"type"` ReleaseDate time.Time `json:"releaseDate" db:"release_date"` Artwork string `json:"artwork"` Buylink string `json:"buylink"` } ) const ( Single ReleaseType = "single" Album ReleaseType = "album" EP ReleaseType = "EP" Compilation ReleaseType = "compilation" Upcoming ReleaseType = "upcoming" ) // GETTERS func (release Release) TextReleaseDate() string { return release.ReleaseDate.Format("2006-01-02T15:04") } func (release Release) PrintReleaseDate() string { return release.ReleaseDate.Format("02 January 2006") } func (release Release) GetReleaseYear() int { return release.ReleaseDate.Year() } func (release Release) GetArtwork() string { if release.Artwork == "" { return "/img/default-cover-art.png" } return release.Artwork } func (release FullRelease) IsSingle() bool { return len(release.Tracks) == 1; } func (release Release) IsReleased() bool { return release.ReleaseDate.Before(time.Now()) }