shomei-migrations-0.2.0.0: migrations/shomei/0032-shomei-signing-keys-one-active.sql
-- shomei-signing-keys-one-active
SET LOCAL search_path = pg_catalog, pg_temp;
ALTER TABLE shomei.shomei_signing_keys
ADD COLUMN IF NOT EXISTS revoked_at timestamptz NULL;
-- Establish the invariant before declaring it. Keep the row the pre-migration loader would
-- have selected (latest activation, then creation, then key id) and retire every other active
-- row. Retired rows remain published so outstanding tokens continue to verify.
UPDATE shomei.shomei_signing_keys
SET status = 'retired', retired_at = now()
WHERE status = 'active'
AND key_id <> (
SELECT key_id
FROM shomei.shomei_signing_keys
WHERE status = 'active'
ORDER BY activated_at DESC NULLS LAST, created_at DESC, key_id DESC
LIMIT 1
);
CREATE UNIQUE INDEX IF NOT EXISTS shomei_signing_keys_one_active
ON shomei.shomei_signing_keys ((1))
WHERE status = 'active';