Files
phylum/server/internal/api/v1/fs/move.go
T
2025-04-28 21:53:48 +05:30

40 lines
893 B
Go

package fs
import (
"github.com/gin-gonic/gin"
"github.com/google/uuid"
"github.com/shroff/phylum/server/internal/api/authenticator"
"github.com/shroff/phylum/server/internal/api/v1/responses"
"github.com/shroff/phylum/server/internal/core/fs"
)
type mvParams struct {
Target string `json:"target"`
Conflict fs.ResourceBindConflictResolution `json:"conflict"`
}
func handleMoveRequest(c *gin.Context) {
var params mvParams
err := c.ShouldBindJSON(&params)
if err != nil {
panic(errInvalidParams)
}
resourceID, err := uuid.Parse(c.Param("id"))
if err != nil {
panic(errResourceIDInvalid)
}
fs := authenticator.GetFileSystem(c)
r, err := fs.ResourceByID(resourceID)
if err != nil {
panic(err)
}
if r, _, err := r.Move(params.Target, params.Conflict); err != nil {
panic(err)
} else {
c.JSON(200, responses.ResourceFromFS(r))
}
}