/
main.go
75 lines (56 loc) · 1.49 KB
/
main.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
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/joho/godotenv"
"log"
"sync"
"testProject/balances"
"testProject/common"
"testProject/transactions"
"testProject/users"
)
func Migrate() {
var err error
err = users.AutoMigrate()
if err != nil {
log.Fatal("migration error", err)
}
err = balances.AutoMigrate()
if err != nil {
log.Fatal("migration error", err)
}
err = transactions.AutoMigrate()
if err != nil {
log.Fatal("migration error", err)
}
}
func main() {
err := godotenv.Load()
if err != nil {
log.Fatal("Error loading .env file")
}
db := common.Init()
Migrate()
gin.SetMode(gin.DebugMode)
r := gin.Default()
v1 := r.Group("/api")
balanceRepo := balances.NewBalanceRepository(db)
transactionRepo := transactions.NewTransactionRepository(db)
userRepo := users.NewUserRepository(db)
mu := new(sync.RWMutex)
balanceService := balances.NewBalanceService(mu, balanceRepo, transactionRepo, userRepo)
transactionService := transactions.NewTransactionService(transactionRepo)
balanceController := balances.NewBalanceController(balanceService)
balances.BalanceRoutes(v1.Group("/balances"), balanceController)
transactionController := transactions.NewTransactionController(transactionService)
transactions.UserTransaction(v1.Group("/transactions"), transactionController)
tx1 := db.Begin()
userA := users.UserModel{
Username: "testuser",
}
tx1.Save(&userA)
tx1.Commit()
fmt.Println(userA)
r.Run() // listen and serve on 0.0.0.0:8080
}