83 lines
2.6 KiB
PL/PgSQL
83 lines
2.6 KiB
PL/PgSQL
BEGIN;
|
|
|
|
CREATE SCHEMA IF NOT EXISTS world;
|
|
SET ROLE world_role;
|
|
|
|
CREATE TABLE IF NOT EXISTS world.kind_definitions (
|
|
kind_definition_id TEXT PRIMARY KEY,
|
|
kind_key TEXT NOT NULL,
|
|
revision BIGINT NOT NULL CHECK (revision > 0),
|
|
display_name TEXT NOT NULL,
|
|
parent_owner_namespace TEXT NOT NULL DEFAULT '',
|
|
parent_semantic_kind TEXT NOT NULL DEFAULT '',
|
|
parent_stable_id TEXT NOT NULL DEFAULT '',
|
|
parent_revision BIGINT,
|
|
lifecycle TEXT NOT NULL,
|
|
definition_digest TEXT NOT NULL,
|
|
recorded_at_unix_millis BIGINT NOT NULL CHECK (recorded_at_unix_millis > 0),
|
|
UNIQUE (kind_key, revision)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS world.objects (
|
|
world_object_id TEXT PRIMARY KEY,
|
|
principal_id TEXT,
|
|
kind_owner_namespace TEXT NOT NULL,
|
|
kind_semantic_kind TEXT NOT NULL,
|
|
kind_stable_id TEXT NOT NULL,
|
|
kind_revision BIGINT,
|
|
lifecycle TEXT NOT NULL,
|
|
created_at_unix_millis BIGINT NOT NULL CHECK (created_at_unix_millis > 0)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS world.aliases (
|
|
world_alias_id TEXT PRIMARY KEY,
|
|
principal_id TEXT,
|
|
world_object_id TEXT NOT NULL,
|
|
alias TEXT NOT NULL,
|
|
recorded_at_unix_millis BIGINT NOT NULL CHECK (recorded_at_unix_millis > 0)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS world.facet_definitions (
|
|
facet_definition_id TEXT PRIMARY KEY,
|
|
kind_key TEXT NOT NULL,
|
|
revision BIGINT NOT NULL CHECK (revision > 0),
|
|
facet_key TEXT NOT NULL,
|
|
value_type JSONB NOT NULL,
|
|
definition_digest TEXT NOT NULL,
|
|
recorded_at_unix_millis BIGINT NOT NULL CHECK (recorded_at_unix_millis > 0),
|
|
UNIQUE (kind_key, facet_key, revision)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS world.relation_definitions (
|
|
relation_definition_id TEXT PRIMARY KEY,
|
|
kind_key TEXT NOT NULL,
|
|
revision BIGINT NOT NULL CHECK (revision > 0),
|
|
relation_key TEXT NOT NULL,
|
|
target_kind_key TEXT NOT NULL,
|
|
definition_digest TEXT NOT NULL,
|
|
recorded_at_unix_millis BIGINT NOT NULL CHECK (recorded_at_unix_millis > 0),
|
|
UNIQUE (kind_key, relation_key, revision)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS world.identity_resolution_decisions (
|
|
resolution_decision_id TEXT PRIMARY KEY,
|
|
principal_id TEXT,
|
|
candidates JSONB NOT NULL,
|
|
decision TEXT NOT NULL,
|
|
evidence JSONB NOT NULL,
|
|
confidence_millis BIGINT NOT NULL CHECK (confidence_millis >= 0),
|
|
decided_at_unix_millis BIGINT NOT NULL CHECK (decided_at_unix_millis > 0),
|
|
revision BIGINT NOT NULL CHECK (revision > 0)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS world.lineage (
|
|
lineage_id TEXT PRIMARY KEY,
|
|
operation TEXT NOT NULL,
|
|
source_refs JSONB NOT NULL,
|
|
successor_refs JSONB NOT NULL,
|
|
recorded_at_unix_millis BIGINT NOT NULL CHECK (recorded_at_unix_millis > 0)
|
|
);
|
|
|
|
RESET ROLE;
|
|
COMMIT;
|