big ole refactor
This commit is contained in:
55
internal/db/setup.go
Normal file
55
internal/db/setup.go
Normal file
@@ -0,0 +1,55 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/uptrace/bun"
|
||||
"github.com/uptrace/bun/dialect/pgdialect"
|
||||
"github.com/uptrace/bun/driver/pgdriver"
|
||||
)
|
||||
|
||||
type DB struct {
|
||||
*bun.DB
|
||||
}
|
||||
|
||||
func (db *DB) Close() error {
|
||||
return db.DB.Close()
|
||||
}
|
||||
|
||||
func (db *DB) RegisterModels() []any {
|
||||
models := []any{
|
||||
(*RolePermission)(nil),
|
||||
(*UserRole)(nil),
|
||||
(*SeasonLeague)(nil),
|
||||
(*TeamParticipation)(nil),
|
||||
(*User)(nil),
|
||||
(*DiscordToken)(nil),
|
||||
(*Season)(nil),
|
||||
(*League)(nil),
|
||||
(*Team)(nil),
|
||||
(*Role)(nil),
|
||||
(*Permission)(nil),
|
||||
(*AuditLog)(nil),
|
||||
}
|
||||
db.RegisterModel(models...)
|
||||
return models
|
||||
}
|
||||
|
||||
func NewDB(cfg *Config) *DB {
|
||||
dsn := fmt.Sprintf("postgres://%s:%s@%s:%v/%s?sslmode=%s",
|
||||
cfg.User, cfg.Password, cfg.Host, cfg.Port, cfg.DB, cfg.SSL)
|
||||
sqldb := sql.OpenDB(pgdriver.NewConnector(pgdriver.WithDSN(dsn)))
|
||||
|
||||
sqldb.SetMaxOpenConns(25)
|
||||
sqldb.SetMaxIdleConns(10)
|
||||
sqldb.SetConnMaxLifetime(5 * time.Minute)
|
||||
sqldb.SetConnMaxIdleTime(5 * time.Minute)
|
||||
|
||||
db := &DB{
|
||||
bun.NewDB(sqldb, pgdialect.New()),
|
||||
}
|
||||
db.RegisterModels()
|
||||
return db
|
||||
}
|
||||
Reference in New Issue
Block a user