Files
2026-04-29 14:27:16 +03:00

70 lines
1.7 KiB
Go

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")
}