major database optimisations
Signed-off-by: ari melody <ari@arimelody.me>
This commit is contained in:
parent
4f488d7bd8
commit
9f1a64b59b
10 changed files with 248 additions and 188 deletions
|
@ -6,21 +6,34 @@ import (
|
|||
)
|
||||
|
||||
var ari = Artist{
|
||||
Id: "arimelody",
|
||||
Name: "ari melody",
|
||||
Website: "https://arimelody.me",
|
||||
}
|
||||
var mellodoot = Artist{
|
||||
Id: "mellodoot",
|
||||
Name: "mellodoot",
|
||||
Website: "https://mellodoot.com",
|
||||
}
|
||||
var zaire = Artist{
|
||||
Id: "zaire",
|
||||
Name: "zaire",
|
||||
Website: "https://supitszaire.com",
|
||||
}
|
||||
var mae = Artist{
|
||||
Id: "maetaylor",
|
||||
Name: "mae taylor",
|
||||
Website: "https://mae.wtf",
|
||||
}
|
||||
var loudar = Artist{
|
||||
Id: "loudar",
|
||||
Name: "Loudar",
|
||||
Website: "https://alex.targoninc.com",
|
||||
}
|
||||
var red = Artist {
|
||||
Id: "smoljorb",
|
||||
Name: "smoljorb",
|
||||
}
|
||||
|
||||
func make_date_work(date string) time.Time {
|
||||
res, err := time.Parse("2-Jan-2006", date)
|
||||
|
@ -35,7 +48,7 @@ var placeholders = []Album{
|
|||
{
|
||||
Id: "test",
|
||||
Title: "test album",
|
||||
Type: "album",
|
||||
// Type: "album",
|
||||
ReleaseDate: make_date_work("18-Mar-2024"),
|
||||
Buyname: "go get it!!",
|
||||
Buylink: "https://arimelody.me/",
|
||||
|
@ -45,7 +58,8 @@ var placeholders = []Album{
|
|||
Url: "https://youtu.be/dQw4w9WgXcQ",
|
||||
},
|
||||
},
|
||||
Description: "she sample on my text 'til i 🚫🚫🚫",
|
||||
Description:
|
||||
`Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas viverra ligula interdum, tempor metus venenatis, tempus est. Praesent semper vulputate nulla, a venenatis libero elementum id. Proin maximus aliquet accumsan. Integer eu orci congue, ultrices leo sed, maximus risus. Integer laoreet non urna non accumsan. Cras ut sollicitudin justo. Vivamus eu orci tempus, aliquet est rhoncus, tempus neque. Aliquam tempor sit amet nibh sed tempus. Nulla vitae bibendum purus. Sed in mi enim. Nam pharetra enim lorem, vel tristique diam malesuada a. Duis dignissim nunc mi, id semper ex tincidunt a. Sed laoreet consequat lacus a consectetur. Nulla est diam, tempus eget lacus ullamcorper, tincidunt faucibus ex. Duis consectetur felis sit amet ante fermentum interdum. Sed pulvinar laoreet tellus.`,
|
||||
Credits: []AlbumCredit{
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
|
@ -190,15 +204,15 @@ var placeholders = []Album{
|
|||
Description: "living the dream 🌌 ✨",
|
||||
Credits: []AlbumCredit{
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "vocals",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "production",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "artwork",
|
||||
},
|
||||
},
|
||||
|
@ -258,15 +272,15 @@ var placeholders = []Album{
|
|||
Description: "hey! go my way! 💥 ✨",
|
||||
Credits: []AlbumCredit{
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "vocals",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "production",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "artwork",
|
||||
},
|
||||
},
|
||||
|
@ -299,15 +313,15 @@ var placeholders = []Album{
|
|||
Description: "let's take a trip. i've got a goddamn boat ⛵️",
|
||||
Credits: []AlbumCredit{
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "vocals",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "production",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "artwork",
|
||||
},
|
||||
},
|
||||
|
@ -340,15 +354,15 @@ var placeholders = []Album{
|
|||
Description: "we'll dawn a new frontier! 👾",
|
||||
Credits: []AlbumCredit{
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "vocals",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "production",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "artwork",
|
||||
},
|
||||
},
|
||||
|
@ -379,7 +393,7 @@ var placeholders = []Album{
|
|||
Role: "production",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "production",
|
||||
},
|
||||
},
|
||||
|
@ -411,11 +425,11 @@ var placeholders = []Album{
|
|||
},
|
||||
Credits: []AlbumCredit{
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "production",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "artwork",
|
||||
},
|
||||
},
|
||||
|
@ -447,15 +461,15 @@ var placeholders = []Album{
|
|||
},
|
||||
Credits: []AlbumCredit{
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "vocals",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "production",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "artwork",
|
||||
},
|
||||
},
|
||||
|
@ -487,11 +501,11 @@ var placeholders = []Album{
|
|||
},
|
||||
Credits: []AlbumCredit{
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "production",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "artwork",
|
||||
},
|
||||
},
|
||||
|
@ -533,9 +547,14 @@ var placeholders = []Album{
|
|||
},
|
||||
Credits: []AlbumCredit{
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "production",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &red,
|
||||
Role: "artwork",
|
||||
Meta: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -558,9 +577,14 @@ var placeholders = []Album{
|
|||
},
|
||||
Credits: []AlbumCredit{
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "production",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &red,
|
||||
Role: "artwork",
|
||||
Meta: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -584,11 +608,11 @@ var placeholders = []Album{
|
|||
Description: "an 8-bit expedition! ⚔️🛡️",
|
||||
Credits: []AlbumCredit{
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "production",
|
||||
},
|
||||
AlbumCredit{
|
||||
Artist: &ari,
|
||||
Artist: &mellodoot,
|
||||
Role: "artwork",
|
||||
},
|
||||
},
|
||||
|
@ -609,6 +633,6 @@ func QueryAllAlbums() ([]Album) {
|
|||
}
|
||||
|
||||
func QueryAllArtists() ([]Artist) {
|
||||
return []Artist{ ari, zaire, mae, loudar }
|
||||
return []Artist{ ari, mellodoot, zaire, mae, loudar, red }
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ import (
|
|||
|
||||
type (
|
||||
Artist struct {
|
||||
Id string;
|
||||
Name string;
|
||||
Website string;
|
||||
}
|
||||
|
@ -34,6 +35,7 @@ type (
|
|||
AlbumCredit struct {
|
||||
Artist *Artist;
|
||||
Role string;
|
||||
Meta bool; // for "meta" contributors (i.e. not credited for the musical work, but other related assets)
|
||||
}
|
||||
)
|
||||
|
||||
|
@ -63,36 +65,88 @@ func (album Album) GetUniqueArtists() []Artist {
|
|||
return res
|
||||
}
|
||||
|
||||
func (album Album) PrintArtists() string {
|
||||
artists := album.GetUniqueArtists()
|
||||
if len(artists) == 1 {
|
||||
return artists[0].Name
|
||||
func (album Album) GetUniqueNonMetaArtists() []Artist {
|
||||
if len(album.Credits) == 1 {
|
||||
return []Artist{ *album.Credits[0].Artist }
|
||||
}
|
||||
|
||||
// create a map of artists to prevent duplicates
|
||||
res := []Artist{}
|
||||
for _, credit := range album.Credits {
|
||||
if credit.Meta {
|
||||
continue
|
||||
}
|
||||
artist := *credit.Artist
|
||||
exists := false
|
||||
for _, c := range res {
|
||||
if c == *credit.Artist {
|
||||
exists = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if exists {
|
||||
continue
|
||||
}
|
||||
res = append(res, artist)
|
||||
}
|
||||
|
||||
// now create the actual array to send
|
||||
return res
|
||||
}
|
||||
|
||||
func (album Album) GetUniqueArtistNames() []string {
|
||||
if len(album.Credits) == 1 {
|
||||
return []string{ album.Credits[0].Artist.Name }
|
||||
}
|
||||
|
||||
artists := album.GetUniqueArtists()
|
||||
names := []string{}
|
||||
for _, artist := range artists {
|
||||
names = append(names, artist.Name)
|
||||
}
|
||||
|
||||
return names;
|
||||
}
|
||||
|
||||
func (album Album) GetUniqueNonMetaArtistNames() []string {
|
||||
if len(album.Credits) == 1 {
|
||||
return []string{ album.Credits[0].Artist.Name }
|
||||
}
|
||||
|
||||
artists := album.GetUniqueNonMetaArtists()
|
||||
names := []string{}
|
||||
for _, artist := range artists {
|
||||
names = append(names, artist.Name)
|
||||
}
|
||||
|
||||
return names;
|
||||
}
|
||||
|
||||
func (album Album) PrintPrimaryArtists() string {
|
||||
names := album.GetUniqueNonMetaArtistNames();
|
||||
if len(names) == 1 {
|
||||
return names[0]
|
||||
}
|
||||
res := strings.Join(names[:len(names) - 1], ", ")
|
||||
res += " & " + names[len(names) - 1]
|
||||
return res
|
||||
}
|
||||
|
||||
func (album Album) PrintCommaArtists() string {
|
||||
if len(album.Credits) == 1 {
|
||||
return album.Credits[0].Artist.Name
|
||||
func (album Album) PrintCommaPrimaryArtists() string {
|
||||
names := album.GetUniqueNonMetaArtistNames();
|
||||
if len(names) == 1 {
|
||||
return names[0]
|
||||
}
|
||||
|
||||
artists := album.GetUniqueArtists()
|
||||
names := []string{}
|
||||
for _, artist := range artists {
|
||||
names = append(names, artist.Name)
|
||||
}
|
||||
|
||||
return strings.Join(names[:len(names)], ", ")
|
||||
}
|
||||
|
||||
func (album Album) ResolveType() string {
|
||||
if album.Type != "" {
|
||||
return album.Type
|
||||
}
|
||||
return "unknown"
|
||||
}
|
||||
|
||||
func (album Album) ResolveArtwork() string {
|
||||
if album.Artwork != "" {
|
||||
return album.Artwork
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue