From d3f42e595ead16ae2f0eb64c6ea97915ff49aa24 Mon Sep 17 00:00:00 2001 From: divyam234 Date: Tue, 7 Nov 2023 14:36:14 +0530 Subject: [PATCH] add uplaod part explicitly --- mapper/main.go | 13 ++++++------- routes/upload.go | 12 ++++++++++++ schemas/upload.schema.go | 22 +++++++++++++++------- services/upload.service.go | 30 ++++++++++++++++++++++++++++++ 4 files changed, 63 insertions(+), 14 deletions(-) diff --git a/mapper/main.go b/mapper/main.go index 54635d7..3d95cfd 100644 --- a/mapper/main.go +++ b/mapper/main.go @@ -45,13 +45,12 @@ func MapFileToFileOutFull(file models.File) *schemas.FileOutFull { func MapUploadSchema(in *models.Upload) *schemas.UploadPartOut { out := &schemas.UploadPartOut{ - ID: in.ID, - Name: in.Name, - PartId: in.PartId, - ChannelID: in.ChannelID, - PartNo: in.PartNo, - TotalParts: in.TotalParts, - Size: in.Size, + ID: in.ID, + Name: in.Name, + PartId: in.PartId, + ChannelID: in.ChannelID, + PartNo: in.PartNo, + Size: in.Size, } return out } diff --git a/routes/upload.go b/routes/upload.go index d422e1f..2a41114 100644 --- a/routes/upload.go +++ b/routes/upload.go @@ -16,6 +16,18 @@ func addUploadRoutes(rg *gin.RouterGroup) { uploadService := services.UploadService{Db: database.DB} + r.POST("/parts", func(c *gin.Context) { + + res, err := uploadService.CreateUploadPart(c) + + if err != nil { + c.AbortWithError(err.Code, err.Error) + return + } + + c.JSON(http.StatusOK, res) + }) + r.GET("/:id", func(c *gin.Context) { res, err := uploadService.GetUploadFileById(c) diff --git a/schemas/upload.schema.go b/schemas/upload.schema.go index 1320f9f..6f511b6 100644 --- a/schemas/upload.schema.go +++ b/schemas/upload.schema.go @@ -8,15 +8,23 @@ type UploadQuery struct { } type UploadPartOut struct { - ID string `json:"id"` - Name string `json:"name"` - PartId int `json:"partId"` - PartNo int `json:"partNo"` - TotalParts int `json:"totalParts"` - ChannelID int64 `json:"channelId"` - Size int64 `json:"size"` + ID string `json:"id"` + Name string `json:"name"` + PartId int `json:"partId"` + PartNo int `json:"partNo"` + ChannelID int64 `json:"channelId"` + Size int64 `json:"size"` } type UploadOut struct { Parts []UploadPartOut `json:"parts"` } + +type UploadPart struct { + Name string `json:"name"` + UploadId string `json:"uploadId"` + PartId int `json:"partId"` + PartNo int `json:"partNo"` + ChannelID int64 `json:"channelId"` + Size int64 `json:"size"` +} diff --git a/services/upload.service.go b/services/upload.service.go index b3d951b..0423a3b 100644 --- a/services/upload.service.go +++ b/services/upload.service.go @@ -50,6 +50,36 @@ func (us *UploadService) DeleteUploadFile(c *gin.Context) *types.AppError { return nil } +func (us *UploadService) CreateUploadPart(c *gin.Context) (*schemas.UploadPartOut, *types.AppError) { + + userId, _ := getUserAuth(c) + + var payload schemas.UploadPart + + if err := c.ShouldBindJSON(&payload); err != nil { + return nil, &types.AppError{Error: errors.New("invalid request payload"), Code: http.StatusBadRequest} + } + + partUpload := &models.Upload{ + Name: payload.Name, + UploadId: payload.UploadId, + PartId: payload.PartId, + ChannelID: payload.ChannelID, + Size: payload.Size, + PartNo: payload.PartNo, + TotalParts: 1, + UserId: userId, + } + + if err := us.Db.Create(partUpload).Error; err != nil { + return nil, &types.AppError{Error: err, Code: http.StatusInternalServerError} + } + + out := mapper.MapUploadSchema(partUpload) + + return out, nil +} + func (us *UploadService) UploadFile(c *gin.Context) (*schemas.UploadPartOut, *types.AppError) { var uploadQuery schemas.UploadQuery