-
Notifications
You must be signed in to change notification settings - Fork 1
/
init.handler.go
61 lines (52 loc) · 1.33 KB
/
init.handler.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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package handlers
import (
"fmt"
"log"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"github.com/tienanh129902/go-rest-api/config"
"github.com/tienanh129902/go-rest-api/models"
)
type HandlerFunction interface {
AuthHandlerFunction
UserHandlerFunction
QuestionHandlerFunction
TokenHandlerFunction
ScoreBoardHandlerFunction
}
var Handler HandlerFunction
type module struct {
db *dbEntity
}
type dbEntity struct {
conn *gorm.DB
userOrmer models.UserOrmer
questionOrmer models.QuestionOrmer
tokenOrmer models.TokenOrmer
scoreOrmer models.ScoreOrmer
}
func InitializeHandler() (err error) {
// Initialize DB
var db *gorm.DB
db, err = gorm.Open(postgres.Open(
fmt.Sprintf("host=%s port=%d dbname=%s user=%s password=%s sslmode=disable",
config.AppConfig.DBHost, config.AppConfig.DBPort, config.AppConfig.DBDatabase,
config.AppConfig.DBUsername, config.AppConfig.DBPassword),
), &gorm.Config{})
if err != nil {
log.Println("[INIT] failed connecting to PostgreSQL")
return
}
log.Println("[INIT] connected to PostgreSQL")
// Compose handler modules
Handler = &module{
db: &dbEntity{
conn: db,
userOrmer: models.NewUserOrmer(db),
questionOrmer: models.NewQuestionOrmer(db),
tokenOrmer: models.NewTokenOrmer(db),
scoreOrmer: models.NewScoreBoardOrmer(db),
},
}
return
}