Skip to content

Commit 586effa

Browse files
committed
Simplify diagram notation, remove clear_completed()
- Use complete() and complete()* notation for conditional transitions - Same for refresh() and refresh()* - Remove clear_completed(); use (jobs & 'status="success"').delete() instead - Note that delete() requires no confirmation (low-cost operation)
1 parent bab7e10 commit 586effa

File tree

1 file changed

+13
-19
lines changed

1 file changed

+13
-19
lines changed

docs/src/design/autopopulate-2.0-spec.md

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -144,22 +144,26 @@ stateDiagram-v2
144144
none --> pending : refresh()
145145
none --> ignore : ignore()
146146
pending --> reserved : reserve()
147-
reserved --> none : complete()\n[if not keeping completed]
148-
reserved --> success : complete()\n[if keeping completed]
147+
reserved --> none : complete()
148+
reserved --> success : complete()*
149149
reserved --> error : error()
150-
success --> pending : refresh()\n[if key in key_source]
150+
success --> pending : refresh()*
151151
error --> none : delete()
152152
success --> none : delete()
153153
ignore --> none : delete()
154154
```
155155

156+
- `complete()` deletes the job entry (default when `jobs.keep_completed=False`)
157+
- `complete()*` keeps the job as `success` (when `jobs.keep_completed=True`)
158+
- `refresh()*` re-pends a `success` job if its key is in `key_source` but not in target
159+
156160
**Transition methods:**
157161
- `refresh()` — Adds new jobs as `pending`; also re-pends `success` jobs if key is in `key_source` but not in target
158162
- `ignore()` — Marks a key as `ignore` (can be called on keys not yet in jobs table)
159163
- `reserve()` — Marks a pending job as `reserved` before calling `make()`
160164
- `complete()` — Marks reserved job as `success`, or deletes it (based on `jobs.keep_completed` setting)
161165
- `error()` — Marks reserved job as `error` with message and stack trace
162-
- `delete()` — Removes job entry, returning it to `(none)` state
166+
- `delete()` — Removes job entries without confirmation (low-cost operation)
163167

164168
**Manual status control:**
165169
- `ignore` is set manually via `jobs.ignore(key)` and is not part of automatic transitions
@@ -247,31 +251,21 @@ class JobsTable(Table):
247251

248252
def delete(self, *restrictions) -> int:
249253
"""
250-
Delete jobs matching restrictions.
254+
Delete jobs matching restrictions. No confirmation required.
251255
252256
Deleted jobs return to (none) state. Call refresh() to re-add
253257
them as pending if their keys are still in key_source.
254258
255-
This is the standard way to "reset" error or ignored jobs.
259+
Examples:
260+
jobs.errors.delete() # Delete all error jobs
261+
(jobs & 'status="success"').delete() # Delete completed jobs
262+
(jobs & 'subject_id=42').delete() # Delete jobs for specific key
256263
257264
Returns:
258265
Number of jobs deleted.
259266
"""
260267
...
261268

262-
def clear_completed(self, *restrictions, before: datetime = None) -> int:
263-
"""
264-
Remove completed jobs from the queue.
265-
266-
Args:
267-
restrictions: Conditions to filter which jobs to clear
268-
before: Only clear jobs completed before this time
269-
270-
Returns:
271-
Number of jobs cleared.
272-
"""
273-
...
274-
275269
@property
276270
def pending(self) -> QueryExpression:
277271
"""Return query for pending jobs."""

0 commit comments

Comments
 (0)