lyrics

lyrics
git clone git://brookjeynes.dev/bjeynes/lyrics.git
Log | Files | Refs

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 }