diff --git a/pkg/cli/upgradeassistant/cmd/migrate/321.go b/pkg/cli/upgradeassistant/cmd/migrate/321.go index 8099920b8c..96e3d01fef 100644 --- a/pkg/cli/upgradeassistant/cmd/migrate/321.go +++ b/pkg/cli/upgradeassistant/cmd/migrate/321.go @@ -17,6 +17,7 @@ package migrate import ( + "fmt" "time" "github.com/koderover/zadig/v2/pkg/cli/upgradeassistant/internal/upgradepath" @@ -35,10 +36,12 @@ func init() { func V320ToV321() error { ctx := handler.NewBackgroupContext() - ctx.Logger.Infof("start migrate release plan cronjob") + ctx.Logger.Infof("-------- start migrate release plan cronjob --------") err := migrateReleasePlanCron(ctx) if err != nil { - ctx.Logger.Errorf("failed to migrate release plan cronjob, error: %s", err) + err = fmt.Errorf("failed to migrate release plan cronjob, error: %w", err) + ctx.Logger.Error(err) + return err } return nil @@ -62,7 +65,7 @@ func migrateReleasePlanCron(ctx *handler.Context) error { return err } - // create new cronjob for release plan if schedule time is after now + // create new cronjob for release plan if schedule time is after now and status is executing for _, releasePlan := range releasePlans { if releasePlan.ScheduleExecuteTime != 0 && releasePlan.Status == config.StatusExecuting { if time.Unix(releasePlan.ScheduleExecuteTime, 0).After(time.Now()) { diff --git a/pkg/microservice/aslan/core/common/repository/mongodb/release_plan.go b/pkg/microservice/aslan/core/common/repository/mongodb/release_plan.go index fb154143e7..beff221f23 100644 --- a/pkg/microservice/aslan/core/common/repository/mongodb/release_plan.go +++ b/pkg/microservice/aslan/core/common/repository/mongodb/release_plan.go @@ -71,6 +71,10 @@ func (c *ReleasePlanColl) EnsureIndex(ctx context.Context) error { Keys: bson.M{"success_time": 1}, Options: options.Index().SetUnique(false), }, + { + Keys: bson.M{"update_time": 1}, + Options: options.Index().SetUnique(false), + }, } _, err := c.Indexes().CreateMany(ctx, mod) @@ -124,6 +128,13 @@ func (c *ReleasePlanColl) DeleteByID(ctx context.Context, idString string) error return err } +type SortReleasePlanBy string + +const ( + SortReleasePlanByIndex SortReleasePlanBy = "index" + SortReleasePlanByUpdateTime SortReleasePlanBy = "update_time" +) + type ListReleasePlanOption struct { PageNum int64 PageSize int64 @@ -134,6 +145,7 @@ type ListReleasePlanOption struct { UpdateTimeStart int64 UpdateTimeEnd int64 IsSort bool + SortBy SortReleasePlanBy ExcludedFields []string Status config.ReleasePlanStatus } @@ -149,8 +161,15 @@ func (c *ReleasePlanColl) ListByOptions(opt *ListReleasePlanOption) ([]*models.R ctx := context.Background() opts := options.Find() if opt.IsSort { - opts.SetSort(bson.D{{"index", -1}}) + if opt.SortBy == SortReleasePlanByIndex { + opts.SetSort(bson.D{{"index", -1}}) + } else if opt.SortBy == SortReleasePlanByUpdateTime { + opts.SetSort(bson.D{{"update_time", -1}}) + } else { + opts.SetSort(bson.D{{"index", -1}}) + } } + if opt.PageNum > 0 && opt.PageSize > 0 { opts.SetSkip((opt.PageNum - 1) * opt.PageSize) opts.SetLimit(opt.PageSize) diff --git a/pkg/microservice/aslan/core/release_plan/service/release_plan.go b/pkg/microservice/aslan/core/release_plan/service/release_plan.go index 23b014a0bc..b16d9e2c91 100644 --- a/pkg/microservice/aslan/core/release_plan/service/release_plan.go +++ b/pkg/microservice/aslan/core/release_plan/service/release_plan.go @@ -1015,6 +1015,7 @@ func ListReleasePlans(opt *ListReleasePlanOption) (*ListReleasePlanResp, error) SuccessTimeStart: timeStart, SuccessTimeEnd: timeEnd, IsSort: true, + SortBy: mongodb.SortReleasePlanByUpdateTime, PageNum: opt.PageNum, PageSize: opt.PageSize, ExcludedFields: []string{"jobs", "logs"}, @@ -1040,6 +1041,7 @@ func ListReleasePlans(opt *ListReleasePlanOption) (*ListReleasePlanResp, error) UpdateTimeStart: timeStart, UpdateTimeEnd: timeEnd, IsSort: true, + SortBy: mongodb.SortReleasePlanByUpdateTime, PageNum: opt.PageNum, PageSize: opt.PageSize, ExcludedFields: []string{"jobs", "logs"},