A website for my game dev stuff that supports chat, etc.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
zedshaw-games/data/crud.go

55 lines
1.0 KiB

package data
import (
"log"
"github.com/gofiber/fiber/v2"
_ "github.com/mattn/go-sqlite3"
"github.com/jmoiron/sqlx"
"zedshaw.games/webapp/util"
)
var DB *sqlx.DB
func Setup(driver string, url string) {
var err error
DB, err = sqlx.Connect(driver, url)
if err != nil {
log.Fatalln(err)
}
}
func Shutdown() {
DB.Close()
}
func SelectJson[T any](c *fiber.Ctx, err error, sql string, args ...interface{}) error {
var result []T
if err != nil { goto fail }
err = DB.Select(&result, sql, args...)
if err != nil { goto fail }
return c.JSON(&result)
fail: return err
}
func GetJson[T any](c *fiber.Ctx, err error, sql string, args ...interface{}) error {
var result T
if err != nil { goto fail }
err = DB.Get(&result, sql, args...)
if err != nil { goto fail }
return c.JSON(&result)
fail: return err
}
func Insert(err error, sql_query string, args ...interface{}) (error) {
defer util.HandlePanic("Insert")
if err != nil { return err }
DB.MustExec(sql_query, args...)
return err
}