65 lines
1.3 KiB
Go

package database
import (
"fmt"
sashimi "git.sharkk.net/Sharkk/Sashimi"
)
var db *sashimi.DB
// Init initializes the database connection
func Init(dbPath string) error {
var err error
db, err = sashimi.New(dbPath)
if err != nil {
return fmt.Errorf("failed to initialize database: %w", err)
}
return nil
}
// DB returns the global database connection
func DB() *sashimi.DB {
if db == nil {
panic("database not initialized - call Init() first")
}
return db
}
// Close closes the database connection
func Close() error {
if db != nil {
return db.Close()
}
return nil
}
// Wrapper functions for convenience
func Query(query string, args ...any) (*sashimi.PooledStmt, error) {
return db.Query(query, args...)
}
func Get(dest any, query string, args ...any) error {
return db.Get(dest, query, args...)
}
func Select(dest any, query string, args ...any) error {
return db.Select(dest, query, args...)
}
func Exec(query string, args ...any) error {
return db.Exec(query, args...)
}
func Update(tableName string, fields map[string]any, whereField string, whereValue any) error {
return db.Update(tableName, fields, whereField, whereValue)
}
func Insert(tableName string, obj any, excludeFields ...string) (int64, error) {
return db.Insert(tableName, obj, excludeFields...)
}
func Transaction(fn func() error) error {
return db.Transaction(fn)
}