64 lines
2.7 KiB
SQL
64 lines
2.7 KiB
SQL
-- 0003_startup_config_security: data-backed startup config, countries and account security.
|
|
|
|
CREATE TABLE IF NOT EXISTS account_passwords (
|
|
user_id BIGINT PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE,
|
|
has_recovery BOOLEAN NOT NULL DEFAULT false,
|
|
has_secure_values BOOLEAN NOT NULL DEFAULT false,
|
|
has_password BOOLEAN NOT NULL DEFAULT false,
|
|
hint VARCHAR(256) NOT NULL DEFAULT '',
|
|
email_unconfirmed_pattern VARCHAR(256) NOT NULL DEFAULT '',
|
|
login_email_pattern VARCHAR(256) NOT NULL DEFAULT '',
|
|
secure_random BYTEA NOT NULL DEFAULT decode('74656c657372762d746465736b746f702d6465762d7365637572652d72616e64', 'hex'),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS app_configs (
|
|
client VARCHAR(64) PRIMARY KEY,
|
|
hash INT NOT NULL,
|
|
config_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS countries (
|
|
iso2 VARCHAR(2) PRIMARY KEY,
|
|
default_name VARCHAR(128) NOT NULL,
|
|
name VARCHAR(128) NOT NULL DEFAULT '',
|
|
hidden BOOLEAN NOT NULL DEFAULT false,
|
|
order_index INT NOT NULL DEFAULT 0,
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS country_codes (
|
|
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
iso2 VARCHAR(2) NOT NULL REFERENCES countries(iso2) ON DELETE CASCADE,
|
|
country_code VARCHAR(16) NOT NULL,
|
|
prefixes TEXT[] NOT NULL DEFAULT '{}',
|
|
patterns TEXT[] NOT NULL DEFAULT '{}',
|
|
order_index INT NOT NULL DEFAULT 0,
|
|
UNIQUE (iso2, country_code)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS temp_auth_key_bindings (
|
|
temp_auth_key_id BIGINT PRIMARY KEY REFERENCES auth_keys(auth_key_id) ON DELETE CASCADE,
|
|
perm_auth_key_id BIGINT NOT NULL,
|
|
nonce BIGINT NOT NULL,
|
|
expires_at INT NOT NULL,
|
|
encrypted_message BYTEA NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
INSERT INTO app_configs (client, hash, config_json)
|
|
VALUES ('tdesktop', 1, '{}'::jsonb)
|
|
ON CONFLICT (client) DO NOTHING;
|
|
|
|
INSERT INTO countries (iso2, default_name, name, hidden, order_index)
|
|
VALUES
|
|
('US', 'United States', '', false, 10),
|
|
('CN', 'China', '', false, 20)
|
|
ON CONFLICT (iso2) DO NOTHING;
|
|
|
|
INSERT INTO country_codes (iso2, country_code, prefixes, patterns, order_index)
|
|
VALUES
|
|
('US', '1', ARRAY['1'], '{}'::text[], 10),
|
|
('CN', '86', ARRAY['86'], '{}'::text[], 20)
|
|
ON CONFLICT (iso2, country_code) DO NOTHING;
|