Major PostgreSQL update

This commit is contained in:
Pinga 2024-01-05 15:55:57 +02:00
parent b7c78e7eb5
commit 0cec56475a
3 changed files with 78 additions and 105 deletions

View file

@ -1,7 +1,3 @@
CREATE SCHEMA registry;
CREATE SCHEMA registryTransaction;
CREATE SCHEMA registryAudit;
SET search_path TO registry, registryTransaction, registryAudit, public; SET search_path TO registry, registryTransaction, registryAudit, public;
CREATE TABLE registry.launch_phases ( CREATE TABLE registry.launch_phases (
@ -14,7 +10,6 @@ CREATE TABLE registry.launch_phases (
"start_date" TIMESTAMP(3) NOT NULL, "start_date" TIMESTAMP(3) NOT NULL,
"end_date" TIMESTAMP(3) DEFAULT NULL, "end_date" TIMESTAMP(3) DEFAULT NULL,
"lastupdate" timestamp(3), "lastupdate" timestamp(3),
FOREIGN KEY ("tld_id") REFERENCES registry.domain_tld("id"),
UNIQUE(phase_name) UNIQUE(phase_name)
); );
@ -34,7 +29,6 @@ CREATE TABLE registry.domain_tld (
"idn_table" varchar(255) NOT NULL, "idn_table" varchar(255) NOT NULL,
"secure" SMALLINT NOT NULL, "secure" SMALLINT NOT NULL,
"launch_phase_id" INTEGER DEFAULT NULL, "launch_phase_id" INTEGER DEFAULT NULL,
FOREIGN KEY (launch_phase_id) REFERENCES launch_phase(id),
unique ("tld") unique ("tld")
); );
@ -80,29 +74,26 @@ CREATE TABLE registry.allocation_tokens (
"tlds" JSON, "tlds" JSON,
"eppActions" JSON, "eppActions" JSON,
"reducePremium" BOOLEAN NOT NULL, "reducePremium" BOOLEAN NOT NULL,
"reduceYears" INT NOT NULL CHECK (reduceYears BETWEEN 0 AND 10), "reduceYears" INT NOT NULL CHECK ("reduceYears" BETWEEN 0 AND 10),
PRIMARY KEY (token) PRIMARY KEY (token)
); );
CREATE TABLE registry.error_log ( CREATE TABLE registry.error_log (
"id" INT(11) NOT NULL AUTO_INCREMENT, "id" SERIAL PRIMARY KEY,
"registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL,, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL,
"log" TEXT NOT NULL, "log" TEXT NOT NULL,
"date" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, "date" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP
primary key ("id"),
FOREIGN KEY (registrar_id) REFERENCES registrar(id)
); );
CREATE TABLE registry.reserved_domain_names ( CREATE TABLE registry.reserved_domain_names (
"id" serial8, "id" SERIAL PRIMARY KEY,
"name" varchar(68) NOT NULL, "name" varchar(68) NOT NULL,
"type" varchar CHECK ("type" IN ( 'reserved','restricted' )) NOT NULL default 'reserved', "type" varchar CHECK ("type" IN ( 'reserved','restricted' )) NOT NULL default 'reserved',
primary key ("id"),
unique ("name") unique ("name")
); );
CREATE TABLE registry.registrar ( CREATE TABLE registry.registrar (
"id" serial8, "id" SERIAL PRIMARY KEY,
"name" varchar(255) NOT NULL, "name" varchar(255) NOT NULL,
"iana_id" int DEFAULT NULL, "iana_id" int DEFAULT NULL,
"clid" varchar(16) NOT NULL, "clid" varchar(16) NOT NULL,
@ -122,9 +113,8 @@ CREATE TABLE registry.registrar (
"vat_number" VARCHAR(30) DEFAULT NULL, "vat_number" VARCHAR(30) DEFAULT NULL,
"crdate" timestamp(3) without time zone NOT NULL, "crdate" timestamp(3) without time zone NOT NULL,
"lastupdate" timestamp(3), "lastupdate" timestamp(3),
primary key ("id"), unique ("clid"),
unique ("clid") , unique ("prefix"),
unique ("prefix") ,
unique ("email") unique ("email")
); );
@ -140,15 +130,14 @@ CREATE TRIGGER add_current_date_to_registrar BEFORE UPDATE ON registry.registrar
update_registrar(); update_registrar();
CREATE TABLE registry.registrar_whitelist ( CREATE TABLE registry.registrar_whitelist (
"id" serial8, "id" SERIAL PRIMARY KEY,
"registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL,
"addr" varchar(45) NOT NULL, "addr" varchar(45) NOT NULL,
primary key ("id"),
unique ("registrar_id", "addr") unique ("registrar_id", "addr")
); );
CREATE TABLE registry.registrar_contact ( CREATE TABLE registry.registrar_contact (
"id" serial8, "id" SERIAL PRIMARY KEY,
"registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL,
"type" varchar CHECK ("type" IN ( 'owner','admin','billing','tech','abuse' )) NOT NULL default 'admin', "type" varchar CHECK ("type" IN ( 'owner','admin','billing','tech','abuse' )) NOT NULL default 'admin',
"title" varchar(255) default NULL, "title" varchar(255) default NULL,
@ -166,7 +155,6 @@ CREATE TABLE registry.registrar_contact (
"voice" varchar(17) default NULL, "voice" varchar(17) default NULL,
"fax" varchar(17) default NULL, "fax" varchar(17) default NULL,
"email" varchar(255) NOT NULL, "email" varchar(255) NOT NULL,
primary key ("id"),
unique ("registrar_id", "type") unique ("registrar_id", "type")
); );
@ -178,7 +166,7 @@ CREATE TABLE registry.registrar_ote (
); );
CREATE TABLE registry.poll ( CREATE TABLE registry.poll (
"id" serial8, "id" SERIAL PRIMARY KEY,
"registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL,
"qdate" timestamp(3) without time zone NOT NULL, "qdate" timestamp(3) without time zone NOT NULL,
"msg" text default NULL, "msg" text default NULL,
@ -194,21 +182,19 @@ CREATE TABLE registry.poll (
"creditlimit" decimal(12,2) default '0.00', "creditlimit" decimal(12,2) default '0.00',
"creditthreshold" decimal(12,2) default '0.00', "creditthreshold" decimal(12,2) default '0.00',
"creditthresholdtype" varchar CHECK ("creditthresholdtype" IN ( 'FIXED','PERCENT' )), "creditthresholdtype" varchar CHECK ("creditthresholdtype" IN ( 'FIXED','PERCENT' )),
"availablecredit" decimal(12,2) default '0.00', "availablecredit" decimal(12,2) default '0.00'
primary key ("id")
); );
CREATE TABLE registry.payment_history ( CREATE TABLE registry.payment_history (
"id" serial8, "id" SERIAL PRIMARY KEY,
"registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL,
"date" timestamp(3) without time zone NOT NULL, "date" timestamp(3) without time zone NOT NULL,
"description" text NOT NULL, "description" text NOT NULL,
"amount" decimal(12,2) NOT NULL, "amount" decimal(12,2) NOT NULL
primary key ("id")
); );
CREATE TABLE registry.statement ( CREATE TABLE registry.statement (
"id" serial8, "id" SERIAL PRIMARY KEY,
"registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL,
"date" timestamp(3) without time zone NOT NULL, "date" timestamp(3) without time zone NOT NULL,
"command" varchar CHECK ("command" IN ( 'create','renew','transfer','restore','autoRenew' )) NOT NULL default 'create', "command" varchar CHECK ("command" IN ( 'create','renew','transfer','restore','autoRenew' )) NOT NULL default 'create',
@ -216,8 +202,7 @@ CREATE TABLE registry.statement (
"length_in_months" smallint CHECK ("length_in_months" >= 0) NOT NULL, "length_in_months" smallint CHECK ("length_in_months" >= 0) NOT NULL,
"fromS" timestamp(3) without time zone NOT NULL, "fromS" timestamp(3) without time zone NOT NULL,
"toS" timestamp(3) without time zone NOT NULL, "toS" timestamp(3) without time zone NOT NULL,
"amount" decimal(12,2) NOT NULL, "amount" decimal(12,2) NOT NULL
primary key ("id")
); );
CREATE TABLE registry.invoices ( CREATE TABLE registry.invoices (
@ -231,13 +216,11 @@ CREATE TABLE registry.invoices (
"payment_status" VARCHAR(10) DEFAULT 'unpaid' CHECK (payment_status IN ('unpaid', 'paid', 'overdue', 'cancelled')), "payment_status" VARCHAR(10) DEFAULT 'unpaid' CHECK (payment_status IN ('unpaid', 'paid', 'overdue', 'cancelled')),
"notes" TEXT DEFAULT NULL, "notes" TEXT DEFAULT NULL,
"created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, "created_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP
FOREIGN KEY (registrar_id) REFERENCES registrar(id),
FOREIGN KEY (billing_contact_id) REFERENCES registrar_contact(id)
); );
CREATE TABLE registry.contact ( CREATE TABLE registry.contact (
"id" serial8, "id" SERIAL PRIMARY KEY,
"identifier" varchar(255) NOT NULL, "identifier" varchar(255) NOT NULL,
"voice" varchar(17) default NULL, "voice" varchar(17) default NULL,
"voice_x" int default NULL, "voice_x" int default NULL,
@ -260,12 +243,11 @@ CREATE TABLE registry.contact (
"disclose_voice" varchar CHECK ("disclose_voice" IN ( '0','1' )) NOT NULL default '1', "disclose_voice" varchar CHECK ("disclose_voice" IN ( '0','1' )) NOT NULL default '1',
"disclose_fax" varchar CHECK ("disclose_fax" IN ( '0','1' )) NOT NULL default '1', "disclose_fax" varchar CHECK ("disclose_fax" IN ( '0','1' )) NOT NULL default '1',
"disclose_email" varchar CHECK ("disclose_email" IN ( '0','1' )) NOT NULL default '1', "disclose_email" varchar CHECK ("disclose_email" IN ( '0','1' )) NOT NULL default '1',
primary key ("id"),
unique ("identifier") unique ("identifier")
); );
CREATE TABLE registry.contact_postalinfo ( CREATE TABLE registry.contact_postalinfo (
"id" serial8, "id" SERIAL PRIMARY KEY,
"contact_id" int CHECK ("contact_id" >= 0) NOT NULL, "contact_id" int CHECK ("contact_id" >= 0) NOT NULL,
"type" varchar CHECK ("type" IN ( 'int','loc' )) NOT NULL default 'int', "type" varchar CHECK ("type" IN ( 'int','loc' )) NOT NULL default 'int',
"name" varchar(255) NOT NULL, "name" varchar(255) NOT NULL,
@ -283,29 +265,26 @@ CREATE TABLE registry.contact_postalinfo (
"disclose_org_loc" varchar CHECK ("disclose_org_loc" IN ( '0','1' )) NOT NULL default '1', "disclose_org_loc" varchar CHECK ("disclose_org_loc" IN ( '0','1' )) NOT NULL default '1',
"disclose_addr_int" varchar CHECK ("disclose_addr_int" IN ( '0','1' )) NOT NULL default '1', "disclose_addr_int" varchar CHECK ("disclose_addr_int" IN ( '0','1' )) NOT NULL default '1',
"disclose_addr_loc" varchar CHECK ("disclose_addr_loc" IN ( '0','1' )) NOT NULL default '1', "disclose_addr_loc" varchar CHECK ("disclose_addr_loc" IN ( '0','1' )) NOT NULL default '1',
primary key ("id"),
unique ("contact_id", "type") unique ("contact_id", "type")
); );
CREATE TABLE registry.contact_authinfo ( CREATE TABLE registry.contact_authinfo (
"id" serial8, "id" SERIAL PRIMARY KEY,
"contact_id" int CHECK ("contact_id" >= 0) NOT NULL, "contact_id" int CHECK ("contact_id" >= 0) NOT NULL,
"authtype" varchar CHECK ("authtype" IN ( 'pw','ext' )) NOT NULL default 'pw', "authtype" varchar CHECK ("authtype" IN ( 'pw','ext' )) NOT NULL default 'pw',
"authinfo" varchar(64) NOT NULL, "authinfo" varchar(64) NOT NULL,
primary key ("id"),
unique ("contact_id") unique ("contact_id")
); );
CREATE TABLE registry.contact_status ( CREATE TABLE registry.contact_status (
"id" serial8, "id" SERIAL PRIMARY KEY,
"contact_id" int CHECK ("contact_id" >= 0) NOT NULL, "contact_id" int CHECK ("contact_id" >= 0) NOT NULL,
"status" varchar CHECK ("status" IN ( 'clientDeleteProhibited','clientTransferProhibited','clientUpdateProhibited','linked','ok','pendingCreate','pendingDelete','pendingTransfer','pendingUpdate','serverDeleteProhibited','serverTransferProhibited','serverUpdateProhibited' )) NOT NULL default 'ok', "status" varchar CHECK ("status" IN ( 'clientDeleteProhibited','clientTransferProhibited','clientUpdateProhibited','linked','ok','pendingCreate','pendingDelete','pendingTransfer','pendingUpdate','serverDeleteProhibited','serverTransferProhibited','serverUpdateProhibited' )) NOT NULL default 'ok',
primary key ("id"),
unique ("contact_id", "status") unique ("contact_id", "status")
); );
CREATE TABLE registry.domain ( CREATE TABLE registry.domain (
"id" serial8, "id" SERIAL PRIMARY KEY,
"name" varchar(68) NOT NULL, "name" varchar(68) NOT NULL,
"tldid" int CHECK ("tldid" >= 0) NOT NULL, "tldid" int CHECK ("tldid" >= 0) NOT NULL,
"registrant" int CHECK ("registrant" >= 0) default NULL, "registrant" int CHECK ("registrant" >= 0) default NULL,
@ -349,12 +328,11 @@ CREATE TABLE registry.domain (
"tm_notice_validator" VARCHAR(30) DEFAULT NULL, "tm_notice_validator" VARCHAR(30) DEFAULT NULL,
"tm_smd_id" TEXT DEFAULT NULL, "tm_smd_id" TEXT DEFAULT NULL,
"tm_phase" text DEFAULT 'NONE'::text NOT NULL, "tm_phase" text DEFAULT 'NONE'::text NOT NULL,
primary key ("id"),
unique ("name") unique ("name")
); );
CREATE TABLE registry.application ( CREATE TABLE registry.application (
"id" serial8, "id" SERIAL PRIMARY KEY,
"name" varchar(68) NOT NULL, "name" varchar(68) NOT NULL,
"tldid" int CHECK ("tldid" >= 0) NOT NULL, "tldid" int CHECK ("tldid" >= 0) NOT NULL,
"registrant" int CHECK ("registrant" >= 0) default NULL, "registrant" int CHECK ("registrant" >= 0) default NULL,
@ -384,55 +362,49 @@ CREATE TABLE registry.application (
"tm_notice_id" VARCHAR(150) DEFAULT NULL, "tm_notice_id" VARCHAR(150) DEFAULT NULL,
"tm_notice_validator" VARCHAR(30) DEFAULT NULL, "tm_notice_validator" VARCHAR(30) DEFAULT NULL,
"tm_smd_id" TEXT DEFAULT NULL, "tm_smd_id" TEXT DEFAULT NULL,
"tm_phase" text DEFAULT 'NONE'::text NOT NULL, "tm_phase" text DEFAULT 'NONE'::text NOT NULL
primary key ("id")
); );
CREATE TABLE registry.domain_contact_map ( CREATE TABLE registry.domain_contact_map (
"id" serial8, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"contact_id" int CHECK ("contact_id" >= 0) NOT NULL, "contact_id" int CHECK ("contact_id" >= 0) NOT NULL,
"type" varchar CHECK ("type" IN ( 'admin','billing','tech' )) NOT NULL default 'admin', "type" varchar CHECK ("type" IN ( 'admin','billing','tech' )) NOT NULL default 'admin',
primary key ("id"),
unique ("domain_id", "contact_id", "type") unique ("domain_id", "contact_id", "type")
); );
CREATE TABLE registry.application_contact_map ( CREATE TABLE registry.application_contact_map (
"id" serial8, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"contact_id" int CHECK ("contact_id" >= 0) NOT NULL, "contact_id" int CHECK ("contact_id" >= 0) NOT NULL,
"type" varchar CHECK ("type" IN ( 'admin','billing','tech' )) NOT NULL default 'admin', "type" varchar CHECK ("type" IN ( 'admin','billing','tech' )) NOT NULL default 'admin',
primary key ("id"),
unique ("domain_id", "contact_id", "type") unique ("domain_id", "contact_id", "type")
); );
CREATE TABLE registry.domain_authinfo ( CREATE TABLE registry.domain_authinfo (
"id" serial8, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"authtype" varchar CHECK ("authtype" IN ( 'pw','ext' )) NOT NULL default 'pw', "authtype" varchar CHECK ("authtype" IN ( 'pw','ext' )) NOT NULL default 'pw',
"authinfo" varchar(64) NOT NULL, "authinfo" varchar(64) NOT NULL,
primary key ("id"),
unique ("domain_id") unique ("domain_id")
); );
CREATE TABLE registry.domain_status ( CREATE TABLE registry.domain_status (
"id" serial8, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"status" varchar CHECK ("status" IN ( 'clientDeleteProhibited','clientHold','clientRenewProhibited','clientTransferProhibited','clientUpdateProhibited','inactive','ok','pendingCreate','pendingDelete','pendingRenew','pendingTransfer','pendingUpdate','serverDeleteProhibited','serverHold','serverRenewProhibited','serverTransferProhibited','serverUpdateProhibited' )) NOT NULL default 'ok', "status" varchar CHECK ("status" IN ( 'clientDeleteProhibited','clientHold','clientRenewProhibited','clientTransferProhibited','clientUpdateProhibited','inactive','ok','pendingCreate','pendingDelete','pendingRenew','pendingTransfer','pendingUpdate','serverDeleteProhibited','serverHold','serverRenewProhibited','serverTransferProhibited','serverUpdateProhibited' )) NOT NULL default 'ok',
primary key ("id"),
unique ("domain_id", "status") unique ("domain_id", "status")
); );
CREATE TABLE registry.application_status ( CREATE TABLE registry.application_status (
"id" serial8, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"status" varchar CHECK ("status" IN ( 'pendingValidation','validated','invalid','pendingAllocation','allocated','rejected','custom' )) NOT NULL default 'pendingValidation', "status" varchar CHECK ("status" IN ( 'pendingValidation','validated','invalid','pendingAllocation','allocated','rejected','custom' )) NOT NULL default 'pendingValidation',
primary key ("id"),
unique ("domain_id", "status") unique ("domain_id", "status")
); );
CREATE TABLE registry.secdns ( CREATE TABLE registry.secdns (
"id" serial8, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"maxsiglife" int CHECK ("maxsiglife" >= 0) default '604800', "maxsiglife" int CHECK ("maxsiglife" >= 0) default '604800',
"interface" varchar CHECK ("interface" IN ( 'dsData','keyData' )) NOT NULL default 'dsData', "interface" varchar CHECK ("interface" IN ( 'dsData','keyData' )) NOT NULL default 'dsData',
@ -444,12 +416,11 @@ CREATE TABLE registry.secdns (
"protocol" smallint CHECK ("protocol" >= 0) default NULL, "protocol" smallint CHECK ("protocol" >= 0) default NULL,
"keydata_alg" smallint CHECK ("keydata_alg" >= 0) default NULL, "keydata_alg" smallint CHECK ("keydata_alg" >= 0) default NULL,
"pubkey" varchar(255) default NULL, "pubkey" varchar(255) default NULL,
primary key ("id"),
unique ("domain_id", "digest") unique ("domain_id", "digest")
); );
CREATE TABLE registry.host ( CREATE TABLE registry.host (
"id" serial8, "id" SERIAL PRIMARY KEY,
"name" varchar(255) NOT NULL, "name" varchar(255) NOT NULL,
"domain_id" int CHECK ("domain_id" >= 0) default NULL, "domain_id" int CHECK ("domain_id" >= 0) default NULL,
"clid" int CHECK ("clid" >= 0) NOT NULL, "clid" int CHECK ("clid" >= 0) NOT NULL,
@ -458,45 +429,40 @@ CREATE TABLE registry.host (
"upid" int CHECK ("upid" >= 0) default NULL, "upid" int CHECK ("upid" >= 0) default NULL,
"lastupdate" timestamp(3) without time zone default NULL, "lastupdate" timestamp(3) without time zone default NULL,
"trdate" timestamp(3) without time zone default NULL, "trdate" timestamp(3) without time zone default NULL,
primary key ("id"),
unique ("name") unique ("name")
); );
CREATE TABLE registry.domain_host_map ( CREATE TABLE registry.domain_host_map (
"id" serial8, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"host_id" int CHECK ("host_id" >= 0) NOT NULL, "host_id" int CHECK ("host_id" >= 0) NOT NULL,
primary key ("id"),
unique ("domain_id", "host_id") unique ("domain_id", "host_id")
); );
CREATE TABLE registry.application_host_map ( CREATE TABLE registry.application_host_map (
"id" serial8, "id" SERIAL PRIMARY KEY,
"domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL,
"host_id" int CHECK ("host_id" >= 0) NOT NULL, "host_id" int CHECK ("host_id" >= 0) NOT NULL,
primary key ("id"),
unique ("domain_id", "host_id") unique ("domain_id", "host_id")
); );
CREATE TABLE registry.host_addr ( CREATE TABLE registry.host_addr (
"id" serial8, "id" SERIAL PRIMARY KEY,
"host_id" int CHECK ("host_id" >= 0) NOT NULL, "host_id" int CHECK ("host_id" >= 0) NOT NULL,
"addr" varchar(45) NOT NULL, "addr" varchar(45) NOT NULL,
"ip" varchar CHECK ("ip" IN ( 'v4','v6' )) NOT NULL default 'v4', "ip" varchar CHECK ("ip" IN ( 'v4','v6' )) NOT NULL default 'v4',
primary key ("id"),
unique ("host_id", "addr", "ip") unique ("host_id", "addr", "ip")
); );
CREATE TABLE registry.host_status ( CREATE TABLE registry.host_status (
"id" serial8, "id" SERIAL PRIMARY KEY,
"host_id" int CHECK ("host_id" >= 0) NOT NULL, "host_id" int CHECK ("host_id" >= 0) NOT NULL,
"status" varchar CHECK ("status" IN ( 'clientDeleteProhibited','clientUpdateProhibited','linked','ok','pendingCreate','pendingDelete','pendingTransfer','pendingUpdate','serverDeleteProhibited','serverUpdateProhibited' )) NOT NULL default 'ok', "status" varchar CHECK ("status" IN ( 'clientDeleteProhibited','clientUpdateProhibited','linked','ok','pendingCreate','pendingDelete','pendingTransfer','pendingUpdate','serverDeleteProhibited','serverUpdateProhibited' )) NOT NULL default 'ok',
primary key ("id"),
unique ("host_id", "status") unique ("host_id", "status")
); );
CREATE TABLE registry.domain_auto_approve_transfer ( CREATE TABLE registry.domain_auto_approve_transfer (
"id" serial8, "id" SERIAL PRIMARY KEY,
"name" varchar(68) NOT NULL, "name" varchar(68) NOT NULL,
"registrant" int CHECK ("registrant" >= 0) default NULL, "registrant" int CHECK ("registrant" >= 0) default NULL,
"crdate" timestamp(3) without time zone NOT NULL, "crdate" timestamp(3) without time zone NOT NULL,
@ -511,12 +477,11 @@ CREATE TABLE registry.domain_auto_approve_transfer (
"redate" timestamp(3) without time zone default NULL, "redate" timestamp(3) without time zone default NULL,
"acid" int CHECK ("acid" >= 0) default NULL, "acid" int CHECK ("acid" >= 0) default NULL,
"acdate" timestamp(3) without time zone default NULL, "acdate" timestamp(3) without time zone default NULL,
"transfer_exdate" timestamp(3) without time zone default NULL, "transfer_exdate" timestamp(3) without time zone default NULL
primary key ("id")
); );
CREATE TABLE registry.contact_auto_approve_transfer ( CREATE TABLE registry.contact_auto_approve_transfer (
"id" serial8, "id" SERIAL PRIMARY KEY,
"identifier" varchar(255) NOT NULL, "identifier" varchar(255) NOT NULL,
"voice" varchar(17) default NULL, "voice" varchar(17) default NULL,
"voice_x" int default NULL, "voice_x" int default NULL,
@ -538,12 +503,11 @@ CREATE TABLE registry.contact_auto_approve_transfer (
"acdate" timestamp(3) without time zone default NULL, "acdate" timestamp(3) without time zone default NULL,
"disclose_voice" varchar CHECK ("disclose_voice" IN ( '0','1' )) NOT NULL default '1', "disclose_voice" varchar CHECK ("disclose_voice" IN ( '0','1' )) NOT NULL default '1',
"disclose_fax" varchar CHECK ("disclose_fax" IN ( '0','1' )) NOT NULL default '1', "disclose_fax" varchar CHECK ("disclose_fax" IN ( '0','1' )) NOT NULL default '1',
"disclose_email" varchar CHECK ("disclose_email" IN ( '0','1' )) NOT NULL default '1', "disclose_email" varchar CHECK ("disclose_email" IN ( '0','1' )) NOT NULL default '1'
primary key ("id")
); );
CREATE TABLE registry.statistics ( CREATE TABLE registry.statistics (
"id" serial8, "id" SERIAL PRIMARY KEY,
"date" date NOT NULL, "date" date NOT NULL,
"total_domains" int CHECK ("total_domains" >= 0) NOT NULL DEFAULT '0', "total_domains" int CHECK ("total_domains" >= 0) NOT NULL DEFAULT '0',
"created_domains" int CHECK ("created_domains" >= 0) NOT NULL DEFAULT '0', "created_domains" int CHECK ("created_domains" >= 0) NOT NULL DEFAULT '0',
@ -551,7 +515,6 @@ CREATE TABLE registry.statistics (
"transfered_domains" int CHECK ("transfered_domains" >= 0) NOT NULL DEFAULT '0', "transfered_domains" int CHECK ("transfered_domains" >= 0) NOT NULL DEFAULT '0',
"deleted_domains" int CHECK ("deleted_domains" >= 0) NOT NULL DEFAULT '0', "deleted_domains" int CHECK ("deleted_domains" >= 0) NOT NULL DEFAULT '0',
"restored_domains" int CHECK ("restored_domains" >= 0) NOT NULL DEFAULT '0', "restored_domains" int CHECK ("restored_domains" >= 0) NOT NULL DEFAULT '0',
primary key ("id"),
unique ("date") unique ("date")
); );
@ -570,19 +533,18 @@ CREATE TABLE IF NOT EXISTS registry.users (
"tfa_secret" VARCHAR(32), "tfa_secret" VARCHAR(32),
"tfa_enabled" BOOLEAN DEFAULT false, "tfa_enabled" BOOLEAN DEFAULT false,
"auth_method" VARCHAR(255) DEFAULT 'password', "auth_method" VARCHAR(255) DEFAULT 'password',
"backup_codes" TEXT, "backup_codes" TEXT
); );
CREATE TABLE IF NOT EXISTS registry.users_audit ( CREATE TABLE IF NOT EXISTS registry.users_audit (
"user_id" SERIAL PRIMARY KEY CHECK ("id" >= 0), "user_id" SERIAL PRIMARY KEY CHECK ("user_id" >= 0),
"user_event" VARCHAR(255) NOT NULL, "user_event" VARCHAR(255) NOT NULL,
"user_resource" VARCHAR(255) DEFAULT NULL, "user_resource" VARCHAR(255) DEFAULT NULL,
"user_agent" VARCHAR(255) NOT NULL, "user_agent" VARCHAR(255) NOT NULL,
"user_ip" VARCHAR(45) NOT NULL, "user_ip" VARCHAR(45) NOT NULL,
"user_location" VARCHAR(45) DEFAULT NULL, "user_location" VARCHAR(45) DEFAULT NULL,
"event_time" TIMESTAMP(3) NOT NULL, "event_time" TIMESTAMP(3) NOT NULL,
"user_data" JSONB DEFAULT NULL, "user_data" JSONB DEFAULT NULL
CONSTRAINT pk_users_audit PRIMARY KEY (user_id)
); );
CREATE INDEX idx_user_event ON registry.users_audit (user_event); CREATE INDEX idx_user_event ON registry.users_audit (user_event);
CREATE INDEX idx_user_ip ON registry.users_audit (user_ip); CREATE INDEX idx_user_ip ON registry.users_audit (user_ip);
@ -633,21 +595,16 @@ CREATE TABLE IF NOT EXISTS registry.users_webauthn (
"sign_count" BIGINT NOT NULL, "sign_count" BIGINT NOT NULL,
"user_agent" TEXT, "user_agent" TEXT,
"created_at" TIMESTAMP(3) WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, "created_at" TIMESTAMP(3) WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
"last_used_at" TIMESTAMP(3) WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, "last_used_at" TIMESTAMP(3) WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
FOREIGN KEY (user_id) REFERENCES users(id)
); );
CREATE TABLE IF NOT EXISTS registry.registrar_users ( CREATE TABLE IF NOT EXISTS registry.registrar_users (
"registrar_id" int NOT NULL, "registrar_id" int NOT NULL PRIMARY KEY,
"user_id" int NOT NULL, "user_id" int NOT NULL
"PRIMARY KEY" (registrar_id, user_id), );
"FOREIGN KEY" (registrar_id) REFERENCES registrar(id) ON DELETE CASCADE,
"FOREIGN KEY" (user_id) REFERENCES users(id) ON DELETE CASCADE
) WITH (OIDS=FALSE);
COMMENT ON TABLE registrar_users IS 'Linking Registrars with Panel Users';
CREATE TABLE registry.urs_actions ( CREATE TABLE registry.urs_actions (
"id" serial8 PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"domain_name" VARCHAR(255) NOT NULL, "domain_name" VARCHAR(255) NOT NULL,
"urs_provider" VARCHAR(255) NOT NULL, "urs_provider" VARCHAR(255) NOT NULL,
"action_date" DATE NOT NULL, "action_date" DATE NOT NULL,
@ -660,7 +617,7 @@ CREATE TYPE status_enum AS ENUM ('Deposited', 'Retrieved', 'Failed');
CREATE TYPE verification_status_enum AS ENUM ('Verified', 'Failed', 'Pending'); CREATE TYPE verification_status_enum AS ENUM ('Verified', 'Failed', 'Pending');
CREATE TABLE registry.rde_escrow_deposits ( CREATE TABLE registry.rde_escrow_deposits (
"id" serial8 PRIMARY KEY, "id" SERIAL PRIMARY KEY,
"deposit_id" VARCHAR(255) UNIQUE, -- Unique deposit identifier "deposit_id" VARCHAR(255) UNIQUE, -- Unique deposit identifier
"deposit_date" DATE NOT NULL, "deposit_date" DATE NOT NULL,
"revision" INTEGER NOT NULL DEFAULT 1, "revision" INTEGER NOT NULL DEFAULT 1,
@ -710,8 +667,7 @@ CREATE TABLE registry.promotion_pricing (
"created_by" varchar(255), "created_by" varchar(255),
"created_at" timestamp(3) without time zone, "created_at" timestamp(3) without time zone,
"updated_by" varchar(255), "updated_by" varchar(255),
"updated_at" timestamp(3) without time zone, "updated_at" timestamp(3) without time zone
FOREIGN KEY ("tld_id") REFERENCES registry.domain_tld("id")
); );
CREATE INDEX idx_promotion_pricing_tld_id ON promotion_pricing (tld_id); CREATE INDEX idx_promotion_pricing_tld_id ON promotion_pricing (tld_id);
@ -727,9 +683,7 @@ CREATE TABLE registry.premium_domain_pricing (
"id" serial8 PRIMARY KEY, "id" serial8 PRIMARY KEY,
"domain_name" VARCHAR(255) NOT NULL, "domain_name" VARCHAR(255) NOT NULL,
"tld_id" INT CHECK ("tld_id" >= 0) NOT NULL, "tld_id" INT CHECK ("tld_id" >= 0) NOT NULL,
"category_id" INT, "category_id" INT
FOREIGN KEY ("tld_id") REFERENCES registry.domain_tld("id"),
FOREIGN KEY ("category_id") REFERENCES registry.premium_domain_categories("category_id")
); );
-- Create custom types for status and priority -- Create custom types for status and priority
@ -756,9 +710,7 @@ CREATE TABLE registry.support_tickets (
"relevant_urls" TEXT DEFAULT NULL, "relevant_urls" TEXT DEFAULT NULL,
"date_of_incident" DATE DEFAULT NULL, "date_of_incident" DATE DEFAULT NULL,
"date_created" TIMESTAMP(3) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP, "date_created" TIMESTAMP(3) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
"last_updated" TIMESTAMP(3) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP, "last_updated" TIMESTAMP(3) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP
FOREIGN KEY (user_id) REFERENCES registry.users(id),
FOREIGN KEY (category_id) REFERENCES registry.ticket_categories(id)
); );
CREATE TABLE registry.ticket_responses ( CREATE TABLE registry.ticket_responses (
@ -766,8 +718,7 @@ CREATE TABLE registry.ticket_responses (
"ticket_id" INTEGER NOT NULL, "ticket_id" INTEGER NOT NULL,
"responder_id" INTEGER NOT NULL, "responder_id" INTEGER NOT NULL,
"response" TEXT NOT NULL, "response" TEXT NOT NULL,
"date_created" TIMESTAMP(3) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP, "date_created" TIMESTAMP(3) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP
FOREIGN KEY (ticket_id) REFERENCES support_tickets(id)
); );
CREATE TABLE registry.tmch_claims ( CREATE TABLE registry.tmch_claims (
@ -855,9 +806,17 @@ INSERT INTO registry.settings (name, value) VALUES
('whois_server', 'whois.example.com'), ('whois_server', 'whois.example.com'),
('rdap_server', 'https://rdap.example.com'); ('rdap_server', 'https://rdap.example.com');
ALTER TABLE registry.domain_tld ADD FOREIGN KEY (launch_phase_id) REFERENCES registry.launch_phases(id);
ALTER TABLE registry.launch_phases ADD FOREIGN KEY (tld_id) REFERENCES registry.domain_tld(id);
ALTER TABLE registry.error_log ADD FOREIGN KEY (registrar_id) REFERENCES registry.registrar(id);
ALTER TABLE registry.invoices ADD FOREIGN KEY (registrar_id) REFERENCES registry.registrar(id);
ALTER TABLE registry.invoices ADD FOREIGN KEY (billing_contact_id) REFERENCES registry.registrar_contact(id);
ALTER TABLE registry.users_webauthn ADD FOREIGN KEY (user_id) REFERENCES users(id);
ALTER TABLE registry.domain_price ADD FOREIGN KEY ("tldid") REFERENCES registry.domain_tld ("id"); ALTER TABLE registry.domain_price ADD FOREIGN KEY ("tldid") REFERENCES registry.domain_tld ("id");
ALTER TABLE registry.domain_restore_price ADD FOREIGN KEY ("tldid") REFERENCES registry.domain_tld ("id"); ALTER TABLE registry.domain_restore_price ADD FOREIGN KEY ("tldid") REFERENCES registry.domain_tld ("id");
ALTER TABLE registry.registrar_whitelist ADD FOREIGN KEY ("registrar_id") REFERENCES registry.registrar ("id"); ALTER TABLE registry.registrar_whitelist ADD FOREIGN KEY ("registrar_id") REFERENCES registry.registrar ("id");
ALTER TABLE registry.registrar_users ADD FOREIGN KEY (registrar_id) REFERENCES registry.registrar(id) ON DELETE CASCADE;
ALTER TABLE registry.registrar_users ADD FOREIGN KEY (user_id) REFERENCES registry.users(id) ON DELETE CASCADE;
ALTER TABLE registry.registrar_contact ADD FOREIGN KEY ("registrar_id") REFERENCES registry.registrar ("id"); ALTER TABLE registry.registrar_contact ADD FOREIGN KEY ("registrar_id") REFERENCES registry.registrar ("id");
ALTER TABLE registry.poll ADD FOREIGN KEY ("registrar_id") REFERENCES registry.registrar ("id"); ALTER TABLE registry.poll ADD FOREIGN KEY ("registrar_id") REFERENCES registry.registrar ("id");
ALTER TABLE registry.payment_history ADD FOREIGN KEY ("registrar_id") REFERENCES registry.registrar ("id"); ALTER TABLE registry.payment_history ADD FOREIGN KEY ("registrar_id") REFERENCES registry.registrar ("id");
@ -893,7 +852,13 @@ ALTER TABLE registry.application_host_map ADD FOREIGN KEY ("domain_id") REFERENC
ALTER TABLE registry.application_host_map ADD FOREIGN KEY ("host_id") REFERENCES registry.host ("id"); ALTER TABLE registry.application_host_map ADD FOREIGN KEY ("host_id") REFERENCES registry.host ("id");
ALTER TABLE registry.host_addr ADD FOREIGN KEY ("host_id") REFERENCES registry.host ("id"); ALTER TABLE registry.host_addr ADD FOREIGN KEY ("host_id") REFERENCES registry.host ("id");
ALTER TABLE registry.host_status ADD FOREIGN KEY ("host_id") REFERENCES registry.host ("id"); ALTER TABLE registry.host_status ADD FOREIGN KEY ("host_id") REFERENCES registry.host ("id");
ALTER TABLE registry.promotion_pricing ADD FOREIGN KEY ("tld_id") REFERENCES registry.domain_tld("id");
ALTER TABLE registry.premium_domain_pricing ADD FOREIGN KEY ("tld_id") REFERENCES registry.domain_tld("id");
ALTER TABLE registry.premium_domain_pricing ADD FOREIGN KEY ("category_id") REFERENCES registry.premium_domain_categories("category_id");
ALTER TABLE registry.support_tickets ADD FOREIGN KEY ("user_id") REFERENCES registry.users(id);
ALTER TABLE registry.support_tickets ADD FOREIGN KEY ("category_id") REFERENCES registry.ticket_categories(id);
ALTER TABLE registry.ticket_responses ADD FOREIGN KEY ("ticket_id") REFERENCES registry.support_tickets(id);
CREATE TABLE registryTransaction.transaction_identifier ( CREATE TABLE registryTransaction.transaction_identifier (
id BIGSERIAL PRIMARY KEY, id BIGSERIAL PRIMARY KEY,
registrar_id INT NOT NULL, registrar_id INT NOT NULL,

View file

@ -125,7 +125,9 @@ Now you need to update PostgreSQL Admin User Password:
sudo -u postgres psql sudo -u postgres psql
postgres=# postgres=#
postgres=# ALTER USER postgres PASSWORD 'demoPassword'; postgres=# ALTER USER postgres PASSWORD 'demoPassword';
postgres=# CREATE DATABASE registry; postgres=# CREATE SCHEMA registry;
postgres=# CREATE SCHEMA registryTransaction;
postgres=# CREATE SCHEMA registryAudit;
postgres=# \q postgres=# \q
``` ```

View file

@ -166,7 +166,13 @@ EOF
psql --version psql --version
echo "Configuring PostgreSQL..." echo "Configuring PostgreSQL..."
sudo -u postgres psql -c "ALTER USER postgres PASSWORD '$DB_PASSWORD';" sudo -u postgres psql -c "ALTER USER postgres PASSWORD '$DB_PASSWORD';"
sudo -u postgres psql -c "CREATE DATABASE registry;" sudo -u postgres psql -c "CREATE SCHEMA registry;"
sudo -u postgres psql -c "CREATE SCHEMA registryTransaction;"
sudo -u postgres psql -c "CREATE SCHEMA registryAudit;"
echo "Importing SQL file into PostgreSQL..."
psql -U postgres -d postgres -f /opt/registry/database/registry.postgres.sql
echo "SQL import completed."
fi fi
mkdir /usr/share/adminer mkdir /usr/share/adminer