20 lines
738 B
SQL
20 lines
738 B
SQL
CREATE TABLE provider_dependency_state (
|
|||
|
|
tenant_id UUID NOT NULL REFERENCES tenant(id) ON DELETE CASCADE,
|
||
|
|
provider VARCHAR(64) NOT NULL,
|
||
|
|
status VARCHAR(16) NOT NULL DEFAULT 'AVAILABLE'
|
||
|
|
CHECK (status IN ('AVAILABLE', 'UNAVAILABLE')),
|
||
|
|
consecutive_failures INTEGER NOT NULL DEFAULT 0 CHECK (consecutive_failures >= 0),
|
||
|
|
open_until TIMESTAMPTZ,
|
||
|
|
last_error_code VARCHAR(64),
|
||
|
|
last_failure_at TIMESTAMPTZ,
|
||
|
|
last_success_at TIMESTAMPTZ,
|
||
|
|
row_version BIGINT NOT NULL DEFAULT 1,
|
||
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||
|
|
PRIMARY KEY (tenant_id, provider)
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX idx_provider_dependency_unavailable
|
||
|
|
ON provider_dependency_state (updated_at DESC)
|
||
|
|
WHERE status = 'UNAVAILABLE';
|
||
|
|
|