diff --git a/agent/app/repo/common.go b/agent/app/repo/common.go index 4f47e97ef548..766453336696 100644 --- a/agent/app/repo/common.go +++ b/agent/app/repo/common.go @@ -152,17 +152,14 @@ func WithByCreatedAt(startTime, endTime time.Time) DBOption { } } -func WithOrderBy(orderStr string) DBOption { - if orderStr == "createdAt" { - orderStr = "created_at" - } - if !re.GetRegex(re.OrderByValidationPattern).MatchString(orderStr) { - orderStr = "created_at" - } - return func(g *gorm.DB) *gorm.DB { - return g.Order(orderStr) - } +func WithOrderDesc(orderBy string) DBOption { + return WithOrderRuleBy(orderBy, constant.Desc) } + +func WithOrderAsc(orderBy string) DBOption { + return WithOrderRuleBy(orderBy, constant.Asc) +} + func WithOrderRuleBy(orderBy, order string) DBOption { if orderBy == "createdAt" { orderBy = "created_at" @@ -175,6 +172,10 @@ func WithOrderRuleBy(orderBy, order string) DBOption { order = "desc" case constant.OrderAsc: order = "asc" + case constant.Desc: + order = "desc" + case constant.Asc: + order = "asc" default: orderBy = "created_at" order = "desc" diff --git a/agent/app/service/alert.go b/agent/app/service/alert.go index 4c01f34a724f..ecdb135d39b7 100644 --- a/agent/app/service/alert.go +++ b/agent/app/service/alert.go @@ -60,7 +60,7 @@ func (a AlertService) PageAlert(search dto.AlertSearch) (int64, []dto.AlertDTO, if search.Type != "" { opts = append(opts, alertRepo.WithByType(search.Type)) } - opts = append(opts, repo.WithOrderBy("created_at desc")) + opts = append(opts, repo.WithOrderDesc("created_at")) total, alerts, err := alertRepo.Page(search.Page, search.PageSize, opts...) if err != nil { @@ -343,7 +343,7 @@ func (a AlertService) PageAlertLogs(search dto.AlertLogSearch) (int64, []dto.Ale if search.Count != 0 { opts = append(opts, alertRepo.WithByCount(search.Count)) } - opts = append(opts, repo.WithOrderBy("created_at desc")) + opts = append(opts, repo.WithOrderDesc("created_at")) total, alerts, err := alertRepo.PageLog(search.Page, search.PageSize, opts...) if err != nil { diff --git a/agent/app/service/backup.go b/agent/app/service/backup.go index e75dba7457b7..ee9ef35d3994 100644 --- a/agent/app/service/backup.go +++ b/agent/app/service/backup.go @@ -72,7 +72,7 @@ func (u *BackupService) GetLocalDir() (string, error) { } func (u *BackupService) SearchWithPage(req dto.SearchPageWithType) (int64, interface{}, error) { - options := []repo.DBOption{repo.WithOrderBy("created_at desc")} + options := []repo.DBOption{repo.WithOrderDesc("created_at")} if len(req.Type) != 0 { options = append(options, repo.WithByType(req.Type)) } @@ -372,7 +372,7 @@ func (u *BackupService) checkBackupConn(backup *model.BackupAccount) (bool, erro } func (u *BackupService) LoadBackupOptions() ([]dto.BackupOption, error) { - accounts, err := backupRepo.List(repo.WithOrderBy("created_at desc")) + accounts, err := backupRepo.List(repo.WithOrderDesc("created_at")) if err != nil { return nil, err } diff --git a/agent/app/service/backup_record.go b/agent/app/service/backup_record.go index 28baee44012e..1cc6d2fae15e 100644 --- a/agent/app/service/backup_record.go +++ b/agent/app/service/backup_record.go @@ -38,7 +38,7 @@ func NewIBackupRecordService() IBackupRecordService { func (u *BackupRecordService) SearchRecordsWithPage(search dto.RecordSearch) (int64, []dto.BackupRecords, error) { total, records, err := backupRepo.PageRecord( search.Page, search.PageSize, - repo.WithOrderBy("created_at desc"), + repo.WithOrderDesc("created_at"), repo.WithByName(search.Name), repo.WithByType(search.Type), repo.WithByDetailName(search.DetailName), @@ -69,7 +69,7 @@ func (u *BackupRecordService) SearchRecordsWithPage(search dto.RecordSearch) (in func (u *BackupRecordService) SearchRecordsByCronjobWithPage(search dto.RecordSearchByCronjob) (int64, []dto.BackupRecords, error) { total, records, err := backupRepo.PageRecord( search.Page, search.PageSize, - repo.WithOrderBy("created_at desc"), + repo.WithOrderDesc("created_at"), backupRepo.WithByCronID(search.CronjobID), ) if err != nil { @@ -166,7 +166,7 @@ func (u *BackupRecordService) BatchDeleteRecord(ids []uint) error { func (u *BackupRecordService) ListAppRecords(name, detailName, fileName string) ([]model.BackupRecord, error) { records, err := backupRepo.ListRecord( - repo.WithOrderBy("created_at asc"), + repo.WithOrderAsc("created_at"), repo.WithByName(name), repo.WithByType("app"), backupRepo.WithFileNameStartWith(fileName), @@ -221,7 +221,7 @@ func (u *BackupRecordService) LoadRecordSize(req dto.SearchForSize) ([]dto.Recor list = append(list, backupSizeHelper{ID: item.ID, DownloadID: item.DownloadAccountID, FilePath: fmt.Sprintf("system_snapshot/%s.tar.gz", item.Name)}) } case "cronjob": - _, records, err := backupRepo.PageRecord(req.Page, req.PageSize, repo.WithOrderBy("created_at desc"), backupRepo.WithByCronID(req.CronjobID)) + _, records, err := backupRepo.PageRecord(req.Page, req.PageSize, repo.WithOrderDesc("created_at"), backupRepo.WithByCronID(req.CronjobID)) if err != nil { return nil, err } @@ -231,7 +231,7 @@ func (u *BackupRecordService) LoadRecordSize(req dto.SearchForSize) ([]dto.Recor default: _, records, err := backupRepo.PageRecord( req.Page, req.PageSize, - repo.WithOrderBy("created_at desc"), + repo.WithOrderDesc("created_at"), repo.WithByName(req.Name), repo.WithByType(req.Type), repo.WithByDetailName(req.DetailName), diff --git a/agent/app/service/cronjob_helper.go b/agent/app/service/cronjob_helper.go index 308e83ca6dd8..9c4ebcfb0e46 100644 --- a/agent/app/service/cronjob_helper.go +++ b/agent/app/service/cronjob_helper.go @@ -418,7 +418,7 @@ func (u *CronjobService) removeExpiredBackup(cronjob model.Cronjob, accountMap m var opts []repo.DBOption opts = append(opts, repo.WithByFrom("cronjob")) opts = append(opts, backupRepo.WithByCronID(cronjob.ID)) - opts = append(opts, repo.WithOrderBy("created_at desc")) + opts = append(opts, repo.WithOrderDesc("created_at")) if record.ID != 0 { opts = append(opts, repo.WithByType(record.Type)) opts = append(opts, repo.WithByName(record.Name)) @@ -461,7 +461,7 @@ func (u *CronjobService) removeExpiredBackup(cronjob model.Cronjob, accountMap m } func (u *CronjobService) removeExpiredLog(cronjob model.Cronjob) { - records, _ := cronjobRepo.ListRecord(cronjobRepo.WithByJobID(int(cronjob.ID)), repo.WithOrderBy("created_at desc")) + records, _ := cronjobRepo.ListRecord(cronjobRepo.WithByJobID(int(cronjob.ID)), repo.WithOrderDesc("created_at")) if len(records) <= int(cronjob.RetainCopies) { return } diff --git a/agent/app/service/ftp.go b/agent/app/service/ftp.go index 368cd4f3bbf9..606a8e4fb389 100644 --- a/agent/app/service/ftp.go +++ b/agent/app/service/ftp.go @@ -76,7 +76,7 @@ func (u *FtpService) Operate(operation string) error { } func (f *FtpService) SearchWithPage(req dto.SearchWithPage) (int64, interface{}, error) { - total, lists, err := ftpRepo.Page(req.Page, req.PageSize, ftpRepo.WithLikeUser(req.Info), repo.WithOrderBy("created_at desc")) + total, lists, err := ftpRepo.Page(req.Page, req.PageSize, ftpRepo.WithLikeUser(req.Info), repo.WithOrderDesc("created_at")) if err != nil { return 0, nil, err } diff --git a/agent/app/service/group.go b/agent/app/service/group.go index 025035f281b0..e02897500163 100644 --- a/agent/app/service/group.go +++ b/agent/app/service/group.go @@ -24,8 +24,8 @@ func NewIGroupService() IGroupService { func (u *GroupService) List(req dto.OperateByType) ([]dto.GroupInfo, error) { options := []repo.DBOption{ - repo.WithOrderBy("is_default desc"), - repo.WithOrderBy("created_at desc"), + repo.WithOrderDesc("is_default"), + repo.WithOrderDesc("created_at"), } if len(req.Type) != 0 { options = append(options, repo.WithByType(req.Type)) diff --git a/agent/app/service/image_repo.go b/agent/app/service/image_repo.go index fca1925a82ef..1eb0d4a83ff9 100644 --- a/agent/app/service/image_repo.go +++ b/agent/app/service/image_repo.go @@ -37,7 +37,7 @@ func NewIImageRepoService() IImageRepoService { } func (u *ImageRepoService) Page(req dto.SearchWithPage) (int64, interface{}, error) { - total, ops, err := imageRepoRepo.Page(req.Page, req.PageSize, repo.WithByLikeName(req.Info), repo.WithOrderBy("created_at desc")) + total, ops, err := imageRepoRepo.Page(req.Page, req.PageSize, repo.WithByLikeName(req.Info), repo.WithOrderDesc("created_at")) var dtoOps []dto.ImageRepoInfo for _, op := range ops { var item dto.ImageRepoInfo @@ -65,7 +65,7 @@ func (u *ImageRepoService) Login(req dto.OperateByID) error { } func (u *ImageRepoService) List() ([]dto.ImageRepoOption, error) { - ops, err := imageRepoRepo.List(repo.WithOrderBy("created_at desc")) + ops, err := imageRepoRepo.List(repo.WithOrderDesc("created_at")) var dtoOps []dto.ImageRepoOption for _, op := range ops { if op.Status == constant.StatusSuccess { diff --git a/agent/app/service/task.go b/agent/app/service/task.go index 973a8f2bf12c..a2cab7dca612 100644 --- a/agent/app/service/task.go +++ b/agent/app/service/task.go @@ -19,7 +19,7 @@ func NewITaskService() ITaskLogService { func (u *TaskLogService) Page(req dto.SearchTaskLogReq) (int64, []dto.TaskDTO, error) { opts := []repo.DBOption{ - repo.WithOrderBy("created_at desc"), + repo.WithOrderDesc("created_at"), } if req.Status != "" { opts = append(opts, repo.WithByStatus(req.Status)) diff --git a/agent/app/service/website_acme_account.go b/agent/app/service/website_acme_account.go index f002326d3732..af7fc5b29d16 100644 --- a/agent/app/service/website_acme_account.go +++ b/agent/app/service/website_acme_account.go @@ -25,7 +25,7 @@ func NewIWebsiteAcmeAccountService() IWebsiteAcmeAccountService { } func (w WebsiteAcmeAccountService) Page(search dto.PageInfo) (int64, []response.WebsiteAcmeAccountDTO, error) { - total, accounts, err := websiteAcmeRepo.Page(search.Page, search.PageSize, repo.WithOrderBy("created_at desc")) + total, accounts, err := websiteAcmeRepo.Page(search.Page, search.PageSize, repo.WithOrderDesc("created_at")) var accountDTOs []response.WebsiteAcmeAccountDTO for _, account := range accounts { accountDTOs = append(accountDTOs, response.WebsiteAcmeAccountDTO{ diff --git a/agent/app/service/website_ca.go b/agent/app/service/website_ca.go index e5e765cd7e0a..737a25ad01c2 100644 --- a/agent/app/service/website_ca.go +++ b/agent/app/service/website_ca.go @@ -51,7 +51,7 @@ func NewIWebsiteCAService() IWebsiteCAService { } func (w WebsiteCAService) Page(search request.WebsiteCASearch) (int64, []response.WebsiteCADTO, error) { - total, cas, err := websiteCARepo.Page(search.Page, search.PageSize, repo.WithOrderBy("created_at desc")) + total, cas, err := websiteCARepo.Page(search.Page, search.PageSize, repo.WithOrderDesc("created_at")) if err != nil { return 0, nil, err } diff --git a/agent/app/service/website_dns_account.go b/agent/app/service/website_dns_account.go index 61b84e0d7102..6260a22703ee 100644 --- a/agent/app/service/website_dns_account.go +++ b/agent/app/service/website_dns_account.go @@ -27,7 +27,7 @@ func NewIWebsiteDnsAccountService() IWebsiteDnsAccountService { } func (w WebsiteDnsAccountService) Page(search dto.PageInfo) (int64, []response.WebsiteDnsAccountDTO, error) { - total, accounts, err := websiteDnsRepo.Page(search.Page, search.PageSize, repo.WithOrderBy("created_at desc")) + total, accounts, err := websiteDnsRepo.Page(search.Page, search.PageSize, repo.WithOrderDesc("created_at")) var accountDTOs []response.WebsiteDnsAccountDTO for _, account := range accounts { auth := make(map[string]string) diff --git a/agent/app/service/website_ssl.go b/agent/app/service/website_ssl.go index efc461ed0ab0..20083334e5f7 100644 --- a/agent/app/service/website_ssl.go +++ b/agent/app/service/website_ssl.go @@ -62,7 +62,7 @@ func (w WebsiteSSLService) Page(search request.WebsiteSSLSearch) (int64, []respo if search.OrderBy != "" && search.Order != "null" { opts = append(opts, repo.WithOrderRuleBy(search.OrderBy, search.Order)) } else { - opts = append(opts, repo.WithOrderBy("created_at desc")) + opts = append(opts, repo.WithOrderDesc("created_at")) } if search.Domain != "" { opts = append(opts, websiteSSLRepo.WithByDomain(search.Domain)) @@ -95,7 +95,7 @@ func (w WebsiteSSLService) Search(search request.WebsiteSSLListReq) ([]response. opts []repo.DBOption result []response.WebsiteSSLDTO ) - opts = append(opts, repo.WithOrderBy("created_at desc")) + opts = append(opts, repo.WithOrderDesc("created_at")) if search.AcmeAccountID != "" { acmeAccountID, err := strconv.ParseUint(search.AcmeAccountID, 10, 64) if err != nil { diff --git a/agent/constant/status.go b/agent/constant/status.go index 3c7aca53e2e9..6a06766626c0 100644 --- a/agent/constant/status.go +++ b/agent/constant/status.go @@ -40,4 +40,6 @@ const ( OrderDesc = "descending" OrderAsc = "ascending" + Desc = "desc" + Asc = "asc" )