-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTestApp.go
85 lines (78 loc) · 1.79 KB
/
TestApp.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package main
import (
"TestProject/Config"
"TestProject/Models"
"TestProject/Models/Onboarding"
"TestProject/Models/PrivateArea/DB"
"TestProject/Models/Registration"
"TestProject/Routes"
"TestProject/Util"
"errors"
"gopkg.in/yaml.v2"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"io/ioutil"
"log"
"os"
"time"
)
var PORT = "8080"
func main() {
initializeDB()
initEmailConfig()
r := Routes.SetupRouter()
port := os.Getenv("PORT")
if Util.IsEmpty(port) {
port = PORT
}
_ = r.Run(":" + port)
}
func initializeDB() {
url := Config.DbURL(Config.BuildDBConfig())
db, err := gorm.Open(postgres.Open(url), &gorm.Config{
Logger: logger.New(log.New(os.Stdout, "\r\n", log.LstdFlags), logger.Config{
SlowThreshold: time.Second,
LogLevel: logger.Info,
IgnoreRecordNotFoundError: true,
Colorful: true,
}),
})
if err != nil {
panic(err.Error())
}
Config.DB = db
_ = Config.DB.AutoMigrate(
&Models.User{},
&Onboarding.Onboarding{},
&Registration.PrimaryInfo{},
&Registration.AnthropometryModel{},
&Registration.GoalModel{},
&DB.Notification{},
&DB.HeartRate{},
&DB.Workout{},
&DB.UserWorkout{},
&DB.WaterIntake{},
&DB.Steps{},
&DB.ActivityAim{},
&DB.SleepTime{},
&DB.CaloriesIntake{},
)
}
func initEmailConfig() {
if _, err := os.Stat("email_config.yaml"); errors.Is(err, os.ErrNotExist) {
data, errMarshal := yaml.Marshal(Models.EmailConfig{
Email: os.Getenv("CONFIG_EMAIL"),
Password: os.Getenv("CONFIG_PASSWORD"),
SmtpHost: os.Getenv("CONFIG_SMTP_HOST"),
SmtpPort: os.Getenv("CONFIG_SMTP_PORT"),
})
if errMarshal != nil {
panic(errMarshal)
}
errWrite := ioutil.WriteFile("email_config.yaml", data, os.ModePerm)
if errWrite != nil {
panic(errWrite)
}
}
}