diff --git a/backend/app/repo/runtime.go b/backend/app/repo/runtime.go index 59ed29e0c..00470a8a9 100644 --- a/backend/app/repo/runtime.go +++ b/backend/app/repo/runtime.go @@ -14,6 +14,7 @@ type IRuntimeRepo interface { WithImage(image string) DBOption WithNotId(id uint) DBOption WithStatus(status string) DBOption + WithDetailId(id uint) DBOption Page(page, size int, opts ...DBOption) (int64, []model.Runtime, error) Create(ctx context.Context, runtime *model.Runtime) error Save(runtime *model.Runtime) error @@ -43,6 +44,12 @@ func (r *RuntimeRepo) WithImage(image string) DBOption { } } +func (r *RuntimeRepo) WithDetailId(id uint) DBOption { + return func(g *gorm.DB) *gorm.DB { + return g.Where("app_detail_id = ?", id) + } +} + func (r *RuntimeRepo) WithNotId(id uint) DBOption { return func(g *gorm.DB) *gorm.DB { return g.Where("id != ?", id) diff --git a/backend/app/service/app.go b/backend/app/service/app.go index d43362efe..643b0ab4a 100644 --- a/backend/app/service/app.go +++ b/backend/app/service/app.go @@ -852,6 +852,10 @@ func (a AppService) SyncAppListFromRemote() error { addDetails = append(addDetails, d) } else { if d.Status == constant.AppTakeDown { + runtime, _ := runtimeRepo.GetFirst(runtimeRepo.WithDetailId(d.ID)) + if runtime.ID > 0 { + continue + } deleteDetails = append(deleteDetails, d) } else { updateDetails = append(updateDetails, d)