@@ -19,12 +19,14 @@ type MirrorTaskStore interface {
1919 CancelOtherTasksAndCreate (ctx context.Context , task MirrorTask ) (MirrorTask , error )
2020 Create (ctx context.Context , task MirrorTask ) (MirrorTask , error )
2121 Update (ctx context.Context , task MirrorTask ) (MirrorTask , error )
22+ UpdateStatusAndRepoSyncStatus (ctx context.Context , task MirrorTask , syncStatus types.RepositorySyncStatus ) (MirrorTask , error )
2223 FindByMirrorID (ctx context.Context , mirrorID int64 ) (* MirrorTask , error )
2324 Delete (ctx context.Context , ID int64 ) error
2425 GetHighestPriorityByTaskStatus (ctx context.Context , status []types.MirrorTaskStatus ) (MirrorTask , error )
2526 SetMirrorCurrentTaskID (ctx context.Context , task MirrorTask ) error
2627 FindByID (ctx context.Context , ID int64 ) (* MirrorTask , error )
2728 ListByStatusWithPriority (ctx context.Context , status []types.MirrorTaskStatus , per , page int ) ([]MirrorTask , error )
29+ ResetRunningTasks (ctx context.Context , fromStatus types.MirrorTaskStatus , toStatus types.MirrorTaskStatus ) (int , error )
2830}
2931
3032func NewMirrorTaskStore () MirrorTaskStore {
@@ -295,3 +297,44 @@ func (m *mirrorTaskStoreImpl) CancelOtherTasksAndCreate(ctx context.Context, tas
295297 })
296298 return task , errorx .HandleDBError (err , nil )
297299}
300+
301+ func (m * mirrorTaskStoreImpl ) ResetRunningTasks (ctx context.Context , fromStatus types.MirrorTaskStatus , toStatus types.MirrorTaskStatus ) (int , error ) {
302+ var task MirrorTask
303+ result , err := m .db .Operator .Core .NewUpdate ().
304+ Model (& task ).
305+ Set ("status = ?" , toStatus ).
306+ Where ("status = ?" , fromStatus ).
307+ Exec (ctx )
308+ if err != nil {
309+ return 0 , errorx .HandleDBError (err , nil )
310+ }
311+ rowsAffected , err := result .RowsAffected ()
312+ if err != nil {
313+ return 0 , errorx .HandleDBError (err , nil )
314+ }
315+ return int (rowsAffected ), nil
316+ }
317+
318+ func (m * mirrorTaskStoreImpl ) UpdateStatusAndRepoSyncStatus (ctx context.Context , task MirrorTask , syncStatus types.RepositorySyncStatus ) (MirrorTask , error ) {
319+ err := m .db .Operator .Core .RunInTx (ctx , nil , func (ctx context.Context , tx bun.Tx ) error {
320+ _ , err := tx .NewUpdate ().
321+ Model (& task ).
322+ WherePK ().
323+ Exec (ctx )
324+ if err != nil {
325+ return err
326+ }
327+
328+ _ , err = tx .NewUpdate ().
329+ Model (& Repository {}).
330+ Set ("sync_status = ?" , syncStatus ).
331+ Where ("id = ?" , task .Mirror .RepositoryID ).
332+ Exec (ctx )
333+ if err != nil {
334+ return err
335+ }
336+
337+ return nil
338+ })
339+ return task , errorx .HandleDBError (err , nil )
340+ }
0 commit comments