Create partners__partner table
CREATE TABLE partners__partner (
id uuid PRIMARY KEY,
code varchar(64) NOT NULL,
name varchar(256) NOT NULL,
type varchar(16) NOT NULL,
tax_id varchar(64),
website varchar(256),
email varchar(256),
phone varchar(64),
active boolean NOT NULL DEFAULT true,
ext jsonb NOT NULL DEFAULT '{}'::jsonb,
created_at timestamptz NOT NULL,
created_by varchar(128) NOT NULL,
updated_at timestamptz NOT NULL,
updated_by varchar(128) NOT NULL,
version bigint NOT NULL DEFAULT 0
);
CREATE UNIQUE INDEX partners__partner_code_uk ON partners__partner (code);
CREATE INDEX partners__partner_type_idx ON partners__partner (type);
CREATE INDEX partners__partner_active_idx ON partners__partner (active);
CREATE INDEX partners__partner_ext_gin ON partners__partner USING GIN (ext jsonb_path_ops);
DROP TABLE partners__partner;
Create partners__address table (FK to partners__partner)
CREATE TABLE partners__address (
id uuid PRIMARY KEY,
partner_id uuid NOT NULL REFERENCES partners__partner(id),
address_type varchar(16) NOT NULL,
line1 varchar(256) NOT NULL,
line2 varchar(256),
city varchar(128) NOT NULL,
region varchar(128),
postal_code varchar(32),
country_code varchar(2) NOT NULL,
is_primary boolean NOT NULL DEFAULT false,
created_at timestamptz NOT NULL,
created_by varchar(128) NOT NULL,
updated_at timestamptz NOT NULL,
updated_by varchar(128) NOT NULL,
version bigint NOT NULL DEFAULT 0
);
CREATE INDEX partners__address_partner_idx ON partners__address (partner_id);
CREATE INDEX partners__address_country_idx ON partners__address (country_code);
DROP TABLE partners__address;
Create partners__contact table (FK to partners__partner, PII-tagged)
CREATE TABLE partners__contact (
id uuid PRIMARY KEY,
partner_id uuid NOT NULL REFERENCES partners__partner(id),
full_name varchar(256) NOT NULL,
role varchar(128),
email varchar(256),
phone varchar(64),
active boolean NOT NULL DEFAULT true,
created_at timestamptz NOT NULL,
created_by varchar(128) NOT NULL,
updated_at timestamptz NOT NULL,
updated_by varchar(128) NOT NULL,
version bigint NOT NULL DEFAULT 0
);
CREATE INDEX partners__contact_partner_idx ON partners__contact (partner_id);
CREATE INDEX partners__contact_active_idx ON partners__contact (active);
DROP TABLE partners__contact;