59 lines
1.0 KiB
Go
59 lines
1.0 KiB
Go
package svg_icon
|
|
|
|
import (
|
|
"database/sql"
|
|
"go-nkode/util"
|
|
)
|
|
|
|
type SvgIcon struct {
|
|
Id int
|
|
Svg string
|
|
}
|
|
|
|
type SvgIconDb struct {
|
|
path string
|
|
}
|
|
|
|
func (d *SvgIconDb) GetSvgsById(ids []int) ([]string, error) {
|
|
db, err := sql.Open("sqlite3", d.path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer db.Close()
|
|
selectId := "SELECT svg FROM svg_icon where id = ?"
|
|
svgs := make([]string, len(ids))
|
|
for idx, id := range ids {
|
|
rows, err := db.Query(selectId, id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
err = rows.Scan(&svgs[idx])
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
return svgs, nil
|
|
}
|
|
|
|
func (d *SvgIconDb) GetRandomIds(count int) ([]int, error) {
|
|
db, err := sql.Open("sqlite3", d.path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer db.Close()
|
|
rows, err := db.Query("SELECT COUNT(*) FROM svg_icon;")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var tableLen int
|
|
err = rows.Scan(&tableLen)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
perm, err := util.RandomPermutation(tableLen)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return perm[:count], nil
|
|
}
|