fc-common: add jobset state enum; add db migration"
I'm going to delete all migrations one of those days... Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I8e2e32118c2d85438a8b343614038eda6a6a6964
This commit is contained in:
parent
811c2031de
commit
1df28f6049
3 changed files with 180 additions and 16 deletions
39
crates/common/migrations/011_jobset_states.sql
Normal file
39
crates/common/migrations/011_jobset_states.sql
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
-- Migration: Add jobset states for Hydra-compatible scheduling
|
||||
-- Supports 4 states: disabled, enabled, one_shot, one_at_a_time
|
||||
|
||||
-- Add state column with CHECK constraint
|
||||
ALTER TABLE jobsets ADD COLUMN state VARCHAR(50) NOT NULL DEFAULT 'enabled'
|
||||
CHECK (state IN ('disabled', 'enabled', 'one_shot', 'one_at_a_time'));
|
||||
|
||||
-- Migrate existing data based on enabled column
|
||||
UPDATE jobsets SET state = CASE WHEN enabled THEN 'enabled' ELSE 'disabled' END;
|
||||
|
||||
-- Add last_checked_at for per-jobset interval tracking
|
||||
ALTER TABLE jobsets ADD COLUMN last_checked_at TIMESTAMP WITH TIME ZONE;
|
||||
|
||||
-- Drop and recreate active_jobsets view to include new columns
|
||||
DROP VIEW IF EXISTS active_jobsets;
|
||||
CREATE VIEW active_jobsets AS
|
||||
SELECT
|
||||
j.id,
|
||||
j.project_id,
|
||||
j.name,
|
||||
j.nix_expression,
|
||||
j.enabled,
|
||||
j.flake_mode,
|
||||
j.check_interval,
|
||||
j.branch,
|
||||
j.scheduling_shares,
|
||||
j.created_at,
|
||||
j.updated_at,
|
||||
j.state,
|
||||
j.last_checked_at,
|
||||
p.name as project_name,
|
||||
p.repository_url
|
||||
FROM jobsets j
|
||||
JOIN projects p ON j.project_id = p.id
|
||||
WHERE j.state IN ('enabled', 'one_shot', 'one_at_a_time');
|
||||
|
||||
-- Indexes for efficient queries
|
||||
CREATE INDEX idx_jobsets_state ON jobsets(state);
|
||||
CREATE INDEX idx_jobsets_last_checked_at ON jobsets(last_checked_at);
|
||||
Loading…
Add table
Add a link
Reference in a new issue