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 }