74 lines
1.2 KiB
Go
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
|
|
}
|