From 085bbd4ffe13412ae8e4f24cfdc1ef905edbed49 Mon Sep 17 00:00:00 2001 From: Kenneth Date: Fri, 5 Dec 2025 00:55:41 +0000 Subject: [PATCH] fix: use db tx when creating directory --- apps/backend/internal/catalog/directory.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/apps/backend/internal/catalog/directory.go b/apps/backend/internal/catalog/directory.go index 7b9ea33..73026be 100644 --- a/apps/backend/internal/catalog/directory.go +++ b/apps/backend/internal/catalog/directory.go @@ -65,7 +65,13 @@ func (h *HTTPHandler) createDirectory(c *fiber.Ctx) error { return c.SendStatus(fiber.StatusBadRequest) } - parent, err := h.vfs.FindNodeByPublicID(c.Context(), h.db, account.ID, req.ParentID) + tx, err := h.db.BeginTx(c.Context(), nil) + if err != nil { + return httperr.Internal(err) + } + defer tx.Rollback() + + parent, err := h.vfs.FindNodeByPublicID(c.Context(), tx, account.ID, req.ParentID) if err != nil { if errors.Is(err, virtualfs.ErrNodeNotFound) { return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Parent not found"}) @@ -77,7 +83,7 @@ func (h *HTTPHandler) createDirectory(c *fiber.Ctx) error { return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Parent is not a directory"}) } - node, err := h.vfs.CreateDirectory(c.Context(), h.db, account.ID, parent.ID, req.Name) + node, err := h.vfs.CreateDirectory(c.Context(), tx, account.ID, parent.ID, req.Name) if err != nil { if errors.Is(err, virtualfs.ErrNodeConflict) { return c.Status(fiber.StatusConflict).JSON(fiber.Map{"error": "Directory already exists"}) @@ -85,6 +91,11 @@ func (h *HTTPHandler) createDirectory(c *fiber.Ctx) error { return httperr.Internal(err) } + err = tx.Commit() + if err != nil { + return httperr.Internal(err) + } + return c.JSON(DirectoryInfo{ Kind: DirItemKindDirectory, ID: node.PublicID,