create project
This commit is contained in:
75
api/handlers/scene.go
Normal file
75
api/handlers/scene.go
Normal file
@@ -0,0 +1,75 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
services2 "github.com/drama-generator/backend/application/services"
|
||||
"github.com/drama-generator/backend/pkg/logger"
|
||||
"github.com/drama-generator/backend/pkg/response"
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type SceneHandler struct {
|
||||
sceneService *services2.StoryboardCompositionService
|
||||
log *logger.Logger
|
||||
}
|
||||
|
||||
func NewSceneHandler(db *gorm.DB, log *logger.Logger, imageGenService *services2.ImageGenerationService) *SceneHandler {
|
||||
return &SceneHandler{
|
||||
sceneService: services2.NewStoryboardCompositionService(db, log, imageGenService),
|
||||
log: log,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *SceneHandler) GetStoryboardsForEpisode(c *gin.Context) {
|
||||
episodeID := c.Param("episode_id")
|
||||
|
||||
storyboards, err := h.sceneService.GetScenesForEpisode(episodeID)
|
||||
if err != nil {
|
||||
h.log.Errorw("Failed to get storyboards for episode", "error", err, "episode_id", episodeID)
|
||||
response.InternalError(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, gin.H{
|
||||
"storyboards": storyboards,
|
||||
"total": len(storyboards),
|
||||
})
|
||||
}
|
||||
|
||||
func (h *SceneHandler) UpdateScene(c *gin.Context) {
|
||||
sceneID := c.Param("scene_id")
|
||||
|
||||
var req services2.UpdateSceneRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.BadRequest(c, "Invalid request")
|
||||
return
|
||||
}
|
||||
|
||||
if err := h.sceneService.UpdateScene(sceneID, &req); err != nil {
|
||||
h.log.Errorw("Failed to update scene", "error", err, "scene_id", sceneID)
|
||||
response.InternalError(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, gin.H{"message": "Scene updated successfully"})
|
||||
}
|
||||
|
||||
func (h *SceneHandler) GenerateSceneImage(c *gin.Context) {
|
||||
var req services2.GenerateSceneImageRequest
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
response.BadRequest(c, "Invalid request")
|
||||
return
|
||||
}
|
||||
|
||||
imageGen, err := h.sceneService.GenerateSceneImage(&req)
|
||||
if err != nil {
|
||||
h.log.Errorw("Failed to generate scene image", "error", err)
|
||||
response.InternalError(c, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
response.Success(c, gin.H{
|
||||
"message": "Scene image generation started",
|
||||
"image_generation": imageGen,
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user