41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package controllers
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/sujit-baniya/fiber-boilerplate/pkg/models"
|
|
"github.com/sujit-baniya/fiber-boilerplate/pkg/services"
|
|
)
|
|
|
|
// getOSSFromBody creates an OSSProvider from the oss_api_id in the request body.
|
|
// If oss_api_id is missing, it falls back to the last active config (legacy behavior).
|
|
func getOSSFromBody(c *fiber.Ctx) (services.OSSProvider, error) {
|
|
var req struct {
|
|
OssAPIID *uint `json:"oss_api_id"`
|
|
}
|
|
if err := json.Unmarshal(c.Body(), &req); err != nil {
|
|
req.OssAPIID = nil
|
|
}
|
|
|
|
if req.OssAPIID != nil {
|
|
return services.NewOSSProviderByID(*req.OssAPIID)
|
|
}
|
|
return services.NewOSSProviderFromDB()
|
|
}
|
|
|
|
// getOSSFromQuery creates an OSSProvider from the oss_api_id query param.
|
|
// If missing, falls back to last active config.
|
|
func getOSSFromQuery(c *fiber.Ctx) (services.OSSProvider, error) {
|
|
id := c.QueryInt("oss_api_id", 0)
|
|
if id > 0 {
|
|
return services.NewOSSProviderByID(uint(id))
|
|
}
|
|
|
|
lastActive, err := models.GetLastActiveOssApi()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return services.NewOSSProvider(lastActive)
|
|
}
|