routes.go (1223B)
1 package routes 2 3 import ( 4 "fmt" 5 "lyrics/internal/domain" 6 ) 7 8 func Song(song domain.Song) string { 9 title := song.Title 10 if song.LatinTitle != nil { 11 title = *song.LatinTitle 12 } 13 14 return SongPath(song.ID, title) 15 } 16 17 func SongPath(id domain.SongID, title string) string { 18 return fmt.Sprintf("/song/%d/%s", id, domain.Slug(title)) 19 } 20 21 func Release(release domain.Release) string { 22 title := release.Title 23 if release.LatinTitle != nil { 24 title = *release.LatinTitle 25 } 26 27 return ReleasePath(release.ID, title) 28 } 29 30 func ReleaseEdit(release domain.Release) string { 31 return fmt.Sprintf("%s/edit", Release(release)) 32 } 33 34 func ReleasePath(id domain.ReleaseID, title string) string { 35 return fmt.Sprintf("/release/%d/%s", id, domain.Slug(title)) 36 } 37 38 func ReleaseCover(release domain.Release) string { 39 return fmt.Sprintf("%s/cover", Release(release)) 40 } 41 42 func Artist(artist domain.Artist) string { 43 name := artist.Name 44 if artist.LatinName != nil { 45 name = *artist.LatinName 46 } 47 48 return ArtistPath(artist.ID, name) 49 } 50 51 func ArtistPath(id domain.ArtistID, name string) string { 52 return fmt.Sprintf("/artist/%d/%s", id, domain.Slug(name)) 53 } 54 55 func ArtistEdit(artist domain.Artist) string { 56 return fmt.Sprintf("%s/edit", Artist(artist)) 57 }