27 lines
2.4 KiB
SQL
27 lines
2.4 KiB
SQL
-- Round 5S additive migration. Apply ONLY to an approved isolated database first.
|
|
-- No history backfill to REAL, no deletion, no account/privilege changes.
|
|
-- Stop the application before migration; do not run old and new writers together.
|
|
ALTER TABLE iotlocks.lock_auth ADD COLUMN IF NOT EXISTS execution_mode varchar(16) NOT NULL DEFAULT 'LEGACY';
|
|
ALTER TABLE iotlocks.lock_auth ADD COLUMN IF NOT EXISTS environment_id varchar(128);
|
|
ALTER TABLE iotlocks.lock_auth ADD COLUMN IF NOT EXISTS intent_key varchar(64);
|
|
ALTER TABLE iotlocks.lock_auth ADD COLUMN IF NOT EXISTS intent_version bigint NOT NULL DEFAULT 0;
|
|
ALTER TABLE iotlocks.lock_auth ADD COLUMN IF NOT EXISTS execution_state varchar(32) NOT NULL DEFAULT 'QUARANTINED';
|
|
ALTER TABLE iotlocks.lock_auth ADD COLUMN IF NOT EXISTS intent_action varchar(16);
|
|
ALTER TABLE iotlocks.lock_auth ADD COLUMN IF NOT EXISTS intent_at timestamp;
|
|
ALTER TABLE iotlocks.lock_command ADD COLUMN IF NOT EXISTS execution_mode varchar(16) NOT NULL DEFAULT 'LEGACY';
|
|
ALTER TABLE iotlocks.lock_command ADD COLUMN IF NOT EXISTS environment_id varchar(128);
|
|
ALTER TABLE iotlocks.lock_command ADD COLUMN IF NOT EXISTS intent_key varchar(64);
|
|
ALTER TABLE iotlocks.lock_command ADD COLUMN IF NOT EXISTS intent_version bigint NOT NULL DEFAULT 0;
|
|
ALTER TABLE iotlocks.lock_command ADD COLUMN IF NOT EXISTS execution_state varchar(32) NOT NULL DEFAULT 'QUARANTINED';
|
|
ALTER TABLE iotlocks.lock_command ADD COLUMN IF NOT EXISTS intent_action varchar(16);
|
|
ALTER TABLE iotlocks.lock_command ADD COLUMN IF NOT EXISTS intent_at timestamp;
|
|
ALTER TABLE iotlocks.lock_command ADD COLUMN IF NOT EXISTS device_sn varchar(64);
|
|
ALTER TABLE iotlocks.lock_command ADD COLUMN IF NOT EXISTS attempt_started_at timestamp;
|
|
CREATE UNIQUE INDEX IF NOT EXISTS uq_round5s_command_intent ON iotlocks.lock_command(intent_key);
|
|
CREATE UNIQUE INDEX IF NOT EXISTS uq_round5s_auth_intent ON iotlocks.lock_auth(intent_key);
|
|
CREATE INDEX IF NOT EXISTS ix_round5s_command_recovery ON iotlocks.lock_command(execution_state, attempt_started_at);
|
|
CREATE INDEX IF NOT EXISTS ix_round5s_auth_recovery ON iotlocks.lock_auth(execution_state, intent_action);
|
|
-- Existing rows are LEGACY / version 0 / QUARANTINED. Never bulk relabel them.
|
|
-- READY: proven never attempted; DISPATCHING/AWAITING_ACK: outcome may be unknown.
|
|
-- MANUAL_REVIEW/QUARANTINED: no automatic resend; CONFIRMED requires correlated device evidence.
|