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
|
||
|
}
|