egutierrez
f7a4f26cf0
feat: cola de jobs asincrona basada en SQLite (issue 0013)
...
Implementa el subsistema completo de background jobs para apps Go en el
dominio infra. 9 funciones + 3 tipos + 17 tests, todos pasando.
- Tipos: Job (product), JobQueue (product), JobStatus (sum) con
JobHandler, EnqueueOption y WorkerOption usando functional options pattern
- job_queue_create: CREATE TABLE + indices + WAL mode
- job_enqueue: INSERT con UUID (github.com/google/uuid), WithPriority/WithScheduledAt/WithMaxAttempts
- job_dequeue: SELECT+UPDATE atomico en transaccion exclusiva, filtro por jobTypes
- job_complete / job_fail: transiciones de estado; fail → dead cuando attempts >= max_attempts
- job_status_summary: pura, formatea conteo de jobs por estado
- job_worker: poll loop bloqueante, context-cancelable, graceful shutdown
- job_worker_pool: N workers con golang.org/x/sync/errgroup
- job_cleanup: DELETE jobs terminales mas viejos que olderThan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-13 02:00:44 +02:00
..
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:49 +02:00
2026-04-02 22:03:49 +02:00
2026-04-05 18:45:16 +02:00
2026-03-28 23:23:00 +01:00
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 13:05:13 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 17:29:52 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 17:13:45 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 17:13:45 +01:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:55 +02:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 03:58:43 +01:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:49 +02:00
2026-04-02 22:03:49 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 17:11:12 +02:00
2026-04-05 18:45:16 +02:00
2026-03-28 23:23:00 +01:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-04-13 02:00:44 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 23:23:00 +01:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-03-28 20:32:24 +01:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:08 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:08 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:08 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:08 +02:00
2026-04-01 20:55:08 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:17 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-12 13:05:13 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-02 15:32:40 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-12 13:54:43 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:41 +02:00
2026-04-02 22:03:41 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-12 17:29:52 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-04-01 20:55:24 +02:00
2026-04-05 18:45:16 +02:00
2026-03-30 14:24:12 +02:00
2026-03-30 14:24:12 +02:00
2026-04-05 18:45:16 +02:00