package routes import ( "log/slog" "orbits-server/internal/server/api/assets" "orbits-server/internal/server/service" "github.com/gin-gonic/gin" "gorm.io/gorm" ) func RegisterKeyRoutes(api *gin.RouterGroup, db *gorm.DB) { keyService := service.NewKeyService(db) // prefix: api // define subroute with key // /api/key key := api.Group("/key") key.POST("/create", func(c *gin.Context) { var body assets.KeyRequestBody if err := c.ShouldBindJSON(&body); err != nil { slog.Error("failed to bind body to json", "error", err) assets.InternalErrorResponse(c) return } keyResponse, err := keyService.Create(body.Name, body.ExpiresAt) if err != nil { slog.Error("failed to create key", "error", err) assets.InternalErrorResponse(c) return } slog.Info("saved key to database") assets.CreationResponse(c, keyResponse) }) key.DELETE("/:keyName", func(c *gin.Context) { keyParam := c.Param("keyName") if err := keyService.DeleteByName(keyParam); err != nil { slog.Error("key not found", "error", err) assets.NotFoundResponse(c) } slog.Info("received a delete request for a key", "keyName", keyParam) assets.DeletionResponse(c) }) }