feat: update ppid data files for sorting by position
This commit is contained in:
parent
c4c520866b
commit
34df6f1a93
|
|
@ -7,6 +7,7 @@ import (
|
|||
"go-humas-be/app/database/entity"
|
||||
"go-humas-be/app/module/ppid_data_files/request"
|
||||
"go-humas-be/utils/paginator"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type ppidDataFilesRepository struct {
|
||||
|
|
@ -39,11 +40,49 @@ func (_i *ppidDataFilesRepository) GetAll(req request.PpidDataFilesQueryRequest)
|
|||
var count int64
|
||||
|
||||
query := _i.DB.DB.Model(&entity.PpidDataFiles{})
|
||||
query = query.Where("is_active = ?", true)
|
||||
|
||||
if req.Title != nil && *req.Title != "" {
|
||||
title := strings.ToLower(*req.Title)
|
||||
query = query.Where("LOWER(title) LIKE ?", "%"+strings.ToLower(title)+"%")
|
||||
}
|
||||
if req.Description != nil && *req.Description != "" {
|
||||
description := strings.ToLower(*req.Description)
|
||||
query = query.Where("LOWER(description) LIKE ?", "%"+strings.ToLower(description)+"%")
|
||||
}
|
||||
if req.Unit != nil && *req.Unit != "" {
|
||||
unit := strings.ToLower(*req.Unit)
|
||||
query = query.Where("LOWER(unit) LIKE ?", "%"+strings.ToLower(unit)+"%")
|
||||
}
|
||||
if req.FileType != nil && *req.FileType != "" {
|
||||
query = query.Where("file_type = ?", req.FileType)
|
||||
}
|
||||
if req.PpidDataId != nil {
|
||||
query = query.Where("ppid_data_id = ?", req.PpidDataId)
|
||||
}
|
||||
if req.IsPublish != nil {
|
||||
query = query.Where("is_publish = ?", req.IsPublish)
|
||||
}
|
||||
if req.StatusId != nil {
|
||||
query = query.Where("status_id = ?", req.StatusId)
|
||||
}
|
||||
query.Count(&count)
|
||||
|
||||
if req.Pagination.SortBy != "" {
|
||||
direction := "ASC"
|
||||
if req.Pagination.Sort == "desc" {
|
||||
direction = "DESC"
|
||||
}
|
||||
query.Order(fmt.Sprintf("%s %s", req.Pagination.SortBy, direction))
|
||||
}
|
||||
|
||||
req.Pagination.Count = count
|
||||
req.Pagination = paginator.Paging(req.Pagination)
|
||||
|
||||
if req.Pagination.Limit == -1 {
|
||||
query.Limit(req.Pagination.Limit)
|
||||
}
|
||||
|
||||
err = query.Offset(req.Pagination.Offset).Limit(req.Pagination.Limit).Find(&ppidDataFiless).Error
|
||||
if err != nil {
|
||||
return
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ type PpidDataFilesQueryRequest struct {
|
|||
Description *string `json:"description"`
|
||||
Unit *string `json:"unit"`
|
||||
FileType *string `json:"fileType"`
|
||||
Position *int `json:"position"`
|
||||
StatusId *int `json:"statusId"`
|
||||
IsPublish *bool `json:"isPublish"`
|
||||
Pagination *paginator.Pagination `json:"pagination"`
|
||||
|
|
@ -102,6 +103,7 @@ type PpidDataFilesQueryRequestContext struct {
|
|||
Description string `json:"description"`
|
||||
Unit string `json:"unit"`
|
||||
FileType string `json:"fileType"`
|
||||
Position string `json:"position"`
|
||||
StatusId string `json:"statusId"`
|
||||
IsPublish string `json:"isPublish"`
|
||||
}
|
||||
|
|
@ -127,6 +129,12 @@ func (req PpidDataFilesQueryRequestContext) ToParamRequest() PpidDataFilesQueryR
|
|||
if fileType := req.FileType; fileType != "" {
|
||||
request.FileType = &fileType
|
||||
}
|
||||
if positionStr := req.Position; positionStr != "" {
|
||||
position, err := strconv.Atoi(positionStr)
|
||||
if err == nil {
|
||||
request.Position = &position
|
||||
}
|
||||
}
|
||||
if statusIdStr := req.StatusId; statusIdStr != "" {
|
||||
statusId, err := strconv.Atoi(statusIdStr)
|
||||
if err == nil {
|
||||
|
|
|
|||
Loading…
Reference in New Issue