-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
87 lines (72 loc) · 2.87 KB
/
main.go
File metadata and controls
87 lines (72 loc) · 2.87 KB
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package main
import (
"fmt"
"github.com/alif-github/project-test/config"
"github.com/alif-github/project-test/model"
"github.com/alif-github/project-test/router"
"github.com/alif-github/project-test/serverconfig"
"github.com/alif-github/project-test/util"
"github.com/gobuffalo/packr/v2"
migrate "github.com/rubenv/sql-migrate"
"os"
)
func main() {
//--- Generate Configuration
environment := "development"
args := os.Args
if len(args) > 1 {
environment = args[1]
fmt.Println("Run in environment : ", environment)
}
config.GenerateConfiguration(environment)
//--- Define Logger
util.ConfigZap(config.ApplicationConfiguration.GetLogFile())
//--- Set Server Attribute
serverconfig.SetServerAttribute()
//--- Auto Create Schema
autoCreateSchema()
//--- DB Migration
dbMigration()
//--- Info Starting Web
logModel := model.GenerateLogModel(config.ApplicationConfiguration.GetServer().Version, config.ApplicationConfiguration.GetServer().Application)
logModel.Message = fmt.Sprintf(`Starting Port %s`, config.ApplicationConfiguration.GetServer().Port)
util.LogInfo(logModel.LoggerZapFieldObject())
//--- Router
router.APIController()
}
func autoCreateSchema() {
createSchema := fmt.Sprintf(`CREATE SCHEMA IF NOT EXISTS %s;`, config.ApplicationConfiguration.GetPostgresql().DefaultSchema)
_, errS := serverconfig.ServerAttribute.DBConnection.Exec(createSchema)
if errS != nil {
logModel := model.GenerateLogModel(config.ApplicationConfiguration.GetServer().Version, config.ApplicationConfiguration.GetServer().Application)
logModel.Code = 500
logModel.Message = fmt.Sprintf(`Error auto create schema -> %s`, errS.Error())
util.LogError(logModel.LoggerZapFieldObject())
os.Exit(3)
}
}
func dbMigration() {
migrations := &migrate.PackrMigrationSource{
Box: packr.New("migrations", "./sql_migrations"),
}
if serverconfig.ServerAttribute.DBConnection != nil {
n, err := migrate.Exec(serverconfig.ServerAttribute.DBConnection, "postgres", migrations, migrate.Up)
if err != nil {
logModel := model.GenerateLogModel(config.ApplicationConfiguration.GetServer().Version, config.ApplicationConfiguration.GetServer().Application)
logModel.Code = 500
logModel.Message = fmt.Sprintf(`Error on migration -> %s`, err.Error())
util.LogError(logModel.LoggerZapFieldObject())
os.Exit(3)
}
logModel := model.GenerateLogModel(config.ApplicationConfiguration.GetServer().Version, config.ApplicationConfiguration.GetServer().Application)
logModel.Code = 200
logModel.Message = fmt.Sprintf(`Has Applied %d Migrations`, n)
util.LogInfo(logModel.LoggerZapFieldObject())
return
}
logModel := model.GenerateLogModel(config.ApplicationConfiguration.GetServer().Version, config.ApplicationConfiguration.GetServer().Application)
logModel.Code = 500
logModel.Message = fmt.Sprintf(`DB Connection Not Found`)
util.LogError(logModel.LoggerZapFieldObject())
os.Exit(3)
}