- JobThrottle::saveValue now returns int throttle_id instead of bool:
new inserts return the DB-generated insertID, updates return the
existing throttleId.
- Jobs controller collects saved ids into $notToDelete using the
returned value, so newly inserted throttles are correctly tracked.
Fixes bug where newly inserted throttles had no id captured,
causing them to be wrongly deleted in the post-save cleanup step.
Signed-off-by: objecttothis <17935339+objecttothis@users.noreply.github.com>
Introduce CodeIgniter Tasks-based job scheduling to support
long-running background work (e.g. large CSV imports) without
blocking requests.
- composer.json/composer.lock: add codeigniter4/tasks (and its
dependencies codeigniter4/queue, codeigniter4/settings) to
power the task scheduler and settings-backed configuration.
- app/Models/JobThrottle.php: new model for job_throttles table,
providing exists/save/getAll/delete helpers to rate-limit or
throttle job execution per throttle_id.
- INSTALL.md: document the three trigger modes (Web default via
request-hook processing, Auto via cron/Task Scheduler, Manual
via admin UI button), including step-by-step Linux/Mac cron
and Windows Task Scheduler setup, and Docker considerations
(worker container, supervisor, or cron sidecar) since cron
does not run inside a single-process container by default.
Signed-off-by: objecttothis <17935339+objecttothis@users.noreply.github.com>