26 lines
1010 B
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);
|