Manually active boost api

This commit is contained in:
LittleSheep 2024-12-29 01:38:48 +08:00
parent 3c9b826ed2
commit 00fddfdef9
3 changed files with 25 additions and 5 deletions

View File

@ -78,6 +78,24 @@ func createBoost(c *fiber.Ctx) error {
}
}
func activateBoost(c *fiber.Ctx) error {
user := c.Locals("nex_user").(*sec.UserInfo)
boostId, _ := c.ParamsInt("boostId", 0)
boost, err := services.GetBoostByID(uint(boostId))
if err != nil {
return fiber.NewError(fiber.StatusInternalServerError, err.Error())
} else if boost.AccountID != user.ID {
return fiber.NewError(fiber.StatusNotFound, "record not created by you")
}
if err := services.ActivateBoost(boost); err != nil {
return fiber.NewError(fiber.StatusBadRequest, err.Error())
} else {
return c.JSON(boost)
}
}
func updateBoost(c *fiber.Ctx) error {
user := c.Locals("nex_user").(*sec.UserInfo)
boostId, _ := c.ParamsInt("boostId", 0)

View File

@ -13,9 +13,10 @@ func MapAPIs(app *fiber.App, baseURL string) {
boost := api.Group("/boosts").Name("Boosts API")
{
boost.Get("/", listBoostByUser)
boost.Get("/:id", getBoost)
boost.Get("/:boostId", getBoost)
boost.Post("/", sec.ValidatorMiddleware, createBoost)
boost.Put("/:id", sec.ValidatorMiddleware, updateBoost)
boost.Post("/:boostId/activate", sec.ValidatorMiddleware, activateBoost)
boost.Put("/:boostId", sec.ValidatorMiddleware, updateBoost)
}
pools := api.Group("/pools").Name("Pools API")

View File

@ -84,24 +84,25 @@ func CreateBoost(user *sec.UserInfo, source models.Attachment, destination int)
return boost, nil
}
func ActivateBoost(boost models.AttachmentBoost) {
func ActivateBoost(boost models.AttachmentBoost) error {
log.Debug().Any("boost", boost).Msg("Activating boost...")
dests := cast.ToSlice(viper.Get("destinations"))
if boost.Destination >= len(dests) {
log.Warn().Any("boost", boost).Msg("Unable to activate boost, invalid destination...")
database.C.Model(&boost).Update("status", models.BoostStatusError)
return
return fmt.Errorf("invalid destination: %d", boost.Destination)
}
if err := ReUploadFile(boost.Attachment, boost.Destination); err != nil {
log.Warn().Any("boost", boost).Err(err).Msg("Unable to activate boost...")
database.C.Model(&boost).Update("status", models.BoostStatusError)
return
return err
}
log.Info().Any("boost", boost).Msg("Boost was activated successfully.")
database.C.Model(&boost).Update("status", models.BoostStatusActive)
return nil
}
func UpdateBoostStatus(boost models.AttachmentBoost, status int) (models.AttachmentBoost, error) {