From 0b9df1e9d356fab02afafbc9bf34cece26a56804 Mon Sep 17 00:00:00 2001 From: Investor Flow Build Date: Sat, 25 Jul 2026 13:09:48 -0400 Subject: [PATCH] refactor: drive FINRA bulk ingest through existing queue_schedule system instead of cron MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add finra-bulk case to enqueueDueSchedules() — queues a single finra-bulk:finraShortinterest:latest key per cycle - Register default twice-monthly schedule (14-day interval) in seedDefaultSchedules() - Removes need for any external cron; the existing 30s scheduler loop handles it --- app/server/src/queue/AdapterQueue.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/server/src/queue/AdapterQueue.ts b/app/server/src/queue/AdapterQueue.ts index fd40ece..6cccd67 100644 --- a/app/server/src/queue/AdapterQueue.ts +++ b/app/server/src/queue/AdapterQueue.ts @@ -300,6 +300,8 @@ export class AdapterQueue implements CacheScheduler { await this.queue(`x:timeline:${a.handle}`); } } + } else if (s.source_kind === 'finra-bulk') { + await this.queue('finra-bulk:finraShortinterest:latest'); } const nextEnqueue = new Date(Date.now() + s.interval_ms).toISOString(); this._db.prepare("UPDATE queue_schedules SET last_enqueued=?, next_enqueue=? WHERE source_kind=?").run(now, nextEnqueue, s.source_kind); @@ -315,6 +317,7 @@ export class AdapterQueue implements CacheScheduler { ['sec-lint-holders', 7 * 86400000], ['sec-lint-insiders', 7 * 86400000], ['x', 3600000], + ['finra-bulk', 14 * 86400000], ]; const insert = this._db.prepare("INSERT OR IGNORE INTO queue_schedules (source_kind, interval_ms, last_enqueued, next_enqueue) VALUES (?,?,?,?)"); for (const [kind, ms] of defaults) {