factor out model int splitting

This commit is contained in:
sentriz
2020-02-09 16:47:51 +00:00
parent e8abe08770
commit 04159e536e

View File

@@ -10,6 +10,30 @@ import (
"senan.xyz/g/gonic/mime" "senan.xyz/g/gonic/mime"
) )
func splitInt(in, sep string) []int {
if len(in) == 0 {
return []int{}
}
parts := strings.Split(in, sep)
ret := make([]int, 0, len(parts))
for _, p := range parts {
i, _ := strconv.Atoi(p)
ret = append(ret, i)
}
return ret
}
func joinInt(in []int, sep string) string {
if in == nil {
return ""
}
strs := make([]string, 0, len(in))
for _, i := range in {
strs = append(strs, strconv.Itoa(i))
}
return strings.Join(strs, sep)
}
type Artist struct { type Artist struct {
ID int `gorm:"primary_key"` ID int `gorm:"primary_key"`
Name string `gorm:"not null; unique_index"` Name string `gorm:"not null; unique_index"`
@@ -124,23 +148,10 @@ type Playlist struct {
} }
func (p *Playlist) GetItems() []int { func (p *Playlist) GetItems() []int {
if len(p.Items) == 0 { return splitInt(p.Items, ",")
return []int{}
}
parts := strings.Split(p.Items, ",")
ret := make([]int, 0, len(parts))
for _, p := range parts {
i, _ := strconv.Atoi(p)
ret = append(ret, i)
}
return ret
} }
func (p *Playlist) SetItems(items []int) { func (p *Playlist) SetItems(items []int) {
strs := make([]string, 0, len(items)) p.Items = joinInt(items, ",")
for _, p := range items {
strs = append(strs, strconv.Itoa(p))
}
p.TrackCount = len(items) p.TrackCount = len(items)
p.Items = strings.Join(strs, ",")
} }