2026-07-13 01:15:30 +00:00
|
|
|
|
package domain
|
|
|
|
|
|
|
|
|
|
|
|
import "context"
|
|
|
|
|
|
|
|
|
|
|
|
type Repository interface {
|
|
|
|
|
|
Insert(ctx context.Context, j *Job) error
|
|
|
|
|
|
Update(ctx context.Context, j *Job) error
|
2026-07-15 15:23:59 +00:00
|
|
|
|
// UpdateOwned atomically requires the current running lease to belong to leaseOwner.
|
|
|
|
|
|
UpdateOwned(ctx context.Context, j *Job, leaseOwner string) error
|
|
|
|
|
|
RenewLease(ctx context.Context, id, leaseOwner string, leaseExpiresAt int64) error
|
2026-07-13 01:15:30 +00:00
|
|
|
|
FindByID(ctx context.Context, id string) (*Job, error)
|
|
|
|
|
|
ListByOwner(ctx context.Context, ownerUID int64) ([]*Job, error)
|
2026-07-13 03:18:08 +00:00
|
|
|
|
// ListByOwnerTab 分頁+分桶;total 為該 tab 總筆數
|
|
|
|
|
|
ListByOwnerTab(ctx context.Context, ownerUID int64, tab string, page, pageSize int) (list []*Job, total int64, err error)
|
2026-07-15 15:23:59 +00:00
|
|
|
|
// ClaimNext atomically claims a due queued job or a running job with an expired lease.
|
2026-07-13 01:15:30 +00:00
|
|
|
|
ClaimNext(ctx context.Context, workerID string) (*Job, error)
|
|
|
|
|
|
// CancelPendingByRef cancels pending/queued jobs of template+ref (e.g. reschedule renew).
|
|
|
|
|
|
CancelPendingByRef(ctx context.Context, ownerUID int64, template, refID string) error
|
|
|
|
|
|
// Delete hard-removes a job by id.
|
|
|
|
|
|
Delete(ctx context.Context, id string) error
|
|
|
|
|
|
// DeleteTerminalBefore removes terminal jobs whose completion time is before beforeNs.
|
|
|
|
|
|
// Returns number of deleted documents.
|
|
|
|
|
|
DeleteTerminalBefore(ctx context.Context, beforeNs int64) (int64, error)
|
|
|
|
|
|
}
|