pki-manager/cmd/server/main.go

64 lines
1.2 KiB
Go

package main
import (
"context"
"log"
"os"
"time"
"pki-manager/config"
"pki-manager/internal/api"
"pki-manager/internal/repository"
"github.com/gin-gonic/gin"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func main() {
// Configuration
cfg := config.LoadConfig()
// MongoDB connection
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
clientOptions := options.Client().ApplyURI(cfg.MongoDBURI)
client, err := mongo.Connect(ctx, clientOptions)
if err != nil {
log.Fatal(err)
}
defer client.Disconnect(ctx)
// Verify connection
err = client.Ping(ctx, nil)
if err != nil {
log.Fatal(err)
}
log.Println("Connected to MongoDB!")
// Initialize repository
repo := repository.NewMongoRepository(client.Database(cfg.DBName))
// Create certs directory if not exists
if err := os.MkdirAll("certs", 0755); err != nil {
log.Fatal(err)
}
// Setup Gin
if cfg.Environment == "production" {
gin.SetMode(gin.ReleaseMode)
}
router := gin.Default()
// Setup routes
api.SetupRoutes(router, repo, cfg.JWTSecret)
// Start server
log.Printf("Server starting on port %s", cfg.Port)
if err := router.Run(":" + cfg.Port); err != nil {
log.Fatal(err)
}
}