add uplaod part explicitly

This commit is contained in:
divyam234 2023-11-07 14:36:14 +05:30
parent b8fab88828
commit d3f42e595e
4 changed files with 63 additions and 14 deletions

View file

@ -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
}

View file

@ -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)

View file

@ -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"`
}

View file

@ -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