2024-08-01 00:39:18 +00:00
|
|
|
package music
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"regexp"
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
"github.com/jmoiron/sqlx"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Link struct {
|
2024-08-01 02:54:15 +00:00
|
|
|
Name string `json:"name"`
|
|
|
|
URL string `json:"url"`
|
2024-08-01 00:39:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// GETTERS
|
|
|
|
|
|
|
|
func (link Link) GetName() string {
|
2024-08-01 02:54:15 +00:00
|
|
|
return link.Name
|
2024-08-01 00:39:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (link Link) GetURL() string {
|
2024-08-01 02:54:15 +00:00
|
|
|
return link.URL
|
2024-08-01 00:39:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// SETTERS
|
|
|
|
|
|
|
|
func (link Link) SetName(name string) error {
|
|
|
|
// TODO: update DB
|
2024-08-01 02:54:15 +00:00
|
|
|
link.Name = name
|
2024-08-01 00:39:18 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (link Link) SetURL(url string) error {
|
|
|
|
// TODO: update DB
|
2024-08-01 02:54:15 +00:00
|
|
|
link.URL = url
|
2024-08-01 00:39:18 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// MISC
|
|
|
|
|
|
|
|
func (link Link) NormaliseName() string {
|
|
|
|
rgx := regexp.MustCompile(`[^a-z0-9]`)
|
2024-08-01 02:54:15 +00:00
|
|
|
return strings.ToLower(rgx.ReplaceAllString(link.Name, ""))
|
2024-08-01 00:39:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// 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(
|
2024-08-01 02:54:15 +00:00
|
|
|
&link.Name,
|
|
|
|
&link.URL,
|
2024-08-01 00:39:18 +00:00
|
|
|
)
|
|
|
|
if err != nil {
|
|
|
|
fmt.Printf("Error while pulling link for release %s: %s\n", releaseID, err)
|
|
|
|
continue
|
|
|
|
}
|
|
|
|
|
|
|
|
links = append(links, link)
|
|
|
|
}
|
|
|
|
|
|
|
|
return links, nil
|
|
|
|
}
|