| 1 | -- SPDX-License-Identifier: AGPL-3.0-or-later |
| 2 | -- |
| 3 | -- S41j runner pool operations: runner metadata plus explicit drain/revoke |
| 4 | -- state. Draining prevents new claims while allowing in-flight jobs to finish. |
| 5 | -- Revocation is a hard operator control: registration tokens no longer |
| 6 | -- authenticate and job API JWTs minted for that runner are rejected. |
| 7 | |
| 8 | -- +goose Up |
| 9 | |
| 10 | ALTER TABLE workflow_runners |
| 11 | ADD COLUMN host_name text NOT NULL DEFAULT '', |
| 12 | ADD COLUMN version text NOT NULL DEFAULT '', |
| 13 | ADD COLUMN draining_at timestamptz, |
| 14 | ADD COLUMN drain_reason text NOT NULL DEFAULT '', |
| 15 | ADD COLUMN revoked_at timestamptz, |
| 16 | ADD COLUMN revoked_reason text NOT NULL DEFAULT '', |
| 17 | ADD CONSTRAINT workflow_runners_host_name_length CHECK (char_length(host_name) <= 255), |
| 18 | ADD CONSTRAINT workflow_runners_version_length CHECK (char_length(version) <= 255), |
| 19 | ADD CONSTRAINT workflow_runners_drain_reason_length CHECK (char_length(drain_reason) <= 1000), |
| 20 | ADD CONSTRAINT workflow_runners_revoked_reason_length CHECK (char_length(revoked_reason) <= 1000); |
| 21 | |
| 22 | CREATE INDEX workflow_runners_draining_idx |
| 23 | ON workflow_runners (draining_at) |
| 24 | WHERE draining_at IS NOT NULL AND revoked_at IS NULL; |
| 25 | |
| 26 | CREATE INDEX workflow_runners_revoked_idx |
| 27 | ON workflow_runners (revoked_at) |
| 28 | WHERE revoked_at IS NOT NULL; |
| 29 | |
| 30 | CREATE INDEX workflow_runners_claimable_idx |
| 31 | ON workflow_runners (status) |
| 32 | WHERE revoked_at IS NULL AND draining_at IS NULL; |
| 33 | |
| 34 | -- +goose Down |
| 35 | |
| 36 | DROP INDEX IF EXISTS workflow_runners_claimable_idx; |
| 37 | DROP INDEX IF EXISTS workflow_runners_revoked_idx; |
| 38 | DROP INDEX IF EXISTS workflow_runners_draining_idx; |
| 39 | |
| 40 | ALTER TABLE workflow_runners |
| 41 | DROP CONSTRAINT IF EXISTS workflow_runners_revoked_reason_length, |
| 42 | DROP CONSTRAINT IF EXISTS workflow_runners_drain_reason_length, |
| 43 | DROP CONSTRAINT IF EXISTS workflow_runners_version_length, |
| 44 | DROP CONSTRAINT IF EXISTS workflow_runners_host_name_length, |
| 45 | DROP COLUMN IF EXISTS revoked_reason, |
| 46 | DROP COLUMN IF EXISTS revoked_at, |
| 47 | DROP COLUMN IF EXISTS drain_reason, |
| 48 | DROP COLUMN IF EXISTS draining_at, |
| 49 | DROP COLUMN IF EXISTS version, |
| 50 | DROP COLUMN IF EXISTS host_name; |
| 51 |