|
|
|
|
|
CREATE TABLE IF NOT EXISTS objects ( |
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(), |
|
|
namespace TEXT NOT NULL, |
|
|
type TEXT NOT NULL, |
|
|
timestamp TIMESTAMPTZ NOT NULL, |
|
|
location JSONB, |
|
|
severity INT, |
|
|
confirmed BOOLEAN DEFAULT FALSE, |
|
|
images JSONB, |
|
|
provenance JSONB, |
|
|
created_at TIMESTAMPTZ DEFAULT now() |
|
|
); |
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS payouts ( |
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(), |
|
|
fault_id UUID REFERENCES objects(id) ON DELETE CASCADE, |
|
|
amount_minor_units BIGINT NOT NULL, |
|
|
currency VARCHAR(8) NOT NULL DEFAULT 'ZAR', |
|
|
payee_id TEXT NOT NULL, |
|
|
status VARCHAR(32) NOT NULL DEFAULT 'created', |
|
|
tx_ref TEXT, |
|
|
created_at TIMESTAMPTZ DEFAULT now(), |
|
|
settled_at TIMESTAMPTZ |
|
|
); |
|
|
|
|
|
CREATE INDEX idx_objects_namespace ON objects(namespace); |
|
|
CREATE INDEX idx_objects_confirmed ON objects(confirmed); |
|
|
CREATE EXTENSION IF NOT EXISTS pgcrypto; |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS objects ( |
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(), |
|
|
namespace TEXT NOT NULL, |
|
|
type TEXT NOT NULL, |
|
|
timestamp TIMESTAMPTZ NOT NULL, |
|
|
location JSONB, |
|
|
severity INT, |
|
|
confirmed BOOLEAN DEFAULT FALSE, |
|
|
images JSONB, |
|
|
provenance JSONB, |
|
|
created_at TIMESTAMPTZ DEFAULT now() |
|
|
); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS payouts ( |
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(), |
|
|
fault_id UUID REFERENCES objects(id) ON DELETE CASCADE, |
|
|
amount_minor_units BIGINT NOT NULL, |
|
|
currency VARCHAR(8) NOT NULL DEFAULT 'ZAR', |
|
|
payee_id TEXT NOT NULL, |
|
|
status VARCHAR(32) NOT NULL DEFAULT 'created', |
|
|
tx_ref TEXT, |
|
|
created_at TIMESTAMPTZ DEFAULT now(), |
|
|
settled_at TIMESTAMPTZ |
|
|
); |
|
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_objects_namespace ON objects(namespace); |
|
|
CREATE INDEX IF NOT EXISTS idx_objects_confirmed ON objects(confirmed); |
|
|
|
|
|
|