init
This commit is contained in:
83
cmd/http/main.go
Normal file
83
cmd/http/main.go
Normal file
@ -0,0 +1,83 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/aykhans/oh-my-chat/internal/adapter/auth/jwt"
|
||||
"github.com/aykhans/oh-my-chat/internal/adapter/config"
|
||||
httpHandlers "github.com/aykhans/oh-my-chat/internal/adapter/handlers/http"
|
||||
middlewares "github.com/aykhans/oh-my-chat/internal/adapter/handlers/http/middlewares"
|
||||
"github.com/aykhans/oh-my-chat/internal/adapter/logger"
|
||||
"github.com/aykhans/oh-my-chat/internal/adapter/storages/postgres"
|
||||
postgresRepo "github.com/aykhans/oh-my-chat/internal/adapter/storages/postgres/repository"
|
||||
"github.com/aykhans/oh-my-chat/internal/adapter/storages/scylla"
|
||||
scyllaRepo "github.com/aykhans/oh-my-chat/internal/adapter/storages/scylla/repository"
|
||||
kafkaConsumer "github.com/aykhans/oh-my-chat/internal/adapter/streamers/kafka/consumer"
|
||||
kafkaProducer "github.com/aykhans/oh-my-chat/internal/adapter/streamers/kafka/producer"
|
||||
"github.com/aykhans/oh-my-chat/internal/core/service"
|
||||
"github.com/aykhans/oh-my-chat/internal/core/utils"
|
||||
)
|
||||
|
||||
var log = logger.NewStdLogger()
|
||||
|
||||
func main() {
|
||||
containerConfig := config.NewContainerConfig()
|
||||
|
||||
postgresDB, err := postgres.NewDB(containerConfig.PostgresConfig)
|
||||
if err != nil {
|
||||
log.Error("Error postgres connection", "error", err)
|
||||
utils.ExitErr()
|
||||
}
|
||||
|
||||
userRepository := postgresRepo.NewUserRepository(postgresDB)
|
||||
userService := service.NewUserService(userRepository)
|
||||
validator := httpHandlers.NewValidator()
|
||||
userHandler := httpHandlers.NewUserHandler(userService, validator)
|
||||
|
||||
jwtService := jwt.NewJWTService(
|
||||
*containerConfig.AppConfig.JWTDuration,
|
||||
containerConfig.AppConfig.SecretKey,
|
||||
)
|
||||
authService := service.NewAuthService(userRepository, jwtService)
|
||||
authHandler := httpHandlers.NewAuthHandler(authService, validator)
|
||||
|
||||
messageProducer, err := kafkaProducer.NewMessageProducer(containerConfig.KafkaConfig.KafkaProducerConfig)
|
||||
if err != nil {
|
||||
log.Error("Error kafka producer connection", "error", err)
|
||||
utils.ExitErr()
|
||||
}
|
||||
|
||||
messageConsumer := kafkaConsumer.NewMessageConsumer(containerConfig.KafkaConfig.KafkaConsumerConfig)
|
||||
scyllaDB, err := scylla.NewDB(containerConfig.ScyllaConfig)
|
||||
if err != nil {
|
||||
log.Error("Error scylla connection", "error", err)
|
||||
utils.ExitErr()
|
||||
}
|
||||
|
||||
messageRepository := scyllaRepo.NewMessageRepository(scyllaDB)
|
||||
messageService := service.NewMessageService(messageProducer, messageConsumer, messageRepository)
|
||||
chatHandler := httpHandlers.NewChatHandler(messageService, validator)
|
||||
|
||||
authMiddleware := middlewares.NewAuthMiddleware(jwtService)
|
||||
wsMiddleware := middlewares.NewWSMiddleware()
|
||||
|
||||
app := httpHandlers.NewApp(
|
||||
// configs
|
||||
containerConfig.AppConfig.IsDev,
|
||||
containerConfig.CORSAllowedOrigins,
|
||||
// middlewares
|
||||
authMiddleware, wsMiddleware,
|
||||
// handlers
|
||||
userHandler, authHandler, chatHandler,
|
||||
)
|
||||
|
||||
err = app.Listen(
|
||||
fmt.Sprintf(
|
||||
":%d", containerConfig.AppConfig.ListenerPort,
|
||||
),
|
||||
)
|
||||
if err != nil {
|
||||
log.Error("Error starting app", "error", err)
|
||||
utils.ExitErr()
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user