package domain import "context" type Repository interface { Insert(ctx context.Context, j *Job) error Update(ctx context.Context, j *Job) error FindByID(ctx context.Context, id string) (*Job, error) ListByOwner(ctx context.Context, ownerUID int64) ([]*Job, error) // ClaimNext picks oldest due pending/queued (run_after <= now) and sets running + workerID. 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) }