fixup! refactor(db): inital work on refactoring instance db layout

This commit is contained in:
Iraq Jaber
2025-04-16 14:43:12 +02:00
parent 7aef81a16b
commit f3ba4de339

View File

@@ -37,14 +37,25 @@ CREATE TABLE zitadel.security_policies (
-- Security Generator
-----------------------------------------------------------------------------------------------------------------------------------------------------------
DROP TYPE IF EXISTS zitadel.secret_generator_types CASCADE;
CREATE TYPE zitadel.secret_generator_types AS ENUM (
'INIT_CODE',
'VERIFY_EMAIL_CODE',
'VERIFY_PHONE_CODE',
'PASSWORD_RESET_CODE',
'PASSWORDLESS_INIT_CODE',
'APP_SECRET',
'OTP_SMS',
'OTP_EMAIL'
);
DROP TABLE IF EXISTS zitadel.secret_generators CASCADE;
CREATE TABLE zitadel.secret_generators (
id SERIAL NOT NULL PRIMARY KEY,
-- TODO investigate if this will only ever be applied to instance
instance_id VARCHAR(100) NOT NULL,
CONSTRAINT instance_id_fk FOREIGN KEY(instance_id) REFERENCES instances(id) ON DELETE CASCADE,
-- TODO: maybe make generator_type a enum
generator_type SMALLINT NOT NULL,
generator_type zitadel.secret_generator_types NOT NULL,
length BIGINT NOT NULL,
expiry BIGINT NOT NULL,
include_lower_letters BOOLEAN NOT NULL,
@@ -74,9 +85,36 @@ CREATE TABLE zitadel.oidc_settings (
deleted_at TIMESTAMP DEFAULT NULL
);
-- TODO language table
-- Languages
-----------------------------------------------------------------------------------------------------------------------------------------------------------
DROP TABLE IF EXISTS zitadel.languages CASCADE;
CREATE TABLE zitadel.languages (
code VARCHAR(2) NOT NULL PRIMARY KEY,
name TEXT NOT NULL,
deleted_at TIMESTAMP DEFAULT NULL
);
INSERT INTO zitadel.languages (code, name)
VALUES
('bg','bulgerian'),
('cs','czechian'),
('de','german'),
('en','english'),
('es','spanish'),
('fr','french'),
('hu','hungarian'),
('id','indonesian'),
('it','italian'),
('ja','japanese'),
('ko','korean'),
('mk','macedonian'),
('nl','dutch'),
('pl','polish'),
('pt','portuguese'),
('ro','romanian'),
('ru','russian'),
('sv','swedish'),
('zh','zhuang');
-- Privacy Policy
-----------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -86,7 +124,7 @@ CREATE TABLE zitadel.privacy_policies (
id SERIAL NOT NULL PRIMARY KEY,
instance_id VARCHAR(100) NOT NULL,
CONSTRAINT instance_id_fk FOREIGN KEY(instance_id) REFERENCES instances(id) ON DELETE CASCADE,
-- TODO what is state?
-- https://zitadel.slack.com/archives/C07SVSZU38X/p1744291107892309
state SMALLINT NOT NULL,
is_default BOOLEAN DEFAULT FALSE NOT NULL,
privacy_link VARCHAR(200) NOT NULL,
@@ -96,8 +134,6 @@ CREATE TABLE zitadel.privacy_policies (
docs_link VARCHAR(200) DEFAULT 'https://zitadel.com/docs'::text NOT NULL,
custom_link VARCHAR(200) NOT NULL,
custom_link_text VARCHAR(100) NOT NULL,
-- TODO what is owner_removed?
owner_removed BOOLEAN DEFAULT FALSE NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
deleted_at TIMESTAMP DEFAULT NULL
@@ -116,10 +152,9 @@ CREATE TABLE zitadel.custom_texts (
is_default BOOLEAN NOT NULL,
template VARCHAR(200) NOT NULL,
language VARCHAR(2) NOT NULL,
language VARCHAR(2) REFERENCES languages(code),
key VARCHAR(30) NOT NULL,
text VARCHAR(200) NOT NULL,
owner_removed BOOLEAN DEFAULT FALSE NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
@@ -136,9 +171,8 @@ CREATE TABLE zitadel.message_text (
CONSTRAINT instance_id_fk FOREIGN KEY(instance_id) REFERENCES instances(id) ON DELETE CASCADE,
-- TODO what is state?
state SMALLINT NOT NULL,
-- TODO what is type?
type text NOT NULL,
language VARCHAR(2) NOT NULL,
language VARCHAR(2) REFERENCES languages(code),
title VARCHAR(100),
pre_header VARCHAR(100),
subject VARCHAR(100),
@@ -146,8 +180,6 @@ CREATE TABLE zitadel.message_text (
text VARCHAR(100),
button_text VARCHAR(100),
footer_text VARCHAR(100),
-- TODO what is owner_removed?
owner_removed BOOLEAN DEFAULT FALSE NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
deleted_at TIMESTAMP DEFAULT NULL
@@ -162,14 +194,14 @@ CREATE TABLE zitadel.styling (
instance_id VARCHAR(100) NOT NULL,
CONSTRAINT instance_id_fk FOREIGN KEY(instance_id) REFERENCES instances(id) ON DELETE CASCADE,
label_policy_state SMALLINT DEFAULT (0)::SMALLINT NOT NULL,
primary_color VARCHAR(20),
background_color VARCHAR(20),
warn_color VARCHAR(20),
font_color VARCHAR(20),
primary_color_dark VARCHAR(20),
background_color_dark VARCHAR(20),
warn_color_dark VARCHAR(20),
font_color_dark VARCHAR(20),
primary_color TEXT,
background_color TEXT,
warn_color TEXT,
font_color TEXT,
primary_color_dark TEXT,
background_color_dark TEXT,
warn_color_dark TEXT,
font_color_dark TEXT,
logo_url VARCHAR(200),
icon_url VARCHAR(200),
logo_dark_url VARCHAR(200),
@@ -178,8 +210,6 @@ CREATE TABLE zitadel.styling (
err_msg_popup BOOLEAN,
disable_watermark BOOLEAN,
hide_login_name_suffix BOOLEAN,
-- TODO what is owner_removed?
owner_removed BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
deleted_at TIMESTAMP DEFAULT NULL
@@ -198,8 +228,6 @@ CREATE TABLE zitadel.domain_policies (
validate_org_domains BOOLEAN NOT NULL,
smtp_sender_address_matches_instance_domain BOOLEAN NOT NULL,
is_default BOOLEAN DEFAULT FALSE NOT NULL,
-- TODO what is owner_removed?
owner_removed BOOLEAN DEFAULT FALSE NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
deleted_at TIMESTAMP DEFAULT NULL
@@ -236,8 +264,6 @@ CREATE TABLE zitadel.password_age_policies (
is_default BOOLEAN DEFAULT FALSE NOT NULL,
expire_warn_days BIGINT NOT NULL,
max_age_days BIGINT NOT NULL,
-- TODO what is owner_removed?
owner_removed BOOLEAN DEFAULT FALSE NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
deleted_at TIMESTAMP DEFAULT NULL
@@ -257,8 +283,6 @@ CREATE TABLE zitadel.password_complexity_policies (
has_uppercase BOOLEAN NOT NULL,
has_symbol BOOLEAN NOT NULL,
has_number BOOLEAN NOT NULL,
-- TODO what is owner_removed?
owner_removed BOOLEAN DEFAULT FALSE NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
deleted_at TIMESTAMP DEFAULT NULL
@@ -267,7 +291,7 @@ CREATE TABLE zitadel.password_complexity_policies (
-- idp
-----------------------------------------------------------------------------------------------------------------------------------------------------------
DROP TYPE IF EXISTS idp_type CASCADE;
CREATE TYPE idp_type AS ENUM ('oauth2', 'oidc', 'jwt');
CREATE TYPE idp_type AS ENUM ('oauth2', 'oidc', 'jwt', 'azure', 'github', 'gitlab', 'github_enterprise', 'gitlab_self_hosted', 'google', 'ldap', 'saml', 'apple');
DROP TABLE IF EXISTS zitadel.idp_providers CASCADE;
CREATE TABLE zitadel.idp_providers (
id SERIAL NOT NULL PRIMARY KEY,
@@ -336,7 +360,6 @@ CREATE TABLE zitadel.idp_google (
CONSTRAINT idp_provider_id_fk FOREIGN KEY(idp_provider_id) REFERENCES idp_providers(id),
client_id VARCHAR(100) NOT NULL,
client_secret JSONB NOT NULL,
-- TODO check if there's a better type for scopes than text[]
scopes text[]
);
@@ -347,7 +370,6 @@ CREATE TABLE zitadel.idp_gitlab_self_hosted (
issuer VARCHAR(200) NOT NULL,
client_id VARCHAR(100) NOT NULL,
client_secret JSONB NOT NULL,
-- TODO check if there's a better type for scopes than text[]
scopes text[]
);
@@ -428,7 +450,6 @@ CREATE TABLE zitadel.idp_oauth2 (
user_endpoint VARCHAR(100) NOT NULL,
id_attribute VARCHAR(100) NOT NULL,
use_pkce BOOLEAN DEFAULT FALSE NOT NULL,
-- TODO check if there's a better type for scopes than text[]
scopes text[]
);
@@ -441,8 +462,6 @@ CREATE TABLE zitadel.idps ( -- based on idp_templates6
name VARCHAR(100) NOT NULL,
owner_type SMALLINT NOT NULL,
type SMALLINT NOT NULL,
-- TODO what is owner_removed?
owner_removed BOOLEAN DEFAULT FALSE NOT NULL,
is_creation_allowed BOOLEAN DEFAULT FALSE NOT NULL,
is_linking_allowed BOOLEAN DEFAULT FALSE NOT NULL,
is_auto_creation BOOLEAN DEFAULT FALSE NOT NULL,
@@ -485,8 +504,6 @@ CREATE TABLE zitadel.login_policies (
mfa_init_skip_lifetime BIGINT NOT NULL,
second_factor_check_lifetime BIGINT NOT NULL,
multi_factor_check_lifetime BIGINT NOT NULL,
-- TODO what is owner_removed?
owner_removed BOOLEAN DEFAULT FALSE NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
deleted_at TIMESTAMP DEFAULT NULL
@@ -560,19 +577,24 @@ CREATE TABLE zitadel.sms_twilio (
-- notifications
-----------------------------------------------------------------------------------------------------------------------------------------------------------
-- i think notification_polices need to be reworked
-- CREATE TABLE projections.notification_policies (
-- id text NOT NULL,
-- creation_date timestamp with time zone NOT NULL,
-- change_date timestamp with time zone NOT NULL,
-- resource_owner text NOT NULL,
-- instance_id text NOT NULL,
-- sequence BIGINT NOT NULL,
-- state SMALLINT NOT NULL,
-- is_default BOOLEAN NOT NULL,
-- password_change BOOLEAN NOT NULL,
-- owner_removed BOOLEAN DEFAULT FALSE NOT NULL
-- );
CREATE TYPE zitadel.notifications_types AS ENUM (
'PASSWORD_CHANGE'
);
DROP TABLE IF EXISTS zitadel.notification_policies CASCADE;
CREATE TABLE zitadel.notification_policies (
id SERIAL NOT NULL PRIMARY KEY,
instance_id VARCHAR(100) NOT NULL,
CONSTRAINT instance_id_fk FOREIGN KEY(instance_id) REFERENCES instances(id) ON DELETE CASCADE,
state SMALLINT NOT NULL,
is_default BOOLEAN NOT NULL,
-- NOTE: discuss if this should or shouldn't be an enum
notification_type notifications_types NOT NULL,
send_notification BOOLEAN NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
deleted_at TIMESTAMP DEFAULT NULL
);
-- smtp config
-----------------------------------------------------------------------------------------------------------------------------------------------------------