package main import ( "context" "log" "os" "gitea.d3m0k1d.ru/d3m0k1d/rostpoliplast/backend/docs" "github.com/gin-gonic/gin" "github.com/jackc/pgx/v5/pgxpool" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" "gitea.d3m0k1d.ru/d3m0k1d/rostpoliplast/backend/internal/handlers" "gitea.d3m0k1d.ru/d3m0k1d/rostpoliplast/backend/internal/mq" "gitea.d3m0k1d.ru/d3m0k1d/rostpoliplast/backend/internal/storage" ) // @securityDefinitions.apikey Bearer // @in header // @name Authorization // @description Type "Bearer" followed by a space and the JWT token. func main() { ctx := context.Background() connStr := os.Getenv("DATABASE_URL") if connStr == "" { connStr = "postgres://postgres:postgres@localhost:5432/rostpoliplast?sslmode=disable" } pool, err := pgxpool.New(ctx, connStr) if err != nil { log.Fatalf("failed to connect to database: %v", err) } defer pool.Close() if err := pool.Ping(ctx); err != nil { log.Fatalf("failed to ping database: %v", err) } rabbit, err := mq.NewRabbitMQ() if err != nil { log.Printf("warning: failed to connect to rabbitmq: %v", err) } defer rabbit.Close() repo := storage.NewRepository(pool) h := &handlers.Handlers{Repo: repo, MQ: rabbit} router := gin.Default() v1 := router.Group("/api/v1") router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) docs.SwaggerInfo.BasePath = "/api/v1" docs.SwaggerInfo.Title = "Atmosphera Smart Layer API" docs.SwaggerInfo.Version = "1.0" docs.SwaggerInfo.Schemes = []string{"http", "https"} h.RegisterRoutes(v1) { v1.GET("/health", func(c *gin.Context) { c.JSON(200, gin.H{ "status": "ok", }) }) } router.Run(":8080") }