From ccdeaf03644087414199c2c494b911bd1df82c87 Mon Sep 17 00:00:00 2001 From: Kenneth Date: Sun, 30 Nov 2025 19:39:47 +0000 Subject: [PATCH] fix: some weird upload bugs --- apps/backend/internal/drexa/server.go | 3 ++- apps/backend/internal/upload/http.go | 12 ++++++++++-- apps/backend/internal/upload/service.go | 2 ++ apps/backend/internal/virtualfs/path.go | 2 +- apps/backend/internal/virtualfs/vfs.go | 4 ++-- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/apps/backend/internal/drexa/server.go b/apps/backend/internal/drexa/server.go index 5f6d1c7..cfe33f3 100644 --- a/apps/backend/internal/drexa/server.go +++ b/apps/backend/internal/drexa/server.go @@ -19,7 +19,8 @@ import ( func NewServer(c Config) (*fiber.App, error) { app := fiber.New(fiber.Config{ - ErrorHandler: httperr.ErrorHandler, + ErrorHandler: httperr.ErrorHandler, + StreamRequestBody: true, }) app.Use(logger.New()) diff --git a/apps/backend/internal/upload/http.go b/apps/backend/internal/upload/http.go index 1e54009..7052761 100644 --- a/apps/backend/internal/upload/http.go +++ b/apps/backend/internal/upload/http.go @@ -2,6 +2,7 @@ package upload import ( "errors" + "fmt" "github.com/get-drexa/drexa/internal/account" "github.com/get-drexa/drexa/internal/httperr" @@ -57,6 +58,10 @@ func (h *HTTPHandler) Create(c *fiber.Ctx) error { return httperr.Internal(err) } + if upload.UploadURL == "" { + upload.UploadURL = fmt.Sprintf("%s%s/%s/content", c.BaseURL(), c.OriginalURL(), upload.ID) + } + return c.JSON(upload) } @@ -68,9 +73,12 @@ func (h *HTTPHandler) ReceiveContent(c *fiber.Ctx) error { uploadID := c.Params("uploadID") - err := h.service.ReceiveUpload(c.Context(), h.db, account.ID, uploadID, c.Request().BodyStream()) - defer c.Request().CloseBodyStream() + err := h.service.ReceiveUpload(c.Context(), h.db, account.ID, uploadID, c.Context().RequestBodyStream()) + defer c.Context().Request.CloseBodyStream() if err != nil { + if errors.Is(err, ErrNotFound) { + return c.SendStatus(fiber.StatusNotFound) + } return httperr.Internal(err) } diff --git a/apps/backend/internal/upload/service.go b/apps/backend/internal/upload/service.go index 57fb31b..1b88907 100644 --- a/apps/backend/internal/upload/service.go +++ b/apps/backend/internal/upload/service.go @@ -3,6 +3,7 @@ package upload import ( "context" "errors" + "fmt" "io" "sync" "time" @@ -84,6 +85,7 @@ func (s *Service) CreateUpload(ctx context.Context, db bun.IDB, accountID uuid.U } func (s *Service) ReceiveUpload(ctx context.Context, db bun.IDB, accountID uuid.UUID, uploadID string, reader io.Reader) error { + fmt.Printf("reader: %v\n", reader) n, ok := s.pendingUploads.Load(uploadID) if !ok { return ErrNotFound diff --git a/apps/backend/internal/virtualfs/path.go b/apps/backend/internal/virtualfs/path.go index 23b725e..19e5799 100644 --- a/apps/backend/internal/virtualfs/path.go +++ b/apps/backend/internal/virtualfs/path.go @@ -12,7 +12,7 @@ import ( const absolutePathQuery = `WITH RECURSIVE path AS ( SELECT id, parent_id, name, 1 as depth - FROM vfs_nodes WHERE id = $1 AND deleted_at IS NULL + FROM vfs_nodes WHERE id = ? AND deleted_at IS NULL UNION ALL diff --git a/apps/backend/internal/virtualfs/vfs.go b/apps/backend/internal/virtualfs/vfs.go index a3823b2..b7a3a3b 100644 --- a/apps/backend/internal/virtualfs/vfs.go +++ b/apps/backend/internal/virtualfs/vfs.go @@ -228,7 +228,7 @@ func (vfs *VirtualFS) WriteFile(ctx context.Context, db bun.IDB, node *Node, con setCols = append(setCols, "mime_type", "blob_key", "size", "status") } - _, err := db.NewUpdate().Model(&node). + _, err := db.NewUpdate().Model(node). Column(setCols...). WherePK(). Exec(ctx) @@ -260,7 +260,7 @@ func (vfs *VirtualFS) CreateDirectory(ctx context.Context, db bun.IDB, accountID Name: name, } - _, err = db.NewInsert().Model(&node).Exec(ctx) + _, err = db.NewInsert().Model(node).Exec(ctx) if err != nil { if database.IsUniqueViolation(err) { return nil, ErrNodeConflict