37 lines
1.5 KiB
SQL
37 lines
1.5 KiB
SQL
CREATE TABLE account_setting_data_type (
|
|
data_type_id text PRIMARY KEY
|
|
);
|
|
|
|
INSERT INTO account_setting_data_type VALUES ('string');
|
|
|
|
CREATE TABLE account_setting (
|
|
account_setting_id text PRIMARY KEY,
|
|
constrained boolean NOT NULL,
|
|
data_type text NOT NULL REFERENCES account_setting_data_type(data_type_id) ON DELETE CASCADE,
|
|
constrained_default_value text
|
|
REFERENCES account_setting_allowed_values(allowed_value_id) ON DELETE CASCADE,
|
|
unconstrained_default_value text
|
|
);
|
|
|
|
INSERT INTO account_setting VALUES ('email_notification_frequency', true, 'string');
|
|
|
|
CREATE TABLE account_setting_allowed_values (
|
|
allowed_value_id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
setting_id int NOT NULL REFERENCES account_setting(account_setting_id) ON DELETE CASCADE,
|
|
item_value text NOT NULL
|
|
);
|
|
|
|
INSERT INTO account_setting_allowed_values (setting_id, item_value) VALUES (0, 'never');
|
|
INSERT INTO account_setting_allowed_values (setting_id, item_value) VALUES (0, 'hourly');
|
|
INSERT INTO account_setting_allowed_values (setting_id, item_value) VALUES (0, 'instant');
|
|
|
|
CREATE TABLE account_setting_value (
|
|
account_setting_id uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
user_id uuid NOT NULL REFERENCES user_account(user_id) ON DELETE CASCADE,
|
|
setting_id int NOT NULL REFERENCES account_setting(account_setting_id) ON DELETE CASCADE,
|
|
created_at timestamptz NOT NULL,
|
|
updated_at timestamptz NOT NULL,
|
|
allowed_value_id uuid REFERENCES account_setting_allowed_values(allowed_value_id) ON DELETE CASCADE,
|
|
unconstrained_value text
|
|
);
|