From 47b2e0d0ab2f8efb00861d3e014971f841d3f4d1 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Mon, 12 May 2025 16:53:24 +0530 Subject: [PATCH] Sending 204 instead of 404 for no data --- server/ente/filedata/filedata.go | 5 +++-- server/pkg/api/file_data.go | 4 ++++ server/pkg/api/public_collection.go | 4 ++++ server/pkg/controller/filedata/controller.go | 4 ++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/server/ente/filedata/filedata.go b/server/ente/filedata/filedata.go index 9012a8249b..5b6ec70edd 100644 --- a/server/ente/filedata/filedata.go +++ b/server/ente/filedata/filedata.go @@ -63,8 +63,9 @@ func (g *GetFilesData) Validate() error { } type GetFileData struct { - FileID int64 `form:"fileID" binding:"required"` - Type ente.ObjectType `form:"type" binding:"required"` + FileID int64 `form:"fileID" binding:"required"` + Type ente.ObjectType `form:"type" binding:"required"` + PreferNoContent bool `form:"preferNoContent"` } func (g *GetFileData) Validate() error { diff --git a/server/pkg/api/file_data.go b/server/pkg/api/file_data.go index dbac6282ee..045c00f3a7 100644 --- a/server/pkg/api/file_data.go +++ b/server/pkg/api/file_data.go @@ -109,6 +109,10 @@ func (h *FileHandler) GetFileData(ctx *gin.Context) { handler.Error(ctx, err) return } + if resp == nil { + ctx.Status(http.StatusNoContent) + return + } ctx.JSON(http.StatusOK, gin.H{ "data": resp, }) diff --git a/server/pkg/api/public_collection.go b/server/pkg/api/public_collection.go index bf33a907fe..9f61ba788e 100644 --- a/server/pkg/api/public_collection.go +++ b/server/pkg/api/public_collection.go @@ -79,6 +79,10 @@ func (h *PublicCollectionHandler) GetFileData(c *gin.Context) { handler.Error(c, err) return } + if resp == nil { + c.Status(http.StatusNoContent) + return + } c.JSON(http.StatusOK, gin.H{ "data": resp, }) diff --git a/server/pkg/controller/filedata/controller.go b/server/pkg/controller/filedata/controller.go index 56eaeef398..91645cc720 100644 --- a/server/pkg/controller/filedata/controller.go +++ b/server/pkg/controller/filedata/controller.go @@ -2,6 +2,7 @@ package filedata import ( "context" + "database/sql" "errors" "github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/service/s3" @@ -138,6 +139,9 @@ func (c *Controller) GetFileData(ctx *gin.Context, actorUser int64, req fileData } doRows, err := c.Repo.GetFilesData(ctx, req.Type, []int64{req.FileID}) if err != nil { + if errors.Is(err, sql.ErrNoRows) && req.PreferNoContent { + return nil, nil + } return nil, stacktrace.Propagate(err, "") } if len(doRows) == 0 || doRows[0].IsDeleted {