refactor: migrate from raw pgx to GORM, unify ErrNoRows, cleanup auth
This commit is contained in:
+23
-19
@@ -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")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user