release.go (1590B)
1 package domain 2 3 import "time" 4 5 type ReleaseType string 6 7 const ( 8 ReleaseTypeAlbum ReleaseType = "album" 9 ReleaseTypeSingle ReleaseType = "single" 10 ReleaseTypeEP ReleaseType = "ep" 11 ReleaseTypeOther ReleaseType = "other" 12 ) 13 14 var ReleaseTypes map[ReleaseType]struct{} = map[ReleaseType]struct{}{ 15 ReleaseTypeAlbum: {}, 16 ReleaseTypeSingle: {}, 17 ReleaseTypeEP: {}, 18 ReleaseTypeOther: {}, 19 } 20 21 type ReleaseID int64 22 23 type NewRelease struct { 24 ID ReleaseID 25 MusicBrainzReleaseID *MusicBrainzID 26 Title string 27 LatinTitle *string 28 ReleaseDate time.Time 29 Artists []NewReleaseArtist 30 Type ReleaseType 31 } 32 33 type NewReleaseArtist struct { 34 ArtistID ArtistID 35 Role ArtistRole 36 SortOrder int 37 } 38 39 type EditRelease struct { 40 ID ReleaseID 41 MusicBrainzReleaseID *MusicBrainzID 42 Title string 43 LatinTitle *string 44 ReleaseDate time.Time 45 Artists []NewReleaseArtist 46 Songs []EditReleaseSong 47 Type ReleaseType 48 } 49 50 type EditReleaseSong struct { 51 SongID SongID 52 TrackNumber int 53 } 54 55 type Release struct { 56 ID ReleaseID 57 MusicBrainzReleaseID *MusicBrainzID 58 Title string 59 LatinTitle *string 60 ReleaseDate time.Time 61 Artists []ReleaseArtist 62 Songs []ReleaseSong 63 Type ReleaseType 64 } 65 66 type ReleaseArtist struct { 67 Artist Artist 68 Role ArtistRole 69 SortOrder int 70 } 71 72 type ReleaseSong struct { 73 Song Song 74 TrackNumber int 75 }