mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-02 01:53:03 +08:00
Before:
```sql
CREATE TABLE muted_users
(
created_at DATETIME,
muted_user_id NUMERIC NOT NULL,
user_id NUMERIC NOT NULL
);
CREATE TABLE user_custom_fields
(
created_at DATETIME,
field_id NUMERIC,
is_multiselect_field BOOLEAN,
name TEXT NOT NULL,
user_id NUMERIC NOT NULL,
value TEXT
);
CREATE UNIQUE INDEX ucf_multiselect_by_field_id_index ON user_custom_fields (user_id, field_id, value) WHERE is_multiselect_field = TRUE AND field_id IS NOT NULL;
CREATE UNIQUE INDEX ucf_not_multiselect_by_field_id_index ON user_custom_fields (user_id, field_id) WHERE is_multiselect_field = FALSE AND field_id IS NOT NULL;
CREATE UNIQUE INDEX ucf_multiselect_by_name_index ON user_custom_fields (user_id, name, value) WHERE is_multiselect_field = TRUE;
CREATE UNIQUE INDEX ucf_not_multiselect_by_name_index ON user_custom_fields (user_id, name) WHERE is_multiselect_field = FALSE;
CREATE TABLE user_emails
(
email TEXT NOT NULL,
user_id NUMERIC NOT NULL,
created_at DATETIME,
"primary" BOOLEAN,
PRIMARY KEY (user_id, email)
);
```
After:
```sql
CREATE TABLE muted_users
(
created_at DATETIME,
muted_user_id NUMERIC NOT NULL,
user_id NUMERIC NOT NULL
);
CREATE TABLE user_custom_fields
(
created_at DATETIME,
field_id NUMERIC,
is_multiselect_field BOOLEAN,
name TEXT NOT NULL,
user_id NUMERIC NOT NULL,
value TEXT
);
CREATE UNIQUE INDEX ucf_multiselect_by_field_id_index ON user_custom_fields (user_id, field_id, value) WHERE is_multiselect_field = TRUE AND field_id IS NOT NULL;
CREATE UNIQUE INDEX ucf_not_multiselect_by_field_id_index ON user_custom_fields (user_id, field_id) WHERE is_multiselect_field = FALSE AND field_id IS NOT NULL;
CREATE UNIQUE INDEX ucf_multiselect_by_name_index ON user_custom_fields (user_id, name, value) WHERE is_multiselect_field = TRUE;
CREATE UNIQUE INDEX ucf_not_multiselect_by_name_index ON user_custom_fields (user_id, name) WHERE is_multiselect_field = FALSE;
CREATE TABLE user_emails
(
email TEXT NOT NULL,
user_id NUMERIC NOT NULL,
created_at DATETIME,
"primary" BOOLEAN,
PRIMARY KEY (user_id, email)
);
```
|
||
|---|---|---|
| .. | ||
| bin | ||
| config | ||
| db | ||
| docs | ||
| lib | ||
| scripts/benchmarks | ||
| spec | ||
| .gitignore | ||
| .rubocop.yml | ||
| migrations.rb | ||
| README.md | ||
Migrations Tooling
Command line interface
./bin/cli help
Converters
Public converters are stored in lib/converters/.
If you need to run a private converter, put its code into a subdirectory of private/converters/
Development
Installing gems
bundle config set --local with migrations
bundle install
Updating gems
bundle update --group migrations
Running tests
You need to execute rspec in the root of the project.
bin/rspec --default-path migrations/spec