-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
62 lines (52 loc) · 1.84 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
package main
import (
"github.com/gorilla/mux"
"github.com/gorilla/sessions"
log "github.com/sirupsen/logrus"
"github.com/ukrainian-brothers/board-backend/api"
application "github.com/ukrainian-brothers/board-backend/app"
"github.com/ukrainian-brothers/board-backend/app/board"
"github.com/ukrainian-brothers/board-backend/internal/advert"
"github.com/ukrainian-brothers/board-backend/internal/common"
"github.com/ukrainian-brothers/board-backend/internal/user"
"net/http"
"time"
)
func main() {
logger := log.NewEntry(log.New())
cfg, err := common.NewConfigFromFile("config/configuration.local.json")
if err != nil {
log.WithError(err).Fatal("failed initializing config")
}
db, err := common.InitPostgres(&cfg.Postgres)
if err != nil {
log.WithError(err).Fatal("failed initializing postgres")
}
userRepo := user.NewPostgresUserRepository(db)
advertRepo := advert.NewPostgresAdvertRepository(db)
app := application.Application{
Commands: application.Commands{
AddUser: board.NewAddUser(userRepo),
AddAdvert: board.NewAddAdvert(advertRepo),
},
Queries: application.Queries{
UserExists: board.NewUserExists(userRepo),
GetUserByLogin: board.NewGetUserByLogin(userRepo),
VerifyUserPassword: board.NewVerifyUserPassword(userRepo),
},
}
sessionStore := sessions.NewCookieStore([]byte(cfg.Session.Secret))
middleware := api.NewMiddlewareProvider(sessionStore, &app, cfg)
router := mux.NewRouter()
router.Use(middleware.BodyLimitMiddleware)
router.Use(middleware.LoggingMiddleware(logger))
api.NewUserAPI(router, logger, app, middleware, sessionStore, cfg)
api.NewAdvertAPI(router, logger, app, middleware, sessionStore, cfg)
srv := &http.Server{
Handler: router,
Addr: "127.0.0.1:8000",
WriteTimeout: 15 * time.Second,
ReadTimeout: 15 * time.Second,
}
log.Fatal(srv.ListenAndServe())
}