| |
| 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); |
|
|
|
|