-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdb.go
41 lines (36 loc) · 1011 Bytes
/
db.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package db
import (
"github.com/anonyindian/logger"
"github.com/desterlib/backend-go/config"
"github.com/lib/pq"
"gorm.io/driver/postgres"
"gorm.io/gorm"
glogger "gorm.io/gorm/logger"
)
var SESSION *gorm.DB
func LoadDB(log *logger.Logger) {
log = log.Create("DATABASE")
defer func() {
log.ChangeLevel(logger.LevelMain)
log.Println("LOADED")
}()
conn, err := pq.ParseURL(config.ValueOf.DatabaseURI)
if err != nil {
log.ChangeLevel(logger.LevelError).Printlnf("failed to parse DB URI: %s", err.Error())
}
db, err := gorm.Open(postgres.Open(conn), &gorm.Config{
SkipDefaultTransaction: true,
Logger: glogger.Default.LogMode(glogger.Error),
})
if err != nil {
log.Printlnf("failed to connect to DB: %s", err.Error())
}
SESSION = db
dB, _ := db.DB()
dB.SetMaxOpenConns(100)
log.ChangeLevel(logger.LevelInfo)
log.Println("Database connected")
// Create tables if they don't exist
SESSION.AutoMigrate(&ConfigDB{})
log.Println("Auto-migrated database schema")
}