diff --git a/cp/bin/create_admin_user.php b/cp/bin/create_admin_user.php index 9ccb24d..6e77b47 100644 --- a/cp/bin/create_admin_user.php +++ b/cp/bin/create_admin_user.php @@ -6,6 +6,7 @@ $dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/..'); $dotenv->load(); // Retrieve database connection details from environment variables +$dbDriver = $_ENV['DB_DRIVER']; $dbHost = $_ENV['DB_HOST']; $dbName = $_ENV['DB_DATABASE']; $dbUser = $_ENV['DB_USERNAME']; @@ -26,12 +27,17 @@ $hashedPassword = password_hash($newPW, PASSWORD_ARGON2ID, $options); try { // Create PDO instance - $pdo = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf8", $dbUser, $dbPass); + if ($dbDriver == 'mysql') { + $dsn = "mysql:host=$dbHost;dbname=$dbName;charset=utf8"; + } elseif ($dbDriver == 'pgsql') { + $dsn = "pgsql:host=$dbHost;dbname=$dbName"; + } + $pdo = new PDO($dsn, $dbUser, $dbPass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // SQL query $sql = "INSERT INTO users (email, password, username, status, verified, resettable, roles_mask, registered, last_login, force_logout, tfa_secret, tfa_enabled, auth_method, backup_codes) - VALUES (:email, :password, :username, 0, 1, 1, 0, 1, NULL, 0, NULL, 0, 'password', NULL)"; + VALUES (:email, :password, :username, 0, 1, 1, 0, 1, NULL, 0, NULL, false, 'password', NULL)"; // Prepare and execute SQL statement $stmt = $pdo->prepare($sql); diff --git a/cp/bootstrap/database.php b/cp/bootstrap/database.php index 3e953d8..9e34d90 100644 --- a/cp/bootstrap/database.php +++ b/cp/bootstrap/database.php @@ -13,7 +13,7 @@ elseif (config('default') == 'sqlite') { } // PostgreSQL Connection elseif (config('default') == 'pgsql') { - $pdo = new \PDO($config['pgsql']['driver'].':dbname='.$config['pgsql']['database'].';host='.$config['pgsql']['host'].';charset='.$config['pgsql']['charset'].'', $config['pgsql']['username'], $config['pgsql']['password']); + $pdo = new \PDO($config['pgsql']['driver'].':dbname='.$config['pgsql']['database'].';host='.$config['pgsql']['host'].';', $config['pgsql']['username'], $config['pgsql']['password']); $db = \Pinga\Db\PdoDatabase::fromPdo($pdo); } // SQL Server Connection diff --git a/cp/config/app.php b/cp/config/app.php index 20230e1..b252e9e 100644 --- a/cp/config/app.php +++ b/cp/config/app.php @@ -43,7 +43,6 @@ return [ 'database' => $_ENV['DB_DATABASE'] ?? 'db_username', 'username' => $_ENV['DB_USERNAME'] ?? 'db_password', 'password' => $_ENV['DB_PASSWORD'] ?? '', - 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', 'sslmode' => 'prefer', diff --git a/database/registry.postgres.sql b/database/registry.postgres.sql index a869f55..0f4bb45 100644 --- a/database/registry.postgres.sql +++ b/database/registry.postgres.sql @@ -1,6 +1,4 @@ -SET search_path TO registry, registryTransaction, registryAudit, public; - -CREATE TABLE registry.launch_phases ( +CREATE TABLE launch_phases ( "id" SERIAL PRIMARY KEY, "tld_id" INT CHECK ("tld_id" >= 0), "phase_name" VARCHAR(75) DEFAULT NULL, @@ -20,10 +18,10 @@ BEGIN END; ' LANGUAGE 'plpgsql'; -CREATE TRIGGER add_current_date_to_launch_phases BEFORE UPDATE ON registry.launch_phases FOR EACH ROW EXECUTE PROCEDURE +CREATE TRIGGER add_current_date_to_launch_phases BEFORE UPDATE ON launch_phases FOR EACH ROW EXECUTE PROCEDURE update_phases(); -CREATE TABLE registry.domain_tld ( +CREATE TABLE domain_tld ( "id" SERIAL PRIMARY KEY, "tld" varchar(32) NOT NULL, "idn_table" varchar(255) NOT NULL, @@ -32,13 +30,13 @@ CREATE TABLE registry.domain_tld ( unique ("tld") ); -CREATE TABLE registry.settings ( +CREATE TABLE settings ( "name" varchar(64) NOT NULL, "value" varchar(255) default NULL, PRIMARY KEY ("name") ); -CREATE TABLE registry.domain_price ( +CREATE TABLE domain_price ( "id" SERIAL PRIMARY KEY, "tldid" int CHECK ("tldid" >= 0) NOT NULL, "command" varchar CHECK ("command" IN ( 'create','renew','transfer' )) NOT NULL default 'create', @@ -56,14 +54,14 @@ CREATE TABLE registry.domain_price ( unique ("tldid", "command") ); -CREATE TABLE registry.domain_restore_price ( +CREATE TABLE domain_restore_price ( "id" SERIAL PRIMARY KEY, "tldid" int CHECK ("tldid" >= 0) NOT NULL, "price" decimal(10,2) NOT NULL default '0.00', unique ("tldid") ); -CREATE TABLE registry.allocation_tokens ( +CREATE TABLE allocation_tokens ( "token" VARCHAR(255) NOT NULL, "domain_name" VARCHAR(255), "tokenStatus" VARCHAR(100), @@ -78,21 +76,21 @@ CREATE TABLE registry.allocation_tokens ( PRIMARY KEY (token) ); -CREATE TABLE registry.error_log ( +CREATE TABLE error_log ( "id" SERIAL PRIMARY KEY, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "log" TEXT NOT NULL, "date" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP ); -CREATE TABLE registry.reserved_domain_names ( +CREATE TABLE reserved_domain_names ( "id" SERIAL PRIMARY KEY, "name" varchar(68) NOT NULL, "type" varchar CHECK ("type" IN ( 'reserved','restricted' )) NOT NULL default 'reserved', unique ("name") ); -CREATE TABLE registry.registrar ( +CREATE TABLE registrar ( "id" SERIAL PRIMARY KEY, "name" varchar(255) NOT NULL, "iana_id" int DEFAULT NULL, @@ -126,17 +124,17 @@ END; ' LANGUAGE 'plpgsql'; -- before INSERT is handled by 'default CURRENT_TIMESTAMP' -CREATE TRIGGER add_current_date_to_registrar BEFORE UPDATE ON registry.registrar FOR EACH ROW EXECUTE PROCEDURE +CREATE TRIGGER add_current_date_to_registrar BEFORE UPDATE ON registrar FOR EACH ROW EXECUTE PROCEDURE update_registrar(); -CREATE TABLE registry.registrar_whitelist ( +CREATE TABLE registrar_whitelist ( "id" SERIAL PRIMARY KEY, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "addr" varchar(45) NOT NULL, unique ("registrar_id", "addr") ); -CREATE TABLE registry.registrar_contact ( +CREATE TABLE registrar_contact ( "id" SERIAL PRIMARY KEY, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "type" varchar CHECK ("type" IN ( 'owner','admin','billing','tech','abuse' )) NOT NULL default 'admin', @@ -158,14 +156,14 @@ CREATE TABLE registry.registrar_contact ( unique ("registrar_id", "type") ); -CREATE TABLE registry.registrar_ote ( +CREATE TABLE registrar_ote ( "registrar_id" integer NOT NULL, "command" varchar(75) NOT NULL, "result" int NOT NULL, CONSTRAINT test UNIQUE ("registrar_id", "command", "result") ); -CREATE TABLE registry.poll ( +CREATE TABLE poll ( "id" SERIAL PRIMARY KEY, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "qdate" timestamp(3) without time zone NOT NULL, @@ -185,7 +183,7 @@ CREATE TABLE registry.poll ( "availablecredit" decimal(12,2) default '0.00' ); -CREATE TABLE registry.payment_history ( +CREATE TABLE payment_history ( "id" SERIAL PRIMARY KEY, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "date" timestamp(3) without time zone NOT NULL, @@ -193,7 +191,7 @@ CREATE TABLE registry.payment_history ( "amount" decimal(12,2) NOT NULL ); -CREATE TABLE registry.statement ( +CREATE TABLE statement ( "id" SERIAL PRIMARY KEY, "registrar_id" int CHECK ("registrar_id" >= 0) NOT NULL, "date" timestamp(3) without time zone NOT NULL, @@ -205,7 +203,7 @@ CREATE TABLE registry.statement ( "amount" decimal(12,2) NOT NULL ); -CREATE TABLE registry.invoices ( +CREATE TABLE invoices ( "id" SERIAL PRIMARY KEY, "registrar_id" INT, "invoice_number" varchar(25) DEFAULT NULL, @@ -219,7 +217,7 @@ CREATE TABLE registry.invoices ( "updated_at" TIMESTAMP(3) DEFAULT CURRENT_TIMESTAMP ); -CREATE TABLE registry.contact ( +CREATE TABLE contact ( "id" SERIAL PRIMARY KEY, "identifier" varchar(255) NOT NULL, "voice" varchar(17) default NULL, @@ -246,7 +244,7 @@ CREATE TABLE registry.contact ( unique ("identifier") ); -CREATE TABLE registry.contact_postalinfo ( +CREATE TABLE contact_postalinfo ( "id" SERIAL PRIMARY KEY, "contact_id" int CHECK ("contact_id" >= 0) NOT NULL, "type" varchar CHECK ("type" IN ( 'int','loc' )) NOT NULL default 'int', @@ -268,7 +266,7 @@ CREATE TABLE registry.contact_postalinfo ( unique ("contact_id", "type") ); -CREATE TABLE registry.contact_authinfo ( +CREATE TABLE contact_authinfo ( "id" SERIAL PRIMARY KEY, "contact_id" int CHECK ("contact_id" >= 0) NOT NULL, "authtype" varchar CHECK ("authtype" IN ( 'pw','ext' )) NOT NULL default 'pw', @@ -276,14 +274,14 @@ CREATE TABLE registry.contact_authinfo ( unique ("contact_id") ); -CREATE TABLE registry.contact_status ( +CREATE TABLE contact_status ( "id" SERIAL PRIMARY KEY, "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', unique ("contact_id", "status") ); -CREATE TABLE registry.domain ( +CREATE TABLE domain ( "id" SERIAL PRIMARY KEY, "name" varchar(68) NOT NULL, "tldid" int CHECK ("tldid" >= 0) NOT NULL, @@ -331,7 +329,7 @@ CREATE TABLE registry.domain ( unique ("name") ); -CREATE TABLE registry.application ( +CREATE TABLE application ( "id" SERIAL PRIMARY KEY, "name" varchar(68) NOT NULL, "tldid" int CHECK ("tldid" >= 0) NOT NULL, @@ -365,7 +363,7 @@ CREATE TABLE registry.application ( "tm_phase" text DEFAULT 'NONE'::text NOT NULL ); -CREATE TABLE registry.domain_contact_map ( +CREATE TABLE domain_contact_map ( "id" SERIAL PRIMARY KEY, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "contact_id" int CHECK ("contact_id" >= 0) NOT NULL, @@ -373,7 +371,7 @@ CREATE TABLE registry.domain_contact_map ( unique ("domain_id", "contact_id", "type") ); -CREATE TABLE registry.application_contact_map ( +CREATE TABLE application_contact_map ( "id" SERIAL PRIMARY KEY, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "contact_id" int CHECK ("contact_id" >= 0) NOT NULL, @@ -381,7 +379,7 @@ CREATE TABLE registry.application_contact_map ( unique ("domain_id", "contact_id", "type") ); -CREATE TABLE registry.domain_authinfo ( +CREATE TABLE domain_authinfo ( "id" SERIAL PRIMARY KEY, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "authtype" varchar CHECK ("authtype" IN ( 'pw','ext' )) NOT NULL default 'pw', @@ -389,21 +387,21 @@ CREATE TABLE registry.domain_authinfo ( unique ("domain_id") ); -CREATE TABLE registry.domain_status ( +CREATE TABLE domain_status ( "id" SERIAL PRIMARY KEY, "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', unique ("domain_id", "status") ); -CREATE TABLE registry.application_status ( +CREATE TABLE application_status ( "id" SERIAL PRIMARY KEY, "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', unique ("domain_id", "status") ); -CREATE TABLE registry.secdns ( +CREATE TABLE secdns ( "id" SERIAL PRIMARY KEY, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "maxsiglife" int CHECK ("maxsiglife" >= 0) default '604800', @@ -419,7 +417,7 @@ CREATE TABLE registry.secdns ( unique ("domain_id", "digest") ); -CREATE TABLE registry.host ( +CREATE TABLE host ( "id" SERIAL PRIMARY KEY, "name" varchar(255) NOT NULL, "domain_id" int CHECK ("domain_id" >= 0) default NULL, @@ -432,21 +430,21 @@ CREATE TABLE registry.host ( unique ("name") ); -CREATE TABLE registry.domain_host_map ( +CREATE TABLE domain_host_map ( "id" SERIAL PRIMARY KEY, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "host_id" int CHECK ("host_id" >= 0) NOT NULL, unique ("domain_id", "host_id") ); -CREATE TABLE registry.application_host_map ( +CREATE TABLE application_host_map ( "id" SERIAL PRIMARY KEY, "domain_id" int CHECK ("domain_id" >= 0) NOT NULL, "host_id" int CHECK ("host_id" >= 0) NOT NULL, unique ("domain_id", "host_id") ); -CREATE TABLE registry.host_addr ( +CREATE TABLE host_addr ( "id" SERIAL PRIMARY KEY, "host_id" int CHECK ("host_id" >= 0) NOT NULL, "addr" varchar(45) NOT NULL, @@ -454,14 +452,14 @@ CREATE TABLE registry.host_addr ( unique ("host_id", "addr", "ip") ); -CREATE TABLE registry.host_status ( +CREATE TABLE host_status ( "id" SERIAL PRIMARY KEY, "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', unique ("host_id", "status") ); -CREATE TABLE registry.domain_auto_approve_transfer ( +CREATE TABLE domain_auto_approve_transfer ( "id" SERIAL PRIMARY KEY, "name" varchar(68) NOT NULL, "registrant" int CHECK ("registrant" >= 0) default NULL, @@ -480,7 +478,7 @@ CREATE TABLE registry.domain_auto_approve_transfer ( "transfer_exdate" timestamp(3) without time zone default NULL ); -CREATE TABLE registry.contact_auto_approve_transfer ( +CREATE TABLE contact_auto_approve_transfer ( "id" SERIAL PRIMARY KEY, "identifier" varchar(255) NOT NULL, "voice" varchar(17) default NULL, @@ -506,7 +504,7 @@ CREATE TABLE registry.contact_auto_approve_transfer ( "disclose_email" varchar CHECK ("disclose_email" IN ( '0','1' )) NOT NULL default '1' ); -CREATE TABLE registry.statistics ( +CREATE TABLE statistics ( "id" SERIAL PRIMARY KEY, "date" date NOT NULL, "total_domains" int CHECK ("total_domains" >= 0) NOT NULL DEFAULT '0', @@ -518,7 +516,7 @@ CREATE TABLE registry.statistics ( unique ("date") ); -CREATE TABLE IF NOT EXISTS registry.users ( +CREATE TABLE IF NOT EXISTS users ( "id" SERIAL PRIMARY KEY CHECK ("id" >= 0), "email" VARCHAR(249) UNIQUE NOT NULL, "password" VARCHAR(255) NOT NULL, @@ -536,8 +534,8 @@ CREATE TABLE IF NOT EXISTS registry.users ( "backup_codes" TEXT ); -CREATE TABLE IF NOT EXISTS registry.users_audit ( - "user_id" SERIAL PRIMARY KEY CHECK ("user_id" >= 0), +CREATE TABLE IF NOT EXISTS users_audit ( + "user_id" INT NOT NULL, "user_event" VARCHAR(255) NOT NULL, "user_resource" VARCHAR(255) DEFAULT NULL, "user_agent" VARCHAR(255) NOT NULL, @@ -546,10 +544,10 @@ CREATE TABLE IF NOT EXISTS registry.users_audit ( "event_time" TIMESTAMP(3) NOT NULL, "user_data" JSONB DEFAULT NULL ); -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_event ON users_audit (user_event); +CREATE INDEX idx_user_ip ON users_audit (user_ip); -CREATE TABLE IF NOT EXISTS registry.users_confirmations ( +CREATE TABLE IF NOT EXISTS users_confirmations ( "id" SERIAL PRIMARY KEY CHECK ("id" >= 0), "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0), "email" VARCHAR(249) NOT NULL, @@ -557,36 +555,36 @@ CREATE TABLE IF NOT EXISTS registry.users_confirmations ( "token" VARCHAR(255) NOT NULL, "expires" INTEGER NOT NULL CHECK ("expires" >= 0) ); -CREATE INDEX IF NOT EXISTS "email_expires" ON registry.users_confirmations ("email", "expires"); -CREATE INDEX IF NOT EXISTS "user_id" ON registry.users_confirmations ("user_id"); +CREATE INDEX IF NOT EXISTS "email_expires" ON users_confirmations ("email", "expires"); +CREATE INDEX IF NOT EXISTS "user_id" ON users_confirmations ("user_id"); -CREATE TABLE IF NOT EXISTS registry.users_remembered ( +CREATE TABLE IF NOT EXISTS users_remembered ( "id" BIGSERIAL PRIMARY KEY CHECK ("id" >= 0), "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0), "selector" VARCHAR(24) UNIQUE NOT NULL, "token" VARCHAR(255) NOT NULL, "expires" INTEGER NOT NULL CHECK ("expires" >= 0) ); -CREATE INDEX IF NOT EXISTS "user_id" ON registry.users_remembered ("user_id"); +CREATE INDEX IF NOT EXISTS "re_user_id" ON users_remembered ("user_id"); -CREATE TABLE IF NOT EXISTS registry.users_resets ( +CREATE TABLE IF NOT EXISTS users_resets ( "id" BIGSERIAL PRIMARY KEY CHECK ("id" >= 0), "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0), "selector" VARCHAR(20) UNIQUE NOT NULL, "token" VARCHAR(255) NOT NULL, "expires" INTEGER NOT NULL CHECK ("expires" >= 0) ); -CREATE INDEX IF NOT EXISTS "user_expires" ON registry.users_resets ("user_id", "expires"); +CREATE INDEX IF NOT EXISTS "user_expires" ON users_resets ("user_id", "expires"); -CREATE TABLE IF NOT EXISTS registry.users_throttling ( +CREATE TABLE IF NOT EXISTS users_throttling ( "bucket" VARCHAR(44) PRIMARY KEY, "tokens" REAL NOT NULL CHECK ("tokens" >= 0), "replenished_at" INTEGER NOT NULL CHECK ("replenished_at" >= 0), "expires_at" INTEGER NOT NULL CHECK ("expires_at" >= 0) ); -CREATE INDEX IF NOT EXISTS "expires_at" ON registry.users_throttling ("expires_at"); +CREATE INDEX IF NOT EXISTS "expires_at" ON users_throttling ("expires_at"); -CREATE TABLE IF NOT EXISTS registry.users_webauthn ( +CREATE TABLE IF NOT EXISTS users_webauthn ( "id" SERIAL PRIMARY KEY, "user_id" INTEGER NOT NULL, "credential_id" BYTEA NOT NULL, @@ -598,12 +596,12 @@ CREATE TABLE IF NOT EXISTS registry.users_webauthn ( "last_used_at" TIMESTAMP(3) WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP ); -CREATE TABLE IF NOT EXISTS registry.registrar_users ( +CREATE TABLE IF NOT EXISTS registrar_users ( "registrar_id" int NOT NULL PRIMARY KEY, "user_id" int NOT NULL ); -CREATE TABLE registry.urs_actions ( +CREATE TABLE urs_actions ( "id" SERIAL PRIMARY KEY, "domain_name" VARCHAR(255) NOT NULL, "urs_provider" VARCHAR(255) NOT NULL, @@ -616,7 +614,7 @@ CREATE TYPE deposit_type_enum AS ENUM ('Full', 'Incremental', 'Differential'); CREATE TYPE status_enum AS ENUM ('Deposited', 'Retrieved', 'Failed'); CREATE TYPE verification_status_enum AS ENUM ('Verified', 'Failed', 'Pending'); -CREATE TABLE registry.rde_escrow_deposits ( +CREATE TABLE rde_escrow_deposits ( "id" SERIAL PRIMARY KEY, "deposit_id" VARCHAR(255) UNIQUE, -- Unique deposit identifier "deposit_date" DATE NOT NULL, @@ -636,7 +634,7 @@ CREATE TABLE registry.rde_escrow_deposits ( CREATE TYPE report_status_enum AS ENUM ('Pending', 'Submitted', 'Accepted', 'Rejected'); -CREATE TABLE registry.icann_reports ( +CREATE TABLE icann_reports ( "id" serial8 PRIMARY KEY, "report_date" DATE NOT NULL, "type" VARCHAR(255) NOT NULL, @@ -646,7 +644,7 @@ CREATE TABLE registry.icann_reports ( "notes" TEXT ); -CREATE TABLE registry.promotion_pricing ( +CREATE TABLE promotion_pricing ( "id" SERIAL PRIMARY KEY, "tld_id" INT CHECK ("tld_id" >= 0), "promo_name" varchar(255) NOT NULL, @@ -672,14 +670,14 @@ CREATE TABLE registry.promotion_pricing ( CREATE INDEX idx_promotion_pricing_tld_id ON promotion_pricing (tld_id); -CREATE TABLE registry.premium_domain_categories ( +CREATE TABLE premium_domain_categories ( "category_id" serial8 PRIMARY KEY, "category_name" VARCHAR(255) NOT NULL, "category_price" NUMERIC(10, 2) NOT NULL, UNIQUE (category_name) ); -CREATE TABLE registry.premium_domain_pricing ( +CREATE TABLE premium_domain_pricing ( "id" serial8 PRIMARY KEY, "domain_name" VARCHAR(255) NOT NULL, "tld_id" INT CHECK ("tld_id" >= 0) NOT NULL, @@ -690,13 +688,13 @@ CREATE TABLE registry.premium_domain_pricing ( CREATE TYPE ticket_status AS ENUM ('Open', 'In Progress', 'Resolved', 'Closed'); CREATE TYPE ticket_priority AS ENUM ('Low', 'Medium', 'High', 'Critical'); -CREATE TABLE registry.ticket_categories ( +CREATE TABLE ticket_categories ( "id" SERIAL PRIMARY KEY, "name" VARCHAR(255) NOT NULL, "description" TEXT ); -CREATE TABLE registry.support_tickets ( +CREATE TABLE support_tickets ( "id" SERIAL PRIMARY KEY, "user_id" INTEGER NOT NULL, "category_id" INTEGER NOT NULL, @@ -713,7 +711,7 @@ CREATE TABLE registry.support_tickets ( "last_updated" TIMESTAMP(3) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP ); -CREATE TABLE registry.ticket_responses ( +CREATE TABLE ticket_responses ( "id" SERIAL PRIMARY KEY, "ticket_id" INTEGER NOT NULL, "responder_id" INTEGER NOT NULL, @@ -721,7 +719,7 @@ CREATE TABLE registry.ticket_responses ( "date_created" TIMESTAMP(3) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP ); -CREATE TABLE registry.tmch_claims ( +CREATE TABLE tmch_claims ( "id" SERIAL PRIMARY KEY, "domain_label" VARCHAR(100) NOT NULL, "claim_key" VARCHAR(200) NOT NULL, @@ -729,42 +727,42 @@ CREATE TABLE registry.tmch_claims ( CONSTRAINT tmch_claims_unique UNIQUE (claim_key, domain_label) ); -CREATE TABLE registry.tmch_revocation ( +CREATE TABLE tmch_revocation ( "id" SERIAL PRIMARY KEY, "smd_id" VARCHAR(100) NOT NULL, "revocation_time" TIMESTAMP(3) NOT NULL, CONSTRAINT tmch_revocation_unique UNIQUE (smd_id) ); -CREATE TABLE registry.tmch_crl ( +CREATE TABLE tmch_crl ( "id" SERIAL PRIMARY KEY, "content" TEXT NOT NULL, "url" VARCHAR(255) NOT NULL, "update_timestamp" TIMESTAMP(3) NOT NULL ); -INSERT INTO registry.domain_tld VALUES('1','.TEST','/^(?!-)(?!.*--)[A-Z0-9-]{1,63}(?