mirror of
https://github.com/discourse/discourse.git
synced 2025-06-02 01:55:02 +08:00
DEV: Add script to generate schema for intermediate DB (#24484)
This will be used by migration scripts.
This commit is contained in:
375
migrations/common/intermediate_db_schema/000_base_schema.sql
Normal file
375
migrations/common/intermediate_db_schema/000_base_schema.sql
Normal file
@ -0,0 +1,375 @@
|
||||
/*
|
||||
This file is auto-generated from the Discourse core database schema. Instead of editing it directly,
|
||||
please update the `schema.yml` configuration file and re-run the `generate_schema` script to update it.
|
||||
*/
|
||||
|
||||
CREATE TABLE badges (
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
description TEXT,
|
||||
badge_type_id INTEGER NOT NULL,
|
||||
created_at DATETIME NOT NULL,
|
||||
multiple_grant BOOLEAN NOT NULL,
|
||||
query TEXT,
|
||||
long_description TEXT,
|
||||
image_upload_id INTEGER,
|
||||
bage_group TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE categories (
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
color TEXT NOT NULL,
|
||||
created_at DATETIME NOT NULL,
|
||||
slug TEXT NOT NULL,
|
||||
description TEXT,
|
||||
text_color TEXT NOT NULL,
|
||||
read_restricted BOOLEAN NOT NULL,
|
||||
position INTEGER,
|
||||
parent_category_id INTEGER,
|
||||
about_topic_title TEXT,
|
||||
old_relative_url TEXT,
|
||||
existing_id INTEGER,
|
||||
permissions JSON_TEXT,
|
||||
logo_upload_id TEXT,
|
||||
tag_group_ids JSON_TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE category_custom_fields (
|
||||
category_id INTEGER NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
value TEXT,
|
||||
PRIMARY KEY (category_id, name)
|
||||
);
|
||||
|
||||
CREATE TABLE config (
|
||||
name TEXT NOT NULL PRIMARY KEY,
|
||||
value TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE group_members (
|
||||
group_id INTEGER,
|
||||
user_id INTEGER,
|
||||
owner BOOLEAN,
|
||||
PRIMARY KEY (group_id, user_id)
|
||||
);
|
||||
|
||||
CREATE TABLE groups (
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
full_name TEXT,
|
||||
visibility_level INTEGER NOT NULL,
|
||||
messageable_level INTEGER,
|
||||
mentionable_level INTEGER,
|
||||
members_visibility_level INTEGER NOT NULL,
|
||||
description TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE likes (
|
||||
post_id INTEGER NOT NULL,
|
||||
user_id INTEGER NOT NULL,
|
||||
created_at DATETIME NOT NULL,
|
||||
PRIMARY KEY (user_id, post_id)
|
||||
);
|
||||
|
||||
CREATE TABLE log_entries (
|
||||
created_at DATETIME NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
message TEXT NOT NULL,
|
||||
exception TEXT,
|
||||
details TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE muted_users (
|
||||
user_id INTEGER NOT NULL,
|
||||
muted_user_id INTEGER NOT NULL,
|
||||
PRIMARY KEY (user_id, muted_user_id)
|
||||
);
|
||||
|
||||
CREATE TABLE permalink_normalizations (
|
||||
normalization TEXT NOT NULL PRIMARY KEY
|
||||
);
|
||||
|
||||
CREATE TABLE poll_options (
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
poll_id INTEGER NOT NULL,
|
||||
created_at DATETIME,
|
||||
text TEXT NOT NULL,
|
||||
position INTEGER
|
||||
);
|
||||
|
||||
CREATE TABLE poll_votes (
|
||||
poll_option_id INTEGER NOT NULL,
|
||||
user_id INTEGER NOT NULL,
|
||||
created_at DATETIME,
|
||||
PRIMARY KEY (poll_option_id, user_id)
|
||||
);
|
||||
|
||||
CREATE TABLE polls (
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
post_id INTEGER,
|
||||
name TEXT NOT NULL,
|
||||
close_at DATETIME,
|
||||
type INTEGER NOT NULL,
|
||||
status INTEGER NOT NULL,
|
||||
results INTEGER NOT NULL,
|
||||
visibility INTEGER NOT NULL,
|
||||
min INTEGER,
|
||||
max INTEGER,
|
||||
step INTEGER,
|
||||
anonymous_voters INTEGER,
|
||||
created_at DATETIME NOT NULL,
|
||||
chart_type INTEGER NOT NULL,
|
||||
groups TEXT,
|
||||
title TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE post_custom_fields (
|
||||
post_id INTEGER NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
value TEXT,
|
||||
PRIMARY KEY (post_id, name)
|
||||
);
|
||||
|
||||
CREATE TABLE posts (
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
user_id INTEGER,
|
||||
topic_id INTEGER NOT NULL,
|
||||
post_number INTEGER NOT NULL,
|
||||
raw TEXT NOT NULL,
|
||||
created_at DATETIME NOT NULL,
|
||||
like_count INTEGER NOT NULL,
|
||||
reply_to_post_id TEXT,
|
||||
original_raw TEXT,
|
||||
upload_ids JSON_TEXT,
|
||||
old_relative_url TEXT,
|
||||
accepted_answer BOOLEAN,
|
||||
small_action TEXT,
|
||||
whisper BOOLEAN,
|
||||
placeholders JSON_TEXT
|
||||
);
|
||||
|
||||
CREATE INDEX posts_by_topic_post_number ON posts (topic_id, post_number);
|
||||
|
||||
CREATE TABLE schema_migrations (
|
||||
path TEXT NOT NULL PRIMARY KEY,
|
||||
created_at DATETIME
|
||||
);
|
||||
|
||||
CREATE TABLE site_settings (
|
||||
name TEXT NOT NULL,
|
||||
value TEXT,
|
||||
action TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE tag_groups (
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
name TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE tag_users (
|
||||
tag_id INTEGER NOT NULL,
|
||||
user_id INTEGER NOT NULL,
|
||||
notification_level INTEGER NOT NULL,
|
||||
PRIMARY KEY (tag_id, user_id)
|
||||
);
|
||||
|
||||
CREATE TABLE tags (
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
tag_group_id INTEGER
|
||||
);
|
||||
|
||||
CREATE TABLE topic_tags (
|
||||
topic_id INTEGER NOT NULL,
|
||||
tag_id INTEGER NOT NULL,
|
||||
PRIMARY KEY (topic_id, tag_id)
|
||||
);
|
||||
|
||||
CREATE TABLE topic_users (
|
||||
user_id INTEGER NOT NULL,
|
||||
topic_id INTEGER NOT NULL,
|
||||
last_read_post_number INTEGER,
|
||||
last_visited_at DATETIME,
|
||||
first_visited_at DATETIME,
|
||||
notification_level INTEGER NOT NULL,
|
||||
notifications_changed_at DATETIME,
|
||||
notifications_reason_id INTEGER,
|
||||
total_msecs_viewed INTEGER NOT NULL,
|
||||
PRIMARY KEY (user_id, topic_id)
|
||||
);
|
||||
|
||||
CREATE TABLE topics (
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
title TEXT NOT NULL,
|
||||
created_at DATETIME NOT NULL,
|
||||
views INTEGER NOT NULL,
|
||||
user_id INTEGER,
|
||||
category_id INTEGER,
|
||||
visible BOOLEAN NOT NULL,
|
||||
closed BOOLEAN NOT NULL,
|
||||
archived BOOLEAN NOT NULL,
|
||||
pinned_at DATETIME,
|
||||
subtype TEXT,
|
||||
pinned_globally BOOLEAN NOT NULL,
|
||||
pinned_until DATETIME,
|
||||
old_relative_url TEXT,
|
||||
private_message TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE uploads (
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
user_id INTEGER NOT NULL,
|
||||
filename TEXT NOT NULL,
|
||||
relative_path TEXT,
|
||||
type TEXT,
|
||||
data BLOB
|
||||
);
|
||||
|
||||
CREATE TABLE user_badges (
|
||||
badge_id INTEGER NOT NULL,
|
||||
user_id INTEGER NOT NULL,
|
||||
granted_at DATETIME NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE user_field_values (
|
||||
user_id INTEGER NOT NULL,
|
||||
field_id INTEGER NOT NULL,
|
||||
is_multiselect_field BOOLEAN NOT NULL,
|
||||
value TEXT
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX user_field_values_multiselect ON user_field_values (user_id, field_id, value) WHERE is_multiselect_field = TRUE;
|
||||
CREATE UNIQUE INDEX user_field_values_not_multiselect ON user_field_values (user_id, field_id) WHERE is_multiselect_field = FALSE;
|
||||
|
||||
CREATE TABLE user_fields (
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
field_type TEXT NOT NULL,
|
||||
editable BOOLEAN NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
required BOOLEAN NOT NULL,
|
||||
show_on_profile BOOLEAN NOT NULL,
|
||||
position INTEGER,
|
||||
show_on_user_card BOOLEAN NOT NULL,
|
||||
searchable BOOLEAN NOT NULL,
|
||||
options JSON_TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE users (
|
||||
id INTEGER NOT NULL PRIMARY KEY,
|
||||
username TEXT NOT NULL,
|
||||
created_at DATETIME,
|
||||
name TEXT,
|
||||
last_seen_at DATETIME,
|
||||
admin BOOLEAN NOT NULL,
|
||||
trust_level INTEGER,
|
||||
approved BOOLEAN NOT NULL,
|
||||
approved_at DATETIME,
|
||||
date_of_birth DATE,
|
||||
moderator BOOLEAN,
|
||||
registration_ip_address TEXT,
|
||||
staged BOOLEAN,
|
||||
email TEXT,
|
||||
avatar_path TEXT,
|
||||
avatar_url TEXT,
|
||||
avatar_upload_id TEXT,
|
||||
bio TEXT,
|
||||
password TEXT,
|
||||
suspension TEXT,
|
||||
location TEXT,
|
||||
website TEXT,
|
||||
old_relative_url TEXT,
|
||||
sso_record TEXT,
|
||||
anonymized BOOLEAN,
|
||||
original_username TEXT,
|
||||
timezone TEXT,
|
||||
email_level INTEGER,
|
||||
email_messages_level INTEGER,
|
||||
email_digests BOOLEAN
|
||||
);
|
||||
|
||||
|
||||
/*
|
||||
Core table columns implicitly excluded from the generated schema above via the `include` configuration option
|
||||
in `schema.yml`. This serves as an inventory of these columns, allowing new core additions to be tracked and,
|
||||
if necessary, synchronized with the intermediate database schema.
|
||||
|
||||
Table: groups
|
||||
--------------
|
||||
created_at datetime false
|
||||
automatic boolean false
|
||||
user_count integer false
|
||||
automatic_membership_email_domains text true
|
||||
primary_group boolean false
|
||||
title string true
|
||||
grant_trust_level integer true
|
||||
incoming_email string true
|
||||
has_messages boolean false
|
||||
flair_bg_color string true
|
||||
flair_color string true
|
||||
bio_raw text true
|
||||
bio_cooked text true
|
||||
allow_membership_requests boolean false
|
||||
default_notification_level integer false
|
||||
public_exit boolean false
|
||||
public_admission boolean false
|
||||
membership_request_template text true
|
||||
smtp_server string true
|
||||
smtp_port integer true
|
||||
smtp_ssl boolean true
|
||||
imap_server string true
|
||||
imap_port integer true
|
||||
imap_ssl boolean true
|
||||
imap_mailbox_name string false
|
||||
imap_uid_validity integer false
|
||||
imap_last_uid integer false
|
||||
email_username string true
|
||||
email_password string true
|
||||
publish_read_state boolean false
|
||||
imap_last_error text true
|
||||
imap_old_emails integer true
|
||||
imap_new_emails integer true
|
||||
flair_icon string true
|
||||
flair_upload_id integer true
|
||||
allow_unknown_sender_topic_replies boolean false
|
||||
smtp_enabled boolean true
|
||||
smtp_updated_at datetime true
|
||||
smtp_updated_by_id integer true
|
||||
imap_enabled boolean true
|
||||
imap_updated_at datetime true
|
||||
imap_updated_by_id integer true
|
||||
email_from_alias string true
|
||||
|
||||
Table: site_settings
|
||||
---------------------
|
||||
id integer false
|
||||
data_type integer false
|
||||
created_at datetime false
|
||||
|
||||
Table: tag_groups
|
||||
------------------
|
||||
created_at datetime false
|
||||
parent_tag_id integer true
|
||||
one_per_topic boolean true
|
||||
|
||||
Table: tags
|
||||
------------
|
||||
created_at datetime false
|
||||
pm_topic_count integer false
|
||||
target_tag_id integer true
|
||||
description string true
|
||||
public_topic_count integer false
|
||||
staff_topic_count integer false
|
||||
|
||||
Table: user_badges
|
||||
-------------------
|
||||
id integer false
|
||||
granted_by_id integer false
|
||||
post_id integer true
|
||||
notification_id integer true
|
||||
seq integer false
|
||||
featured_rank integer true
|
||||
created_at datetime false
|
||||
is_favorite boolean true
|
||||
*/
|
Reference in New Issue
Block a user