-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
84 lines (70 loc) · 1.77 KB
/
main.go
File metadata and controls
84 lines (70 loc) · 1.77 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
package main
import (
"os"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"github.com/labstack/gommon/log"
"github.com/traPtitech/booQ-v3/domain"
"github.com/traPtitech/booQ-v3/handler"
"github.com/traPtitech/booQ-v3/handler/openapi"
"github.com/traPtitech/booQ-v3/repository"
"github.com/traPtitech/booQ-v3/storage"
"github.com/traPtitech/booQ-v3/usecase"
)
func main() {
db, err := repository.EstablishConnection()
if err != nil {
log.Fatal(err)
}
err = repository.Migrate(db)
if err != nil {
log.Fatal(err)
}
e := echo.New()
if os.Getenv("BOOQ_ENV") == "development" {
repository.SetLoggerInfo(db)
e.Logger.SetLevel(log.INFO)
}
e.Use(middleware.Logger())
e.Use(middleware.Recover())
// Repository
itemRepo := repository.NewItemRepository(db)
commentRepo := repository.NewCommentRepository(db)
fileRepo := repository.NewFileRepository(db)
// Storage
fileStorage := newFileStorage()
// UseCase
itemUseCase := usecase.NewItemUseCase(itemRepo)
commentUsecase := usecase.NewCommentUsecase(commentRepo, itemRepo)
fileUseCase := usecase.NewFileUseCase(fileRepo, fileStorage)
// Handler
h := handler.NewHandler(itemUseCase, commentUsecase, fileUseCase)
openapi.RegisterHandlers(e, h)
e.Logger.Fatal(e.Start(":3001"))
}
func newFileStorage() domain.FileStorage {
if os.Getenv("S3_BUCKET") != "" {
// S3
s, err := storage.NewS3Storage(
os.Getenv("S3_BUCKET"),
os.Getenv("S3_REGION"),
os.Getenv("S3_ENDPOINT"),
os.Getenv("S3_ACCESS_KEY"),
os.Getenv("S3_SECRET_KEY"),
)
if err != nil {
log.Fatal(err)
}
return s
}
// ローカルストレージ
dir := os.Getenv("UPLOAD_DIR")
if dir == "" {
dir = "./uploads"
}
s, err := storage.NewLocalStorage(dir)
if err != nil {
log.Fatal(err)
}
return s
}