-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
88 lines (83 loc) · 3.63 KB
/
main.go
File metadata and controls
88 lines (83 loc) · 3.63 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
88
package main
import (
"fmt"
"log"
"net"
"os"
"os/signal"
"github.com/charisworks/charisworks-backend/handler"
"github.com/charisworks/charisworks-backend/internal/admin"
"github.com/charisworks/charisworks-backend/internal/cart"
"github.com/charisworks/charisworks-backend/internal/cash"
"github.com/charisworks/charisworks-backend/internal/images"
"github.com/charisworks/charisworks-backend/internal/items"
"github.com/charisworks/charisworks-backend/internal/manufacturer"
"github.com/charisworks/charisworks-backend/internal/transaction"
"github.com/charisworks/charisworks-backend/internal/users"
"github.com/charisworks/charisworks-backend/internal/utils"
userpb "github.com/charisworks/charisworks-backend/pkg/grpc"
"github.com/charisworks/charisworks-backend/validation"
"github.com/gin-gonic/gin"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
)
func main() {
r := gin.Default()
r.ContextWithFallback = true
r.MaxMultipartMemory = 8 << 20 // 8 MiB
R2Conns := images.R2Conns{Crud: nil}
R2Conns.Init()
utils.CORS(r)
h := handler.NewHandler(r)
app, err := validation.NewFirebaseApp()
if err != nil {
return
}
db, err := utils.DBInit()
if err != nil {
return
}
trdb, err := utils.HistoryDBInitTest()
if err != nil {
return
}
s := grpc.NewServer(
grpc.UnaryInterceptor(admin.AuthUnaryServerInterceptor),
)
userpb.RegisterUserServiceServer(s, &admin.UserServiceServer{})
userpb.RegisterItemServiceServer(s, &admin.ItemServiceServer{})
userpb.RegisterTransactionServiceServer(s, &admin.TransactionServiceServer{})
go func() {
port := 50051
listener, err := net.Listen("tcp", fmt.Sprintf(":%d", port))
if err != nil {
panic(err)
}
reflection.Register(s)
log.Printf("start gRPC server port: %v", port)
s.Serve(listener)
}()
go func() {
cartRequests := cart.Requests{CartRepository: cart.Repository{DB: db}, CartUtils: cart.Utils{}, ItemGetStatus: items.GetStatus{DB: db}}
itemRequests := items.Requests{ItemRepository: items.ItemRepository{DB: db}, ItemUtils: items.ItemUtils{}}
userRequests := users.Requests{UserUtils: users.UserUtils{}, UserRepository: users.UserRepository{DB: db}}
manufacturerRequests := manufacturer.Requests{ManufacturerItemRepository: manufacturer.Repository{DB: db, Crud: R2Conns}, ManufacturerInspectPayloadUtils: manufacturer.ManufacturerUtils{}, ItemRepository: items.ItemRepository{DB: db}}
stripeRequests := cash.Requests{CartRequests: cartRequests, UserRequests: userRequests}
transactionRequests := transaction.TransactionRequests{TransactionRepository: transaction.Repository{DB: trdb, UserRepository: users.UserRepository{DB: db}, ItemUpdater: items.Updater{DB: db}}, CartRepository: cart.Repository{DB: db}, CartUtils: cart.Utils{}, StripeRequests: cash.Requests{CartRequests: cartRequests, UserRequests: userRequests}, StripeUtils: cash.Utils{}}
webhookRequests := transaction.Webhook{StripeUtils: cash.Utils{}, TransactionRepository: transaction.Repository{DB: trdb, ItemUpdater: items.Updater{DB: db}}, App: app.App}
h.SetupRoutesForWebhook(webhookRequests, app)
h.SetupRoutesForItem(itemRequests)
h.SetupRoutesForUser(app, userRequests)
h.SetupRoutesForCart(app, cartRequests, userRequests)
h.SetupRoutesForManufacturer(app, manufacturerRequests, userRequests)
h.SetupRoutesForStripe(app, userRequests, stripeRequests, transactionRequests)
h.SetupRoutesForImages(app, manufacturerRequests, itemRequests, userRequests, R2Conns)
h.Router.Run(":8080")
}()
// Ctrl+Cが入力されたらGraceful shutdownされるようにする
quit := make(chan os.Signal, 1)
signal.Notify(quit, os.Interrupt)
<-quit
log.Println("stopping gRPC server...")
s.GracefulStop()
}