implement svg interface in login and signup
This commit is contained in:
58
core/svg-icon/db_interface.go
Normal file
58
core/svg-icon/db_interface.go
Normal file
@@ -0,0 +1,58 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user