mirror of
https://github.com/wgh136/nysoure.git
synced 2025-12-16 15:51:14 +00:00
Add dev update resource api.
This commit is contained in:
@@ -1,7 +1,10 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"log/slog"
|
||||||
|
"nysoure/server/dao"
|
||||||
"nysoure/server/middleware"
|
"nysoure/server/middleware"
|
||||||
|
"time"
|
||||||
|
|
||||||
"nysoure/server/search"
|
"nysoure/server/search"
|
||||||
|
|
||||||
@@ -20,10 +23,40 @@ func rebuildSearchIndex(c fiber.Ctx) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func updateResourceReleaseDate(c fiber.Ctx) error {
|
||||||
|
type Request struct {
|
||||||
|
ResourceID uint `json:"resource_id"`
|
||||||
|
ReleaseDate string `json:"release_date"`
|
||||||
|
}
|
||||||
|
var req Request
|
||||||
|
if err := c.Bind().JSON(req); err != nil {
|
||||||
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
|
||||||
|
"error": "Invalid request body: " + err.Error(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
date, err := time.Parse("2006-01-02", req.ReleaseDate)
|
||||||
|
if err != nil {
|
||||||
|
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
|
||||||
|
"error": "Invalid date format: " + err.Error(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
err = dao.UpdateResourceReleaseDate(req.ResourceID, date)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("Failed to update release date", "error", err)
|
||||||
|
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
|
||||||
|
"error": "Failed to update release date",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return c.JSON(fiber.Map{
|
||||||
|
"message": "Release date updated successfully",
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func AddDevAPI(router fiber.Router) {
|
func AddDevAPI(router fiber.Router) {
|
||||||
devGroup := router.Group("/dev")
|
devGroup := router.Group("/dev")
|
||||||
devGroup.Use(middleware.DevMiddleware())
|
devGroup.Use(middleware.DevMiddleware())
|
||||||
{
|
{
|
||||||
devGroup.Post("/rebuild_search_index", rebuildSearchIndex)
|
devGroup.Post("/rebuild_search_index", rebuildSearchIndex)
|
||||||
|
devGroup.Post("/update_resource_release_date", updateResourceReleaseDate)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -704,3 +704,14 @@ func GetResourceOwnerID(resourceID uint) (uint, error) {
|
|||||||
}
|
}
|
||||||
return uid, nil
|
return uid, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func UpdateResourceReleaseDate(resourceID uint, releaseDate time.Time) error {
|
||||||
|
result := db.Model(&model.Resource{}).Where("id = ?", resourceID).Update("release_date", releaseDate)
|
||||||
|
if result.Error != nil {
|
||||||
|
return result.Error
|
||||||
|
}
|
||||||
|
if result.RowsAffected == 0 {
|
||||||
|
return model.NewNotFoundError("Resource not found")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ type ResourceParams struct {
|
|||||||
Title string `json:"title" binding:"required"`
|
Title string `json:"title" binding:"required"`
|
||||||
AlternativeTitles []string `json:"alternative_titles"`
|
AlternativeTitles []string `json:"alternative_titles"`
|
||||||
Links []model.Link `json:"links"`
|
Links []model.Link `json:"links"`
|
||||||
ReleaseDate *time.Time `json:"release_date"`
|
ReleaseDate string `json:"release_date"`
|
||||||
Tags []uint `json:"tags"`
|
Tags []uint `json:"tags"`
|
||||||
Article string `json:"article"`
|
Article string `json:"article"`
|
||||||
Images []uint `json:"images"`
|
Images []uint `json:"images"`
|
||||||
@@ -102,12 +102,20 @@ func CreateResource(uid uint, params *ResourceParams) (uint, error) {
|
|||||||
ImageID: imageID,
|
ImageID: imageID,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var date *time.Time
|
||||||
|
if params.ReleaseDate != "" {
|
||||||
|
parsedDate, err := time.Parse("2006-01-02", params.ReleaseDate)
|
||||||
|
if err != nil {
|
||||||
|
return 0, model.NewRequestError("Invalid release date format, expected YYYY-MM-DD")
|
||||||
|
}
|
||||||
|
date = &parsedDate
|
||||||
|
}
|
||||||
r := model.Resource{
|
r := model.Resource{
|
||||||
Title: params.Title,
|
Title: params.Title,
|
||||||
AlternativeTitles: params.AlternativeTitles,
|
AlternativeTitles: params.AlternativeTitles,
|
||||||
Article: params.Article,
|
Article: params.Article,
|
||||||
Links: params.Links,
|
Links: params.Links,
|
||||||
ReleaseDate: params.ReleaseDate,
|
ReleaseDate: date,
|
||||||
Images: images,
|
Images: images,
|
||||||
Tags: tags,
|
Tags: tags,
|
||||||
UserID: uid,
|
UserID: uid,
|
||||||
@@ -531,11 +539,20 @@ func UpdateResource(uid, rid uint, params *ResourceParams) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var date *time.Time
|
||||||
|
if params.ReleaseDate != "" {
|
||||||
|
parsedDate, err := time.Parse("2006-01-02", params.ReleaseDate)
|
||||||
|
if err != nil {
|
||||||
|
return model.NewRequestError("Invalid release date format, expected YYYY-MM-DD")
|
||||||
|
}
|
||||||
|
date = &parsedDate
|
||||||
|
}
|
||||||
|
|
||||||
r.Title = params.Title
|
r.Title = params.Title
|
||||||
r.AlternativeTitles = params.AlternativeTitles
|
r.AlternativeTitles = params.AlternativeTitles
|
||||||
r.Article = params.Article
|
r.Article = params.Article
|
||||||
r.Links = params.Links
|
r.Links = params.Links
|
||||||
r.ReleaseDate = params.ReleaseDate
|
r.ReleaseDate = date
|
||||||
r.Gallery = gallery
|
r.Gallery = gallery
|
||||||
r.GalleryNsfw = nsfw
|
r.GalleryNsfw = nsfw
|
||||||
r.Characters = characters
|
r.Characters = characters
|
||||||
|
|||||||
Reference in New Issue
Block a user