bmc_hub/migrations/1003_ordre_sync_audit_and_idempotency.sql

26 lines
1010 B
SQL

-- Migration 1003: Ordre draft sync audit + idempotency safeguards
ALTER TABLE ordre_drafts
ADD COLUMN IF NOT EXISTS export_idempotency_key VARCHAR(120);
CREATE UNIQUE INDEX IF NOT EXISTS uq_ordre_drafts_export_idempotency_key
ON ordre_drafts(export_idempotency_key)
WHERE export_idempotency_key IS NOT NULL;
CREATE TABLE IF NOT EXISTS ordre_draft_sync_events (
id SERIAL PRIMARY KEY,
draft_id INTEGER NOT NULL REFERENCES ordre_drafts(id) ON DELETE CASCADE,
event_type VARCHAR(50) NOT NULL,
from_status VARCHAR(20),
to_status VARCHAR(20),
event_payload JSONB NOT NULL DEFAULT '{}'::jsonb,
created_by_user_id INTEGER REFERENCES users(user_id) ON DELETE SET NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_ordre_draft_sync_events_draft_id
ON ordre_draft_sync_events(draft_id, created_at DESC);
CREATE INDEX IF NOT EXISTS idx_ordre_draft_sync_events_type
ON ordre_draft_sync_events(event_type, created_at DESC);