Files
minstrel/internal/db/migrations/0019_scan_schedule.up.sql
T
bvandeusenandClaude Opus 5.5 6028d78844
release / govulncheck (push) Successful in 17s
release / web (push) Successful in 1m33s
release / go (push) Successful in 1m49s
release / integration (push) Successful in 5m42s
release / android (push) Successful in 5m59s
release / Build signed APK (releases and dev) (push) Successful in 6m9s
release / Attach APK to the Release (tag releases only) (push) Skipped
release / Build + push container image (push) Successful in 16s
release / Verify release artifacts (tag releases only) (push) Skipped
docs: migration headers keep the before and after, without ids, quotes or one library's numbers (#6277)
Applies rule 32's migration exception: each header still says what the
schema was, what changes and what it prevents, but task, milestone,
decision and rule ids are replaced by the practice they stood for, the
operator quotes by the decision, single-install counts are dropped, and
pointers to a deleted package and an external design doc are gone.
golang-migrate keeps no checksum, so editing applied migrations'
comments is safe.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 12:34:39 -04:00

24 lines
1.1 KiB
SQL

-- Recurring scans: singleton table holding the scan schedule
-- config. mode is the discriminator: 'off' / 'interval' / 'daily' / 'weekly'.
-- Per-mode fields are populated only when their mode is selected; others
-- stay NULL. weekly_day uses ISO 8601: 1=Monday … 7=Sunday.
CREATE TABLE scan_schedule (
id boolean PRIMARY KEY DEFAULT true,
mode text NOT NULL DEFAULT 'off',
interval_hours int,
time_of_day text,
weekly_day int,
updated_at timestamptz NOT NULL DEFAULT now(),
CONSTRAINT scan_schedule_singleton CHECK (id = true),
CONSTRAINT scan_schedule_mode_check
CHECK (mode IN ('off', 'interval', 'daily', 'weekly')),
CONSTRAINT scan_schedule_interval_check
CHECK (mode != 'interval' OR (interval_hours IS NOT NULL AND interval_hours > 0)),
CONSTRAINT scan_schedule_daily_check
CHECK (mode != 'daily' OR time_of_day IS NOT NULL),
CONSTRAINT scan_schedule_weekly_check
CHECK (mode != 'weekly' OR (time_of_day IS NOT NULL AND weekly_day IS NOT NULL AND weekly_day BETWEEN 1 AND 7))
);
INSERT INTO scan_schedule (id) VALUES (true);