refactor: migrate from raw pgx to GORM, unify ErrNoRows, cleanup auth
ci / build (push) Successful in 2m58s
ci / build (pull_request) Successful in 2m47s

This commit is contained in:
Mephimeow
2026-06-14 16:41:33 +00:00
parent 9da532e9dc
commit 2da484d781
19 changed files with 321 additions and 348 deletions
+23 -19
View File
@@ -12,18 +12,19 @@ import (
docs "gitea.d3m0k1d.ru/HellreigN/Control-plane/docs"
"gitea.d3m0k1d.ru/HellreigN/Control-plane/internal/auth"
"gitea.d3m0k1d.ru/HellreigN/Control-plane/internal/config"
"gitea.d3m0k1d.ru/HellreigN/Control-plane/internal/middleware"
"gitea.d3m0k1d.ru/HellreigN/Control-plane/internal/org"
"github.com/gin-gonic/gin"
"github.com/jackc/pgx/v5/pgxpool"
"github.com/jackc/pgx/v5/stdlib"
"github.com/pressly/goose/v3"
"github.com/swaggo/files"
"github.com/swaggo/gin-swagger"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
// @title AegisGuard API
// @version 1.0
// @description API for AegisGuard control plane
// @description API для AegisGuard control plane
// @schemes http
//
// @securityDefinitions.apikey Bearer
@@ -40,27 +41,28 @@ func main() {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
pool, err := pgxpool.New(ctx, cfg.DatabaseURL)
gormDB, err := gorm.Open(postgres.Open(cfg.DatabaseURL), &gorm.Config{})
if err != nil {
log.Fatalf("failed to create postgres pool: %v", err)
log.Fatalf("failed to connect to postgres: %v", err)
}
defer pool.Close()
if err := pool.Ping(ctx); err != nil {
sqlDB, err := gormDB.DB()
if err != nil {
log.Fatalf("failed to get underlying sql.DB: %v", err)
}
if err := sqlDB.PingContext(ctx); err != nil {
log.Fatalf("failed to ping postgres: %v", err)
}
log.Println("connected to postgres")
db := stdlib.OpenDBFromPool(pool)
defer db.Close()
if err := goose.Up(db, "migrations"); err != nil {
if err := goose.Up(sqlDB, "migrations"); err != nil {
log.Fatalf("failed to run migrations: %v", err)
}
log.Println("migrations applied")
repo := auth.NewRepository(pool)
orgRepo := org.NewRepository(pool)
repo := auth.NewRepository(gormDB)
orgRepo := org.NewRepository(gormDB)
svc := auth.NewService(repo, cfg.JWTSecret, cfg.JWTExpiration, cfg.JWTRefreshExpiration)
handler := auth.NewHandler(svc)
@@ -68,7 +70,7 @@ func main() {
orgSvc := org.NewService(orgRepo)
orgHandler := org.NewHandler(orgSvc)
loginLimiter := auth.NewRateLimiter(10, time.Minute)
loginLimiter := middleware.NewRateLimiter(10, time.Minute)
authMW := auth.AuthMiddleware([]byte(cfg.JWTSecret))
go func() {
@@ -117,8 +119,9 @@ func main() {
}
srv := &http.Server{
Addr: ":" + cfg.ServerPort,
Handler: r,
Addr: ":" + cfg.ServerPort,
Handler: r,
ReadHeaderTimeout: 10 * time.Second,
}
go func() {
@@ -141,7 +144,8 @@ func main() {
log.Fatalf("server forced to shutdown: %v", err)
}
pool.Close()
loginLimiter.Stop()
_ = sqlDB.Close()
log.Println("server stopped")
}