package db import ( "fmt" "log" "git.sp4ke.com/sp4ke/bit4sat/config" _ "github.com/lib/pq" //_ "github.com/go-sql-driver/mysql" "github.com/jmoiron/sqlx" "github.com/mediocregopher/radix/v3" ) const ( DBName = "bit4sat" ) var ( DB *Database ) type Database struct { Sql *sqlx.DB Redis *radix.Pool RedisPubSub radix.PubSubConn } func (d *Database) Open() error { var err error dsn := fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=disable", config.SqlDbUser, config.SqlDbPass, config.SqlDbHost, DBName) log.Printf("Opening SQL at %s\n", dsn) d.Sql = sqlx.MustConnect("postgres", dsn) // Execute Pragmas //d.Sql.MustExec(DBPragma) // Opend redis d.Redis, err = radix.NewPool("tcp", "redis:6379", 10) if err != nil { log.Fatal(err) } d.RedisPubSub = radix.PersistentPubSub("tcp", "redis:6379", nil) return nil } func RollbackTx(tx *sqlx.Tx, callback func()) { log.Println("Rolling back transactions !") err := tx.Rollback() if err != nil { log.Fatal(err) } if callback != nil { callback() } } func init() { DB = &Database{} DB.Open() }