diff --git a/server/ente/filedata/filedata.go b/server/ente/filedata/filedata.go index 3db26fefb0..24457364cd 100644 --- a/server/ente/filedata/filedata.go +++ b/server/ente/filedata/filedata.go @@ -61,6 +61,7 @@ type S3FileMetadata struct { type GetPreviewURLRequest struct { FileID int64 `form:"fileID" binding:"required"` Type ente.ObjectType `form:"type" binding:"required"` + Suffix *string `form:"suffix"` } func (g *GetPreviewURLRequest) Validate() error { diff --git a/server/ente/filedata/putfiledata.go b/server/ente/filedata/putfiledata.go index 58394989da..dcd2a5d67b 100644 --- a/server/ente/filedata/putfiledata.go +++ b/server/ente/filedata/putfiledata.go @@ -10,33 +10,17 @@ type PutFileDataRequest struct { Type ente.ObjectType `json:"type" binding:"required"` EncryptedData *string `json:"encryptedData,omitempty"` DecryptionHeader *string `json:"decryptionHeader,omitempty"` - // ObjectKey is the key of the object in the S3 bucket. This is needed while putting the object in the S3 bucket. - ObjectKey *string `json:"objectKey,omitempty"` - // size of the object that is being uploaded. This helps in checking the size of the object that is being uploaded. - ObjectSize *int64 `json:"objectSize,omitempty"` - Version *int `json:"version,omitempty"` + Version *int `json:"version,omitempty"` } func (r PutFileDataRequest) isEncDataPresent() bool { return r.EncryptedData != nil && r.DecryptionHeader != nil && *r.EncryptedData != "" && *r.DecryptionHeader != "" } -func (r PutFileDataRequest) isObjectDataPresent() bool { - return r.ObjectKey != nil && *r.ObjectKey != "" && r.ObjectSize != nil && *r.ObjectSize > 0 -} - func (r PutFileDataRequest) Validate() error { switch r.Type { - case ente.PreviewVideo: - if !r.isEncDataPresent() || !r.isObjectDataPresent() { - return ente.NewBadRequestWithMessage("object and metadata are required") - } - case ente.PreviewImage: - if !r.isObjectDataPresent() || r.isEncDataPresent() { - return ente.NewBadRequestWithMessage("object (only) data is required for preview image") - } case ente.MlData: - if !r.isEncDataPresent() || r.isObjectDataPresent() { + if !r.isEncDataPresent() { return ente.NewBadRequestWithMessage("encryptedData and decryptionHeader (only) are required for derived meta") } default: @@ -49,18 +33,10 @@ func (r PutFileDataRequest) S3FileMetadataObjectKey(ownerID int64) string { if r.Type == ente.MlData { return derivedMetaPath(r.FileID, ownerID) } - if r.Type == ente.PreviewVideo { - return previewVideoPlaylist(r.FileID, ownerID) - } + panic(fmt.Sprintf("S3FileMetadata should not be written for %s type", r.Type)) } func (r PutFileDataRequest) S3FileObjectKey(ownerID int64) string { - if r.Type == ente.PreviewVideo { - return previewVideoPath(r.FileID, ownerID) - } - if r.Type == ente.PreviewImage { - return previewImagePath(r.FileID, ownerID) - } panic(fmt.Sprintf("S3FileObjectKey should not be written for %s type", r.Type)) } diff --git a/server/pkg/api/file_data.go b/server/pkg/api/file_data.go index 36c863e65c..94532ed4bb 100644 --- a/server/pkg/api/file_data.go +++ b/server/pkg/api/file_data.go @@ -25,7 +25,7 @@ func (h *FileHandler) PutFileData(ctx *gin.Context) { version := 1 reqInt.Version = &version } - err := h.FileDataCtrl.InsertOrUpdate(ctx, &req) + err := h.FileDataCtrl.InsertOrUpdateMetadata(ctx, &req) if err != nil { handler.Error(ctx, err) diff --git a/server/pkg/controller/filedata/controller.go b/server/pkg/controller/filedata/controller.go index 1c8465d870..251aeb8b34 100644 --- a/server/pkg/controller/filedata/controller.go +++ b/server/pkg/controller/filedata/controller.go @@ -19,7 +19,6 @@ import ( "github.com/ente-io/stacktrace" "github.com/gin-gonic/gin" log "github.com/sirupsen/logrus" - "strings" "sync" gTime "time" ) @@ -75,7 +74,7 @@ func New(repo *fileDataRepo.Repository, } } -func (c *Controller) InsertOrUpdate(ctx *gin.Context, req *fileData.PutFileDataRequest) error { +func (c *Controller) InsertOrUpdateMetadata(ctx *gin.Context, req *fileData.PutFileDataRequest) error { if err := req.Validate(); err != nil { return stacktrace.Propagate(err, "validation failed") } @@ -84,21 +83,11 @@ func (c *Controller) InsertOrUpdate(ctx *gin.Context, req *fileData.PutFileDataR if err != nil { return stacktrace.Propagate(err, "") } - if req.Type != ente.MlData && req.Type != ente.PreviewVideo { + if req.Type != ente.MlData { return stacktrace.Propagate(ente.NewBadRequestWithMessage("unsupported object type "+string(req.Type)), "") } fileOwnerID := userID bucketID := c.S3Config.GetBucketID(req.Type) - if req.Type == ente.PreviewVideo { - fileObjectKey := req.S3FileObjectKey(fileOwnerID) - if !strings.Contains(*req.ObjectKey, fileObjectKey) { - return stacktrace.Propagate(ente.NewBadRequestWithMessage("objectKey should contain the file object key"), "") - } - err = c.copyObject(*req.ObjectKey, fileObjectKey, bucketID) - if err != nil { - return err - } - } objectKey := req.S3FileMetadataObjectKey(fileOwnerID) obj := fileData.S3FileMetadata{ Version: *req.Version, diff --git a/server/pkg/controller/filedata/delete.go b/server/pkg/controller/filedata/delete.go index c46eba9d66..735c1da10c 100644 --- a/server/pkg/controller/filedata/delete.go +++ b/server/pkg/controller/filedata/delete.go @@ -5,6 +5,7 @@ import ( "database/sql" "errors" "fmt" + "github.com/ente-io/museum/ente" "github.com/ente-io/museum/ente/filedata" fileDataRepo "github.com/ente-io/museum/pkg/repo/filedata" enteTime "github.com/ente-io/museum/pkg/utils/time" @@ -79,6 +80,9 @@ func (c *Controller) deleteFileRow(fileDataRow filedata.Row) error { panic(fmt.Sprintf("file %d does not belong to user %d", fileID, ownerID)) } ctxLogger := log.WithField("file_id", fileDataRow.DeleteFromBuckets).WithField("type", fileDataRow.Type).WithField("user_id", fileDataRow.UserID) + if fileDataRow.Type != ente.MlData { + panic(fmt.Sprintf("unsupported object type for filedata deletion %s", fileDataRow.Type)) + } objectKeys := filedata.AllObjects(fileID, ownerID, fileDataRow.Type) bucketColumnMap, err := getMapOfBucketItToColumn(fileDataRow) if err != nil {