arimelody.me/api/v1/music/link.go
2024-08-31 01:52:33 +01:00

74 lines
1.2 KiB
Go

package music
import (
"fmt"
"regexp"
"strings"
"github.com/jmoiron/sqlx"
)
type Link struct {
name string
url string
}
// GETTERS
func (link Link) GetName() string {
return link.name
}
func (link Link) GetURL() string {
return link.url
}
// SETTERS
func (link Link) SetName(name string) error {
// TODO: update DB
link.name = name
return nil
}
func (link Link) SetURL(url string) error {
// TODO: update DB
link.url = url
return nil
}
// MISC
func (link Link) NormaliseName() string {
rgx := regexp.MustCompile(`[^a-z0-9]`)
return strings.ToLower(rgx.ReplaceAllString(link.name, ""))
}
// DATABASE
func PullReleaseLinks(db *sqlx.DB, releaseID string) ([]Link, error) {
var links = []Link{}
link_rows, err := db.Query("SELECT name, url FROM musiclinks WHERE release=$1", releaseID);
if err != nil {
return []Link{}, err
}
for link_rows.Next() {
var link = Link{}
err = link_rows.Scan(
&link.name,
&link.url,
)
if err != nil {
fmt.Printf("Error while pulling link for release %s: %s\n", releaseID, err)
continue
}
links = append(links, link)
}
return links, nil
}