fix folders on main page
This commit is contained in:
@@ -23,8 +23,8 @@ VALUES ($1, $2, $3, $4, $5, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
||||
RETURNING *;
|
||||
|
||||
-- name: CreateFolder :one
|
||||
INSERT INTO resources (name, is_folder, owner_id, created_at, updated_at)
|
||||
VALUES ($1, true, $2, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
||||
INSERT INTO resources (name, is_folder, owner_id, parent_resource_id, created_at, updated_at)
|
||||
VALUES ($1, true, $2, $3, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
||||
RETURNING *;
|
||||
|
||||
-- name: ListResourcesByParentID :many
|
||||
|
||||
@@ -43,18 +43,19 @@ func (q *Queries) CountResourcesByParentAndOwner(ctx context.Context, arg CountR
|
||||
}
|
||||
|
||||
const createFolder = `-- name: CreateFolder :one
|
||||
INSERT INTO resources (name, is_folder, owner_id, created_at, updated_at)
|
||||
VALUES ($1, true, $2, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
||||
INSERT INTO resources (name, is_folder, owner_id, parent_resource_id, created_at, updated_at)
|
||||
VALUES ($1, true, $2, $3, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
||||
RETURNING id, name, mime_type, size, checksum, ocr_text, is_folder, parent_resource_id, owner_id, created_at, updated_at
|
||||
`
|
||||
|
||||
type CreateFolderParams struct {
|
||||
Name string `json:"name"`
|
||||
OwnerID uuid.UUID `json:"owner_id"`
|
||||
Name string `json:"name"`
|
||||
OwnerID uuid.UUID `json:"owner_id"`
|
||||
ParentResourceID uuid.NullUUID `json:"parent_resource_id"`
|
||||
}
|
||||
|
||||
func (q *Queries) CreateFolder(ctx context.Context, arg CreateFolderParams) (Resource, error) {
|
||||
row := q.db.QueryRowContext(ctx, createFolder, arg.Name, arg.OwnerID)
|
||||
row := q.db.QueryRowContext(ctx, createFolder, arg.Name, arg.OwnerID, arg.ParentResourceID)
|
||||
var i Resource
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
|
||||
@@ -335,14 +335,15 @@ func (h *ResourceHandler) CreateFolder(c *gin.Context) {
|
||||
userID := c.GetString(auth.UserIDKey)
|
||||
|
||||
var body struct {
|
||||
Name string `json:"name" binding:"required"`
|
||||
Name string `json:"name" binding:"required"`
|
||||
ParentResourceID *string `json:"parent_resource_id"`
|
||||
}
|
||||
if err := c.ShouldBindJSON(&body); err != nil {
|
||||
api.Error(c, http.StatusBadRequest, "INVALID_BODY", "Body must contain 'name'")
|
||||
return
|
||||
}
|
||||
|
||||
folder, err := h.resources.CreateFolder(body.Name, userID)
|
||||
folder, err := h.resources.CreateFolder(body.Name, userID, body.ParentResourceID)
|
||||
if err != nil {
|
||||
api.Error(c, http.StatusInternalServerError, "DB_ERROR", "Failed to create folder")
|
||||
return
|
||||
|
||||
@@ -271,7 +271,7 @@ func (s *ResourceService) MoveResources(resourceIDs []string, parentResourceID *
|
||||
})
|
||||
}
|
||||
|
||||
func (s *ResourceService) CreateFolder(name, ownerID string) (*model.Resource, error) {
|
||||
func (s *ResourceService) CreateFolder(name, ownerID string, parentResourceID *string) (*model.Resource, error) {
|
||||
ownerUUID, _ := uuid.Parse(ownerID)
|
||||
ctx := context.Background()
|
||||
|
||||
@@ -283,9 +283,16 @@ func (s *ResourceService) CreateFolder(name, ownerID string) (*model.Resource, e
|
||||
|
||||
qtx := s.queries.WithTx(tx)
|
||||
|
||||
parentID := uuid.NullUUID{Valid: false}
|
||||
if parentResourceID != nil {
|
||||
pid, _ := uuid.Parse(*parentResourceID)
|
||||
parentID = uuid.NullUUID{UUID: pid, Valid: true}
|
||||
}
|
||||
|
||||
r, err := qtx.CreateFolder(ctx, db.CreateFolderParams{
|
||||
Name: name,
|
||||
OwnerID: ownerUUID,
|
||||
Name: name,
|
||||
OwnerID: ownerUUID,
|
||||
ParentResourceID: parentID,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("create folder: %w", err)
|
||||
|
||||
Reference in New Issue
Block a user