60 lines
1.0 KiB
Go

package main
import (
"errors"
"gitea.seeseepuff.be/seeseemelk/mysqlite"
"log"
)
type Db struct {
db *mysqlite.Db
}
func NewDb(datasource string) *Db {
// Open a file-based database
db, err := mysqlite.OpenDb(datasource)
if err != nil {
log.Fatal(err)
}
// Apply migrations
err = db.MigrateDb(migrations, "migrations")
if err != nil {
log.Fatal(err)
}
return &Db{db: db}
}
func (db *Db) GetUsers() ([]User, error) {
var err error
users := make([]User, 0)
for row := range db.db.Query("select id, name from users").Range(&err) {
user := User{}
err = row.Scan(&user.ID, &user.Name)
if err != nil {
return nil, err
}
users = append(users, user)
}
if err != nil {
return nil, err
}
return users, nil
}
func (db *Db) GetUser(id int) (*User, error) {
user := &User{}
err := db.db.Query("select id, name from users where id = ?").
Bind(id).ScanSingle(&user.ID, &user.Name)
if errors.Is(err, mysqlite.ErrNoRows) {
return nil, nil
}
if err != nil {
return nil, err
}
return user, nil
}