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 }