mirror of
https://github.com/spacebarchat/server.git
synced 2026-07-11 14:09:04 +00:00
Move migrations to database
This commit is contained in:
@@ -56,13 +56,13 @@ export const DataSourceOptions = isHeadlessProcess
|
||||
type: DatabaseType,
|
||||
charset: "utf8mb4",
|
||||
url: process.env.DATABASE,
|
||||
entities: [path.join(__dirname, "..", "entities", "*.js")],
|
||||
entities: [path.join(__dirname, "entities", "*.js")],
|
||||
synchronize: !!process.env.DB_SYNC,
|
||||
logging: !!process.env.DB_LOGGING,
|
||||
bigNumberStrings: false,
|
||||
supportBigNumbers: true,
|
||||
name: "default",
|
||||
migrations: applyMigrations ? [path.join(__dirname, "..", "migration", DatabaseType, "*.js")] : [],
|
||||
migrations: applyMigrations ? [path.join(__dirname, "migration", DatabaseType, "*.js")] : [],
|
||||
});
|
||||
|
||||
// Gets the existing database connection
|
||||
@@ -108,7 +108,7 @@ export async function initDatabase(): Promise<DataSource> {
|
||||
if (!(await dbExists())) {
|
||||
console.log("[Database] This appears to be a fresh database. Running initial DDL.");
|
||||
const qr = dbConnection.createQueryRunner();
|
||||
const initialPath = path.join(__dirname, "..", "migration", DatabaseType + "-initial.js");
|
||||
const initialPath = path.join(__dirname, "migration", DatabaseType + "-initial.js");
|
||||
if (fs.existsSync(initialPath)) {
|
||||
console.log("[Database] Found initial migration file, running it.");
|
||||
await new (require(`../migration/${DatabaseType}-initial`).initial0)().up(qr);
|
||||
|
||||
@@ -0,0 +1,838 @@
|
||||
/*
|
||||
Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
|
||||
Copyright (C) 2025 Spacebar and Spacebar Contributors
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published
|
||||
by the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
export class initial0 implements MigrationInterface {
|
||||
name = "initial0";
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`CREATE TABLE public.applications (
|
||||
id character varying NOT NULL,
|
||||
name character varying NOT NULL,
|
||||
icon character varying,
|
||||
description character varying,
|
||||
summary character varying,
|
||||
type text,
|
||||
hook boolean NOT NULL,
|
||||
bot_public boolean NOT NULL,
|
||||
bot_require_code_grant boolean NOT NULL,
|
||||
verify_key character varying NOT NULL,
|
||||
flags integer NOT NULL,
|
||||
redirect_uris text,
|
||||
rpc_application_state integer,
|
||||
store_application_state integer,
|
||||
verification_state integer,
|
||||
interactions_endpoint_url character varying,
|
||||
integration_public boolean,
|
||||
integration_require_code_grant boolean,
|
||||
discoverability_state integer,
|
||||
discovery_eligibility_flags integer,
|
||||
tags text,
|
||||
cover_image character varying,
|
||||
install_params text,
|
||||
terms_of_service_url character varying,
|
||||
privacy_policy_url character varying,
|
||||
owner_id character varying,
|
||||
bot_user_id character varying,
|
||||
team_id character varying
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.attachments (
|
||||
id character varying NOT NULL,
|
||||
filename character varying NOT NULL,
|
||||
size integer NOT NULL,
|
||||
url character varying NOT NULL,
|
||||
proxy_url character varying NOT NULL,
|
||||
height integer,
|
||||
width integer,
|
||||
content_type character varying,
|
||||
message_id character varying
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.audit_logs (
|
||||
id character varying NOT NULL,
|
||||
user_id character varying,
|
||||
action_type integer NOT NULL,
|
||||
options text,
|
||||
changes text NOT NULL,
|
||||
reason character varying,
|
||||
target_id character varying
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.backup_codes (
|
||||
id character varying NOT NULL,
|
||||
code character varying NOT NULL,
|
||||
consumed boolean NOT NULL,
|
||||
expired boolean NOT NULL,
|
||||
user_id character varying
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.bans (
|
||||
id character varying NOT NULL,
|
||||
user_id character varying,
|
||||
guild_id character varying,
|
||||
executor_id character varying,
|
||||
ip character varying NOT NULL,
|
||||
reason character varying
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.categories (
|
||||
id integer NOT NULL,
|
||||
name character varying,
|
||||
localizations text NOT NULL,
|
||||
is_primary boolean
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.channels (
|
||||
id character varying NOT NULL,
|
||||
created_at timestamp without time zone NOT NULL,
|
||||
name character varying,
|
||||
icon text,
|
||||
type integer NOT NULL,
|
||||
last_message_id character varying,
|
||||
guild_id character varying,
|
||||
parent_id character varying,
|
||||
owner_id character varying,
|
||||
last_pin_timestamp integer,
|
||||
default_auto_archive_duration integer,
|
||||
permission_overwrites text,
|
||||
video_quality_mode integer,
|
||||
bitrate integer,
|
||||
user_limit integer,
|
||||
nsfw boolean NOT NULL,
|
||||
rate_limit_per_user integer,
|
||||
topic character varying,
|
||||
retention_policy_id character varying,
|
||||
flags integer NOT NULL,
|
||||
default_thread_rate_limit_per_user integer NOT NULL,
|
||||
position integer NOT NULL DEFAULT 0
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.client_release (
|
||||
id character varying NOT NULL,
|
||||
name character varying NOT NULL,
|
||||
pub_date timestamp without time zone NOT NULL,
|
||||
url character varying NOT NULL,
|
||||
platform character varying NOT NULL,
|
||||
enabled boolean NOT NULL,
|
||||
notes character varying
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.config (
|
||||
key character varying NOT NULL,
|
||||
value text
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.connected_accounts (
|
||||
id character varying NOT NULL,
|
||||
external_id character varying NOT NULL,
|
||||
user_id character varying,
|
||||
friend_sync boolean NOT NULL,
|
||||
name character varying NOT NULL,
|
||||
revoked boolean NOT NULL,
|
||||
show_activity integer NOT NULL,
|
||||
type character varying NOT NULL,
|
||||
verified boolean NOT NULL,
|
||||
visibility integer NOT NULL,
|
||||
integrations text NOT NULL,
|
||||
metadata text,
|
||||
metadata_visibility integer NOT NULL,
|
||||
two_way_link boolean NOT NULL,
|
||||
token_data text
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.connection_config (
|
||||
key character varying NOT NULL,
|
||||
value text
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.embed_cache (
|
||||
id character varying NOT NULL,
|
||||
url character varying NOT NULL,
|
||||
embed text NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.emojis (
|
||||
id character varying NOT NULL,
|
||||
animated boolean NOT NULL,
|
||||
available boolean NOT NULL,
|
||||
guild_id character varying NOT NULL,
|
||||
user_id character varying,
|
||||
managed boolean NOT NULL,
|
||||
name character varying NOT NULL,
|
||||
require_colons boolean NOT NULL,
|
||||
roles text NOT NULL,
|
||||
groups text
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.guilds (
|
||||
id character varying NOT NULL,
|
||||
afk_channel_id character varying,
|
||||
afk_timeout integer,
|
||||
banner character varying,
|
||||
default_message_notifications integer,
|
||||
description character varying,
|
||||
discovery_splash character varying,
|
||||
explicit_content_filter integer,
|
||||
features text NOT NULL,
|
||||
primary_category_id character varying,
|
||||
icon character varying,
|
||||
large boolean NOT NULL,
|
||||
max_members integer,
|
||||
max_presences integer,
|
||||
max_video_channel_users integer,
|
||||
member_count integer,
|
||||
presence_count integer,
|
||||
template_id character varying,
|
||||
mfa_level integer,
|
||||
name character varying NOT NULL,
|
||||
owner_id character varying,
|
||||
preferred_locale character varying,
|
||||
premium_subscription_count integer,
|
||||
premium_tier integer NOT NULL,
|
||||
public_updates_channel_id character varying,
|
||||
rules_channel_id character varying,
|
||||
region character varying,
|
||||
splash character varying,
|
||||
system_channel_id character varying,
|
||||
system_channel_flags integer,
|
||||
unavailable boolean NOT NULL,
|
||||
verification_level integer,
|
||||
welcome_screen text NOT NULL,
|
||||
widget_channel_id character varying,
|
||||
widget_enabled boolean NOT NULL,
|
||||
nsfw_level integer,
|
||||
nsfw boolean NOT NULL,
|
||||
parent character varying,
|
||||
premium_progress_bar_enabled boolean
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.invites (
|
||||
code character varying NOT NULL,
|
||||
temporary boolean NOT NULL,
|
||||
uses integer NOT NULL,
|
||||
max_uses integer NOT NULL,
|
||||
max_age integer NOT NULL,
|
||||
created_at timestamp without time zone NOT NULL,
|
||||
expires_at timestamp without time zone,
|
||||
guild_id character varying,
|
||||
channel_id character varying,
|
||||
inviter_id character varying,
|
||||
target_user_id character varying,
|
||||
target_user_type integer,
|
||||
vanity_url boolean,
|
||||
flags integer NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.member_roles (
|
||||
index integer NOT NULL,
|
||||
role_id character varying NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.members (
|
||||
index integer NOT NULL,
|
||||
id character varying NOT NULL,
|
||||
guild_id character varying NOT NULL,
|
||||
nick character varying,
|
||||
joined_at timestamp without time zone NOT NULL,
|
||||
premium_since bigint,
|
||||
deaf boolean NOT NULL,
|
||||
mute boolean NOT NULL,
|
||||
pending boolean NOT NULL,
|
||||
settings text NOT NULL,
|
||||
last_message_id character varying,
|
||||
joined_by character varying,
|
||||
avatar character varying,
|
||||
banner character varying,
|
||||
bio character varying NOT NULL,
|
||||
theme_colors text,
|
||||
pronouns character varying,
|
||||
communication_disabled_until timestamp without time zone
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE SEQUENCE public.members_index_seq
|
||||
AS integer
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
NO MAXVALUE
|
||||
CACHE 1;`);
|
||||
|
||||
await queryRunner.query(`ALTER SEQUENCE public.members_index_seq OWNED BY public.members.index;`);
|
||||
await queryRunner.query(`CREATE TABLE public.message_channel_mentions (
|
||||
"messagesId" character varying NOT NULL,
|
||||
"channelsId" character varying NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.message_role_mentions (
|
||||
"messagesId" character varying NOT NULL,
|
||||
"rolesId" character varying NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.message_stickers (
|
||||
"messagesId" character varying NOT NULL,
|
||||
"stickersId" character varying NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.message_user_mentions (
|
||||
"messagesId" character varying NOT NULL,
|
||||
"usersId" character varying NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.messages (
|
||||
id character varying NOT NULL,
|
||||
channel_id character varying,
|
||||
guild_id character varying,
|
||||
author_id character varying,
|
||||
member_id character varying,
|
||||
webhook_id character varying,
|
||||
application_id character varying,
|
||||
content character varying,
|
||||
"timestamp" timestamp without time zone DEFAULT now() NOT NULL,
|
||||
edited_timestamp timestamp without time zone,
|
||||
tts boolean,
|
||||
mention_everyone boolean,
|
||||
embeds text NOT NULL,
|
||||
reactions text NOT NULL,
|
||||
nonce text,
|
||||
type integer NOT NULL,
|
||||
activity text,
|
||||
message_reference text,
|
||||
interaction text,
|
||||
components text,
|
||||
message_reference_id character varying,
|
||||
pinned boolean,
|
||||
flags integer
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.migrations (
|
||||
id integer NOT NULL,
|
||||
"timestamp" bigint NOT NULL,
|
||||
name character varying NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE SEQUENCE public.migrations_id_seq
|
||||
AS integer
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
NO MAXVALUE
|
||||
CACHE 1;`);
|
||||
|
||||
await queryRunner.query(`ALTER SEQUENCE public.migrations_id_seq OWNED BY public.migrations.id;`);
|
||||
await queryRunner.query(`CREATE TABLE public.notes (
|
||||
id character varying NOT NULL,
|
||||
content character varying NOT NULL,
|
||||
owner_id character varying,
|
||||
target_id character varying
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.rate_limits (
|
||||
id character varying NOT NULL,
|
||||
executor_id character varying NOT NULL,
|
||||
hits integer NOT NULL,
|
||||
blocked boolean NOT NULL,
|
||||
expires_at timestamp without time zone NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.read_states (
|
||||
id character varying NOT NULL,
|
||||
channel_id character varying NOT NULL,
|
||||
user_id character varying NOT NULL,
|
||||
last_message_id character varying,
|
||||
public_ack character varying,
|
||||
notifications_cursor character varying,
|
||||
last_pin_timestamp timestamp without time zone,
|
||||
mention_count integer
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.recipients (
|
||||
id character varying NOT NULL,
|
||||
channel_id character varying NOT NULL,
|
||||
user_id character varying NOT NULL,
|
||||
closed boolean DEFAULT false NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.relationships (
|
||||
id character varying NOT NULL,
|
||||
from_id character varying NOT NULL,
|
||||
to_id character varying NOT NULL,
|
||||
nickname character varying,
|
||||
type integer NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.roles (
|
||||
id character varying NOT NULL,
|
||||
guild_id character varying NOT NULL,
|
||||
color integer NOT NULL,
|
||||
hoist boolean NOT NULL,
|
||||
managed boolean NOT NULL,
|
||||
mentionable boolean NOT NULL,
|
||||
name character varying NOT NULL,
|
||||
permissions character varying NOT NULL,
|
||||
"position" integer NOT NULL,
|
||||
icon character varying,
|
||||
unicode_emoji character varying,
|
||||
tags text,
|
||||
flags integer DEFAULT 0 NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.security_settings (
|
||||
id character varying NOT NULL,
|
||||
guild_id character varying,
|
||||
channel_id character varying,
|
||||
encryption_permission_mask integer NOT NULL,
|
||||
allowed_algorithms text NOT NULL,
|
||||
current_algorithm character varying NOT NULL,
|
||||
used_since_message character varying
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.sessions (
|
||||
id character varying NOT NULL,
|
||||
user_id character varying,
|
||||
session_id character varying NOT NULL,
|
||||
activities text,
|
||||
client_info text NOT NULL,
|
||||
status character varying NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.sticker_packs (
|
||||
id character varying NOT NULL,
|
||||
name character varying NOT NULL,
|
||||
description character varying,
|
||||
banner_asset_id character varying,
|
||||
cover_sticker_id character varying,
|
||||
"coverStickerId" character varying
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.stickers (
|
||||
id character varying NOT NULL,
|
||||
name character varying NOT NULL,
|
||||
description character varying,
|
||||
available boolean,
|
||||
tags character varying,
|
||||
pack_id character varying,
|
||||
guild_id character varying,
|
||||
user_id character varying,
|
||||
type integer NOT NULL,
|
||||
format_type integer NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.team_members (
|
||||
id character varying NOT NULL,
|
||||
membership_state integer NOT NULL,
|
||||
permissions text NOT NULL,
|
||||
team_id character varying,
|
||||
user_id character varying
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.teams (
|
||||
id character varying NOT NULL,
|
||||
icon character varying,
|
||||
name character varying NOT NULL,
|
||||
owner_user_id character varying
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.templates (
|
||||
id character varying NOT NULL,
|
||||
code character varying NOT NULL,
|
||||
name character varying NOT NULL,
|
||||
description character varying,
|
||||
usage_count integer,
|
||||
creator_id character varying,
|
||||
created_at timestamp without time zone NOT NULL,
|
||||
updated_at timestamp without time zone NOT NULL,
|
||||
source_guild_id character varying,
|
||||
serialized_source_guild text NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.user_settings (
|
||||
index integer NOT NULL,
|
||||
afk_timeout integer,
|
||||
allow_accessibility_detection boolean,
|
||||
animate_emoji boolean,
|
||||
animate_stickers integer,
|
||||
contact_sync_enabled boolean,
|
||||
convert_emoticons boolean,
|
||||
custom_status text,
|
||||
default_guilds_restricted boolean,
|
||||
detect_platform_accounts boolean,
|
||||
developer_mode boolean,
|
||||
disable_games_tab boolean,
|
||||
enable_tts_command boolean,
|
||||
explicit_content_filter integer,
|
||||
friend_source_flags text,
|
||||
gateway_connected boolean,
|
||||
gif_auto_play boolean,
|
||||
guild_folders text,
|
||||
guild_positions text,
|
||||
inline_attachment_media boolean,
|
||||
inline_embed_media boolean,
|
||||
locale character varying,
|
||||
message_display_compact boolean,
|
||||
native_phone_integration_enabled boolean,
|
||||
render_embeds boolean,
|
||||
render_reactions boolean,
|
||||
restricted_guilds text,
|
||||
show_current_game boolean,
|
||||
status character varying,
|
||||
stream_notifications_enabled boolean,
|
||||
theme character varying,
|
||||
timezone_offset integer
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE SEQUENCE public.user_settings_index_seq
|
||||
AS integer
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MINVALUE
|
||||
NO MAXVALUE
|
||||
CACHE 1;`);
|
||||
|
||||
await queryRunner.query(`ALTER SEQUENCE public.user_settings_index_seq OWNED BY public.user_settings.index;`);
|
||||
await queryRunner.query(`CREATE TABLE public.users (
|
||||
id character varying NOT NULL,
|
||||
username character varying NOT NULL,
|
||||
discriminator character varying NOT NULL,
|
||||
avatar character varying,
|
||||
accent_color integer,
|
||||
banner character varying,
|
||||
theme_colors text,
|
||||
pronouns character varying,
|
||||
phone character varying,
|
||||
desktop boolean NOT NULL,
|
||||
mobile boolean NOT NULL,
|
||||
premium boolean NOT NULL,
|
||||
premium_type integer NOT NULL,
|
||||
bot boolean NOT NULL,
|
||||
bio character varying NOT NULL,
|
||||
system boolean NOT NULL,
|
||||
nsfw_allowed boolean NOT NULL,
|
||||
mfa_enabled boolean NOT NULL,
|
||||
totp_secret character varying,
|
||||
totp_last_ticket character varying,
|
||||
created_at timestamp without time zone NOT NULL,
|
||||
premium_since timestamp without time zone,
|
||||
verified boolean NOT NULL,
|
||||
disabled boolean NOT NULL,
|
||||
deleted boolean NOT NULL,
|
||||
email character varying,
|
||||
flags bigint NOT NULL,
|
||||
public_flags bigint NOT NULL,
|
||||
purchased_flags bigint NOT NULL,
|
||||
premium_usage_flags integer NOT NULL,
|
||||
rights bigint NOT NULL,
|
||||
data text NOT NULL,
|
||||
fingerprints text NOT NULL,
|
||||
extended_settings text NOT NULL,
|
||||
"settingsIndex" integer
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.valid_registration_tokens (
|
||||
token character varying NOT NULL,
|
||||
created_at timestamp without time zone NOT NULL,
|
||||
expires_at timestamp without time zone NOT NULL
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.voice_states (
|
||||
id character varying NOT NULL,
|
||||
guild_id character varying,
|
||||
channel_id character varying,
|
||||
user_id character varying,
|
||||
session_id character varying NOT NULL,
|
||||
token character varying,
|
||||
deaf boolean NOT NULL,
|
||||
mute boolean NOT NULL,
|
||||
self_deaf boolean NOT NULL,
|
||||
self_mute boolean NOT NULL,
|
||||
self_stream boolean,
|
||||
self_video boolean NOT NULL,
|
||||
suppress boolean NOT NULL,
|
||||
request_to_speak_timestamp timestamp without time zone
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`CREATE TABLE public.webhooks (
|
||||
id character varying NOT NULL,
|
||||
type integer NOT NULL,
|
||||
name character varying,
|
||||
avatar character varying,
|
||||
token character varying,
|
||||
guild_id character varying,
|
||||
channel_id character varying,
|
||||
application_id character varying,
|
||||
user_id character varying,
|
||||
source_guild_id character varying
|
||||
);`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.members ALTER COLUMN index SET DEFAULT nextval('public.members_index_seq'::regclass);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.migrations ALTER COLUMN id SET DEFAULT nextval('public.migrations_id_seq'::regclass);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.user_settings ALTER COLUMN index SET DEFAULT nextval('public.user_settings_index_seq'::regclass);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.embed_cache ADD CONSTRAINT "PK_0abb7581d4efc5a8b1361389c5e" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.messages ADD CONSTRAINT "PK_18325f38ae6de43878487eff986" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.audit_logs ADD CONSTRAINT "PK_1bb179d048bbc581caa3b013439" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.categories ADD CONSTRAINT "PK_24dbc6126a28ff948da33e97d3b" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.config ADD CONSTRAINT "PK_26489c99ddbb4c91631ef5cc791" PRIMARY KEY (key);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.sessions ADD CONSTRAINT "PK_3238ef96f18b355b671619111bc" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.invites ADD CONSTRAINT "PK_33fd8a248db1cd832baa8aa25bf" PRIMARY KEY (code);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.backup_codes ADD CONSTRAINT "PK_34ab957382dbc57e8fb53f1638f" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.rate_limits ADD CONSTRAINT "PK_3b4449f1f5fc167d921ee619f65" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.security_settings ADD CONSTRAINT "PK_4aec436cf81177ae97a1bcec3c7" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.client_release ADD CONSTRAINT "PK_4c4ea258342d2d6ba1be0a71a43" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.templates ADD CONSTRAINT "PK_515948649ce0bbbe391de702ae5" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.attachments ADD CONSTRAINT "PK_5e1f050bcff31e3084a1d662412" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.connected_accounts ADD CONSTRAINT "PK_70416f1da0be645bb31da01c774" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.message_role_mentions ADD CONSTRAINT "PK_74dba92cc300452a6e14b83ed44" PRIMARY KEY ("messagesId", "rolesId");`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.teams ADD CONSTRAINT "PK_7e5523774a38b08a6236d322403" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.message_channel_mentions ADD CONSTRAINT "PK_85cb45351497cd9d06a79ced65e" PRIMARY KEY ("messagesId", "channelsId");`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.migrations ADD CONSTRAINT "PK_8c82d7f526340ab734260ea46be" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.applications ADD CONSTRAINT "PK_938c0a27255637bde919591888f" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.member_roles ADD CONSTRAINT "PK_951c1d72a0fd1da8760b4a1fd66" PRIMARY KEY (index, role_id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.emojis ADD CONSTRAINT "PK_9adb96a675f555c6169bad7ba62" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.message_user_mentions ADD CONSTRAINT "PK_9b9b6e245ad47a48dbd7605d4fb" PRIMARY KEY ("messagesId", "usersId");`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.webhooks ADD CONSTRAINT "PK_9e8795cfc899ab7bdaa831e8527" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.sticker_packs ADD CONSTRAINT "PK_a27381efea0f876f5d3233af655" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.users ADD CONSTRAINT "PK_a3ffb1c0c8416b9fc6f907b7433" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.bans ADD CONSTRAINT "PK_a4d6f261bffa4615c62d756566a" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.voice_states ADD CONSTRAINT "PK_ada09a50c134fad1369b510e3ce" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.notes ADD CONSTRAINT "PK_af6206538ea96c4e77e9f400c3d" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.members ADD CONSTRAINT "PK_b4a6b8c2478e5df990909c6cf6a" PRIMARY KEY (index);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.relationships ADD CONSTRAINT "PK_ba20e2f5cf487408e08e4dcecaf" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.connection_config ADD CONSTRAINT "PK_bc0554f736ad71dde346549488a" PRIMARY KEY (key);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.channels ADD CONSTRAINT "PK_bc603823f3f741359c2339389f9" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.roles ADD CONSTRAINT "PK_c1433d71a4838793a49dcad46ab" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.team_members ADD CONSTRAINT "PK_ca3eae89dcf20c9fd95bf7460aa" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.recipients ADD CONSTRAINT "PK_de8fc5a9c364568f294798fe1e9" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.valid_registration_tokens ADD CONSTRAINT "PK_e0f5c8e3fcefe3134a092c50485" PRIMARY KEY (token);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.stickers ADD CONSTRAINT "PK_e1dafa4063a5532645cc2810374" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.read_states ADD CONSTRAINT "PK_e6956a804978f01b713b1ed58e2" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.guilds ADD CONSTRAINT "PK_e7e7f2a51bd6d96a9ac2aa560f9" PRIMARY KEY (id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.user_settings ADD CONSTRAINT "PK_e81f8bb92802737337d35c00981" PRIMARY KEY (index);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.message_stickers ADD CONSTRAINT "PK_ed820c4093d0b8cd1d2bcf66087" PRIMARY KEY ("messagesId", "stickersId");`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.users ADD CONSTRAINT "REL_0c14beb78d8c5ccba66072adbc" UNIQUE ("settingsIndex");`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.applications ADD CONSTRAINT "REL_2ce5a55796fe4c2f77ece57a64" UNIQUE (bot_user_id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.notes ADD CONSTRAINT "UQ_74e6689b9568cc965b8bfc9150b" UNIQUE (owner_id, target_id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.templates ADD CONSTRAINT "UQ_be38737bf339baf63b1daeffb55" UNIQUE (code);`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_05535bc695e9f7ee104616459d" ON public.messages USING btree (author_id);`);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_0abf8b443321bd3cf7f81ee17a" ON public.read_states USING btree (channel_id, user_id);`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_29d63eb1a458200851bc37d074" ON public.message_role_mentions USING btree ("rolesId");`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_2a27102ecd1d81b4582a436092" ON public.message_channel_mentions USING btree ("messagesId");`);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_3ed7a60fb7dbe04e1ba9332a8b" ON public.messages USING btree (channel_id, id);`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_40bb6f23e7cc133292e92829d2" ON public.message_stickers USING btree ("messagesId");`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_5d7ddc8a5f9c167f548625e772" ON public.member_roles USING btree (index);`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_86b9109b155eb70c0a2ca3b4b6" ON public.messages USING btree (channel_id);`);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_a0b2ff0a598df0b0d055934a17" ON public.relationships USING btree (from_id, to_id);`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_a343387fc560ef378760681c23" ON public.message_user_mentions USING btree ("messagesId");`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_a8242cf535337a490b0feaea0b" ON public.message_role_mentions USING btree ("messagesId");`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_b831eb18ceebd28976239b1e2f" ON public.message_user_mentions USING btree ("usersId");`);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_bb2bf9386ac443afbbbf9f12d3" ON public.members USING btree (id, guild_id);`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_bdb8c09e1464cabf62105bf4b9" ON public.message_channel_mentions USING btree ("channelsId");`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_e22a70819d07659c7a71c112a1" ON public.message_stickers USING btree ("stickersId");`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_e9080e7a7997a0170026d5139c" ON public.member_roles USING btree (role_id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.voice_states ADD CONSTRAINT "FK_03779ef216d4b0358470d9cb748" FOREIGN KEY (guild_id) REFERENCES public.guilds(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.messages ADD CONSTRAINT "FK_05535bc695e9f7ee104616459d3" FOREIGN KEY (author_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.bans ADD CONSTRAINT "FK_07ad88c86d1f290d46748410d58" FOREIGN KEY (executor_id) REFERENCES public.users(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.sessions ADD CONSTRAINT "FK_085d540d9f418cfbdc7bd55bb19" FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.users ADD CONSTRAINT "FK_0c14beb78d8c5ccba66072adbc7" FOREIGN KEY ("settingsIndex") REFERENCES public.user_settings(index);`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.webhooks ADD CONSTRAINT "FK_0d523f6f997c86e052c49b1455f" FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.invites ADD CONSTRAINT "FK_11a0d394f8fc649c19ce5f16b59" FOREIGN KEY (target_user_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.teams ADD CONSTRAINT "FK_13f00abf7cb6096c43ecaf8c108" FOREIGN KEY (owner_user_id) REFERENCES public.users(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.invites ADD CONSTRAINT "FK_15c35422032e0b22b4ada95f48f" FOREIGN KEY (inviter_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.members ADD CONSTRAINT "FK_16aceddd5b89825b8ed6029ad1c" FOREIGN KEY (guild_id) REFERENCES public.guilds(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.stickers ADD CONSTRAINT "FK_193d551d852aca5347ef5c9f205" FOREIGN KEY (guild_id) REFERENCES public.guilds(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.read_states ADD CONSTRAINT "FK_195f92e4dd1254a4e348c043763" FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.notes ADD CONSTRAINT "FK_23e08e5b4481711d573e1abecdc" FOREIGN KEY (target_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.members ADD CONSTRAINT "FK_28b53062261b996d9c99fa12404" FOREIGN KEY (id) REFERENCES public.users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.message_role_mentions ADD CONSTRAINT "FK_29d63eb1a458200851bc37d074b" FOREIGN KEY ("rolesId") REFERENCES public.roles(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.message_channel_mentions ADD CONSTRAINT "FK_2a27102ecd1d81b4582a4360921" FOREIGN KEY ("messagesId") REFERENCES public.messages(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.applications ADD CONSTRAINT "FK_2ce5a55796fe4c2f77ece57a647" FOREIGN KEY (bot_user_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.recipients ADD CONSTRAINT "FK_2f18ee1ba667f233ae86c0ea60e" FOREIGN KEY (channel_id) REFERENCES public.channels(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.channels ADD CONSTRAINT "FK_3274522d14af40540b1a883fc80" FOREIGN KEY (parent_id) REFERENCES public.channels(id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.channels ADD CONSTRAINT "FK_3873ed438575cce703ecff4fc7b" FOREIGN KEY (owner_id) REFERENCES public.users(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.webhooks ADD CONSTRAINT "FK_3a285f4f49c40e0706d3018bc9f" FOREIGN KEY (source_guild_id) REFERENCES public.guilds(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.audit_logs ADD CONSTRAINT "FK_3cd01cd3ae7aab010310d96ac8e" FOREIGN KEY (target_id) REFERENCES public.users(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.invites ADD CONSTRAINT "FK_3f4939aa1461e8af57fea3fb05d" FOREIGN KEY (guild_id) REFERENCES public.guilds(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.message_stickers ADD CONSTRAINT "FK_40bb6f23e7cc133292e92829d28" FOREIGN KEY ("messagesId") REFERENCES public.messages(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.read_states ADD CONSTRAINT "FK_40da2fca4e0eaf7a23b5bfc5d34" FOREIGN KEY (channel_id) REFERENCES public.channels(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.templates ADD CONSTRAINT "FK_445d00eaaea0e60a017a5ed0c11" FOREIGN KEY (source_guild_id) REFERENCES public.guilds(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.sticker_packs ADD CONSTRAINT "FK_448fafba4355ee1c837bbc865f1" FOREIGN KEY ("coverStickerId") REFERENCES public.stickers(id);`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.webhooks ADD CONSTRAINT "FK_487a7af59d189f744fe394368fc" FOREIGN KEY (guild_id) REFERENCES public.guilds(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.emojis ADD CONSTRAINT "FK_4b988e0db89d94cebcf07f598cc" FOREIGN KEY (guild_id) REFERENCES public.guilds(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.bans ADD CONSTRAINT "FK_5999e8e449f80a236ff72023559" FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.messages ADD CONSTRAINT "FK_5d3ec1cb962de6488637fd779d6" FOREIGN KEY (application_id) REFERENCES public.applications(id);`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.member_roles ADD CONSTRAINT "FK_5d7ddc8a5f9c167f548625e772e" FOREIGN KEY (index) REFERENCES public.members(index) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.voice_states ADD CONSTRAINT "FK_5fe1d5f931a67e85039c640001b" FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.recipients ADD CONSTRAINT "FK_6157e8b6ba4e6e3089616481fe2" FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.messages ADD CONSTRAINT "FK_61a92bb65b302a76d9c1fcd3174" FOREIGN KEY (message_reference_id) REFERENCES public.messages(id);`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.attachments ADD CONSTRAINT "FK_623e10eec51ada466c5038979e3" FOREIGN KEY (message_id) REFERENCES public.messages(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.invites ADD CONSTRAINT "FK_6a15b051fe5050aa00a4b9ff0f6" FOREIGN KEY (channel_id) REFERENCES public.channels(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.backup_codes ADD CONSTRAINT "FK_70066ea80d2f4b871beda32633b" FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.messages ADD CONSTRAINT "FK_86b9109b155eb70c0a2ca3b4b6d" FOREIGN KEY (channel_id) REFERENCES public.channels(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.guilds ADD CONSTRAINT "FK_8d450b016dc8bec35f36729e4b0" FOREIGN KEY (public_updates_channel_id) REFERENCES public.channels(id);`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.stickers ADD CONSTRAINT "FK_8f4ee73f2bb2325ff980502e158" FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.guilds ADD CONSTRAINT "FK_95828668aa333460582e0ca6396" FOREIGN KEY (rules_channel_id) REFERENCES public.channels(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.relationships ADD CONSTRAINT "FK_9af4194bab1250b1c584ae4f1d7" FOREIGN KEY (from_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.relationships ADD CONSTRAINT "FK_9c7f6b98a9843b76dce1b0c878b" FOREIGN KEY (to_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.guilds ADD CONSTRAINT "FK_9d1d665379eefde7876a17afa99" FOREIGN KEY (widget_channel_id) REFERENCES public.channels(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.bans ADD CONSTRAINT "FK_9d3ab7dd180ebdd245cdb66ecad" FOREIGN KEY (guild_id) REFERENCES public.guilds(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.voice_states ADD CONSTRAINT "FK_9f8d389866b40b6657edd026dd4" FOREIGN KEY (channel_id) REFERENCES public.channels(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.message_user_mentions ADD CONSTRAINT "FK_a343387fc560ef378760681c236" FOREIGN KEY ("messagesId") REFERENCES public.messages(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.applications ADD CONSTRAINT "FK_a36ed02953077f408d0f3ebc424" FOREIGN KEY (team_id) REFERENCES public.teams(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.message_role_mentions ADD CONSTRAINT "FK_a8242cf535337a490b0feaea0b4" FOREIGN KEY ("messagesId") REFERENCES public.messages(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.messages ADD CONSTRAINT "FK_b0525304f2262b7014245351c76" FOREIGN KEY (member_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.messages ADD CONSTRAINT "FK_b193588441b085352a4c0109423" FOREIGN KEY (guild_id) REFERENCES public.guilds(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.message_user_mentions ADD CONSTRAINT "FK_b831eb18ceebd28976239b1e2f8" FOREIGN KEY ("usersId") REFERENCES public.users(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.audit_logs ADD CONSTRAINT "FK_bd2726fd31b35443f2245b93ba0" FOREIGN KEY (user_id) REFERENCES public.users(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.message_channel_mentions ADD CONSTRAINT "FK_bdb8c09e1464cabf62105bf4b9d" FOREIGN KEY ("channelsId") REFERENCES public.channels(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.channels ADD CONSTRAINT "FK_c253dafe5f3a03ec00cd8fb4581" FOREIGN KEY (guild_id) REFERENCES public.guilds(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.team_members ADD CONSTRAINT "FK_c2bf4967c8c2a6b845dadfbf3d4" FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.roles ADD CONSTRAINT "FK_c32c1ab1c4dc7dcb0278c4b1b8b" FOREIGN KEY (guild_id) REFERENCES public.guilds(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.webhooks ADD CONSTRAINT "FK_c3e5305461931763b56aa905f1c" FOREIGN KEY (application_id) REFERENCES public.applications(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.guilds ADD CONSTRAINT "FK_cfc3d3ad260f8121c95b31a1fce" FOREIGN KEY (system_channel_id) REFERENCES public.channels(id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.templates ADD CONSTRAINT "FK_d7374b7f8f5fbfdececa4fb62e1" FOREIGN KEY (creator_id) REFERENCES public.users(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.webhooks ADD CONSTRAINT "FK_df528cf77e82f8032230e7e37d8" FOREIGN KEY (channel_id) REFERENCES public.channels(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.message_stickers ADD CONSTRAINT "FK_e22a70819d07659c7a71c112a1f" FOREIGN KEY ("stickersId") REFERENCES public.stickers(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.guilds ADD CONSTRAINT "FK_e2a2f873a64a5cf62526de42325" FOREIGN KEY (template_id) REFERENCES public.templates(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.applications ADD CONSTRAINT "FK_e57508958bf92b9d9d25231b5e8" FOREIGN KEY (owner_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.stickers ADD CONSTRAINT "FK_e7cfa5cefa6661b3fb8fda8ce69" FOREIGN KEY (pack_id) REFERENCES public.sticker_packs(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.member_roles ADD CONSTRAINT "FK_e9080e7a7997a0170026d5139c1" FOREIGN KEY (role_id) REFERENCES public.roles(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.connected_accounts ADD CONSTRAINT "FK_f47244225a6a1eac04a3463dd90" FOREIGN KEY (user_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.guilds ADD CONSTRAINT "FK_f591a66b8019d87b0fe6c12dad6" FOREIGN KEY (afk_channel_id) REFERENCES public.channels(id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.messages ADD CONSTRAINT "FK_f83c04bcf1df4e5c0e7a52ed348" FOREIGN KEY (webhook_id) REFERENCES public.webhooks(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.notes ADD CONSTRAINT "FK_f9e103f8ae67cb1787063597925" FOREIGN KEY (owner_id) REFERENCES public.users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.emojis ADD CONSTRAINT "FK_fa7ddd5f9a214e28ce596548421" FOREIGN KEY (user_id) REFERENCES public.users(id);`);
|
||||
await queryRunner.query(`ALTER TABLE ONLY public.guilds ADD CONSTRAINT "FK_fc1a451727e3643ca572a3bb394" FOREIGN KEY (owner_id) REFERENCES public.users(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE ONLY public.team_members ADD CONSTRAINT "FK_fdad7d5768277e60c40e01cdcea" FOREIGN KEY (team_id) REFERENCES public.teams(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(_: QueryRunner): Promise<void> {
|
||||
throw new Error("Can't revert this: just throw away your database lol");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
|
||||
Copyright (C) 2023 Spacebar and Spacebar Contributors
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published
|
||||
by the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class templateDeleteCascade1673609867556 implements MigrationInterface {
|
||||
name = "templateDeleteCascade1673609867556";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "templates" DROP CONSTRAINT "FK_445d00eaaea0e60a017a5ed0c11"`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "templates" ADD CONSTRAINT "FK_445d00eaaea0e60a017a5ed0c11" FOREIGN KEY ("source_guild_id") REFERENCES "guilds"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "templates" DROP CONSTRAINT "FK_445d00eaaea0e60a017a5ed0c11"`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "templates" ADD CONSTRAINT "FK_445d00eaaea0e60a017a5ed0c11" FOREIGN KEY ("source_guild_id") REFERENCES "guilds"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
|
||||
Copyright (C) 2023 Spacebar and Spacebar Contributors
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published
|
||||
by the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class webauthn1675044825710 implements MigrationInterface {
|
||||
name = "webauthn1675044825710";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "security_keys" ("id" character varying NOT NULL, "user_id" character varying, "key_id" character varying NOT NULL, "public_key" character varying NOT NULL, "counter" integer NOT NULL, "name" character varying NOT NULL, CONSTRAINT "PK_6e95cdd91779e7cca06d1fff89c" PRIMARY KEY ("id"))`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE "users" ADD "webauthn_enabled" boolean NOT NULL DEFAULT false`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "security_keys" ADD CONSTRAINT "FK_24c97d0771cafedce6d7163eaad" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "security_keys" DROP CONSTRAINT "FK_24c97d0771cafedce6d7163eaad"`);
|
||||
await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "webauthn_enabled"`);
|
||||
await queryRunner.query(`DROP TABLE "security_keys"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class guildChannelOrdering1696420827239 implements MigrationInterface {
|
||||
name = "guildChannelOrdering1696420827239";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
const guilds = await queryRunner.query(`SELECT id FROM guilds`, undefined, true);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE guilds ADD channel_ordering text NOT NULL DEFAULT '[]'`);
|
||||
|
||||
for (const guild_id of guilds.records.map((x) => x.id)) {
|
||||
const channels: Array<{ position: number; id: string }> = (await queryRunner.query(`SELECT id, position FROM channels WHERE guild_id = $1`, [guild_id], true)).records;
|
||||
|
||||
channels.sort((a, b) => a.position - b.position);
|
||||
|
||||
await queryRunner.query(`UPDATE guilds SET channel_ordering = $1 WHERE id = $2`, [JSON.stringify(channels.map((x) => x.id)), guild_id]);
|
||||
}
|
||||
|
||||
await queryRunner.query(`ALTER TABLE channels DROP COLUMN position`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE channels ADD position integer NOT NULL DEFAULT 0`);
|
||||
|
||||
const guilds = await queryRunner.query(`SELECT id, channel_ordering FROM guilds`, undefined, true);
|
||||
|
||||
for (const guild of guilds.records) {
|
||||
const channel_ordering: string[] = JSON.parse(guild.channel_ordering);
|
||||
|
||||
for (let i = 0; i < channel_ordering.length; i++) {
|
||||
const channel_id = channel_ordering[i];
|
||||
await queryRunner.query(`UPDATE channels SET position = $1 WHERE id = $2`, [i, channel_id]);
|
||||
}
|
||||
}
|
||||
|
||||
await queryRunner.query(`ALTER TABLE guilds DROP COLUMN channel_ordering`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class MessageFlagsNotNull1713116476900 implements MigrationInterface {
|
||||
name = "MessageFlagsNotNull1713116476900";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE messages RENAME COLUMN flags TO flags_old;");
|
||||
await queryRunner.query("ALTER TABLE messages ADD COLUMN flags integer NOT NULL DEFAULT 0;");
|
||||
await queryRunner.query("UPDATE messages SET flags = COALESCE(flags_old, 0);");
|
||||
await queryRunner.query("ALTER TABLE messages DROP COLUMN flags_old;");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE messages RENAME COLUMN flags TO flags_new;");
|
||||
await queryRunner.query("ALTER TABLE messages ADD COLUMN flags integer;");
|
||||
await queryRunner.query("UPDATE messages SET flags = flags_new;");
|
||||
await queryRunner.query("ALTER TABLE messages DROP COLUMN flags_new;");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class NewUserSettings1719776735000 implements MigrationInterface {
|
||||
name = "NewUserSettings1719776735000";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE user_settings ADD COLUMN friend_discovery_flags integer DEFAULT 0;");
|
||||
await queryRunner.query("ALTER TABLE user_settings ADD COLUMN view_nsfw_guilds boolean DEFAULT true;");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE user_settings DROP COLUMN friend_discovery_flags;");
|
||||
await queryRunner.query("ALTER TABLE user_settings DROP COLUMN view_nsfw_guilds;");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class MessagePollObject1720157926878 implements MigrationInterface {
|
||||
name = "MessagePollObject1720157926878";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE messages ADD poll text NULL");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE messages DROP COLUMN poll");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Badges1720628601997 implements MigrationInterface {
|
||||
name = "Badges1720628601997";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "badges" ("id" character varying NOT NULL, "description" character varying NOT NULL, "icon" character varying NOT NULL, "link" character varying, CONSTRAINT "PK_8a651318b8de577e8e217676466" PRIMARY KEY ("id"))`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE "users" ADD "badge_ids" text`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "badge_ids"`);
|
||||
await queryRunner.query(`DROP TABLE "badges"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class WebhookMessageProperties1721298824927 implements MigrationInterface {
|
||||
name = "WebhookMessageProperties1721298824927";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE messages ADD username text NULL");
|
||||
await queryRunner.query("ALTER TABLE messages ADD avatar text NULL");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE messages DROP COLUMN username");
|
||||
await queryRunner.query("ALTER TABLE messages DROP COLUMN avatar");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class client_status1723347738541 implements MigrationInterface {
|
||||
name = "client_status1723347738541";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE sessions ADD client_status text NULL");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE sessions DROP COLUMN client_status");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class DiscoveryCategoryIcon1723577874393 implements MigrationInterface {
|
||||
name = "DiscoveryCategoryIcon1723577874393";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE categories ADD icon text NULL");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE categories DROP COLUMN icon");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class WebhookSourceChannel1723644478176 implements MigrationInterface {
|
||||
name = "WebhookSourceChannel1723644478176";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE webhooks ADD COLUMN source_channel_id VARCHAR(255) NULL DEFAULT NULL");
|
||||
await queryRunner.query(
|
||||
"ALTER TABLE webhooks ADD CONSTRAINT FK_d64f38834fa676f6caa4786ddd6 FOREIGN KEY (source_channel_id) REFERENCES channels (id) ON UPDATE NO ACTION ON DELETE CASCADE",
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE webhooks DROP CONSTRAINT FK_d64f38834fa676f6caa4786ddd6");
|
||||
await queryRunner.query("ALTER TABLE webhooks DROP COLUMN source_channel_id");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class TeamMemberRole1724477620293 implements MigrationInterface {
|
||||
name = "TeamMemberRole1724477620293";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE team_members ADD COLUMN role text NOT NULL");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE team_members DROP COLUMN role");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class ApplicationProperties1725090962922 implements MigrationInterface {
|
||||
name = "ApplicationProperties1725090962922";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE applications ADD COLUMN guild_id TEXT NULL DEFAULT NULL");
|
||||
await queryRunner.query("ALTER TABLE applications ADD COLUMN custom_install_url TEXT NULL DEFAULT NULL");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query("ALTER TABLE applications DROP COLUMN guild_id");
|
||||
await queryRunner.query("ALTER TABLE applications DROP COLUMN custom_install_url");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Voice1745625724865 implements MigrationInterface {
|
||||
name = "Voice1745625724865";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "streams" ("id" character varying NOT NULL, "owner_id" character varying NOT NULL, "channel_id" character varying NOT NULL, "endpoint" character varying NOT NULL, CONSTRAINT "PK_40440b6f569ebc02bc71c25c499" PRIMARY KEY ("id"))`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "stream_sessions" ("id" character varying NOT NULL, "stream_id" character varying NOT NULL, "user_id" character varying NOT NULL, "token" character varying, "session_id" character varying NOT NULL, "used" boolean NOT NULL DEFAULT false, CONSTRAINT "PK_49bdc3f66394c12478f8371c546" PRIMARY KEY ("id"))`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "streams" ADD CONSTRAINT "FK_1b566f9b54d1cda271da53ac82f" FOREIGN KEY ("owner_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "streams" ADD CONSTRAINT "FK_5101f0cded27ff0aae78fc4eed7" FOREIGN KEY ("channel_id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "stream_sessions" ADD CONSTRAINT "FK_8b5a028a34dae9ee54af37c9c32" FOREIGN KEY ("stream_id") REFERENCES "streams"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "stream_sessions" ADD CONSTRAINT "FK_13ae5c29aff4d0890c54179511a" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "stream_sessions" DROP CONSTRAINT "FK_13ae5c29aff4d0890c54179511a"`);
|
||||
await queryRunner.query(`ALTER TABLE "stream_sessions" DROP CONSTRAINT "FK_8b5a028a34dae9ee54af37c9c32"`);
|
||||
await queryRunner.query(`ALTER TABLE "streams" DROP CONSTRAINT "FK_5101f0cded27ff0aae78fc4eed7"`);
|
||||
await queryRunner.query(`ALTER TABLE "streams" DROP CONSTRAINT "FK_1b566f9b54d1cda271da53ac82f"`);
|
||||
await queryRunner.query(`DROP TABLE "stream_sessions"`);
|
||||
await queryRunner.query(`DROP TABLE "streams"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class UserSettingsProtos1752157979333 implements MigrationInterface {
|
||||
name = "UserSettingsProtos1752157979333";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`DROP TABLE IF EXISTS "user_settings_protos"`);
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "user_settings_protos" ("user_id" character varying NOT NULL, "userSettings" text, "frecencySettings" text, CONSTRAINT "PK_8ff3d1961a48b693810c9f99853" PRIMARY KEY ("user_id"))`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "user_settings_protos" ADD CONSTRAINT "FK_8ff3d1961a48b693810c9f99853" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "user_settings_protos" DROP CONSTRAINT "FK_8ff3d1961a48b693810c9f99853"`);
|
||||
await queryRunner.query(`DROP TABLE "user_settings_protos"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class RoleColors1752321571508 implements MigrationInterface {
|
||||
name = "RoleColors1752321571508";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "roles" ADD "colors" text`);
|
||||
await queryRunner.query(`UPDATE "roles" SET "colors" = jsonb_build_object('primary_color', "color") WHERE "colors" IS NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "roles" ALTER COLUMN "colors" SET NOT NULL`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "roles" DROP COLUMN "colors"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class MessagePinnedAt1752383879533 implements MigrationInterface {
|
||||
name = "MessagePinnedAt1752383879533";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "messages" ADD "pinned_at" TIMESTAMP`);
|
||||
await queryRunner.query(`UPDATE "messages" SET "pinned_at" = NOW() WHERE "pinned" = true`);
|
||||
await queryRunner.query(`ALTER TABLE "messages" DROP COLUMN "pinned"`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "messages" ADD "pinned" boolean`);
|
||||
await queryRunner.query(`UPDATE "messages" SET "pinned" = true WHERE "pinned_at" IS NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "messages" DROP COLUMN "pinned_at"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Automod1753639700904 implements MigrationInterface {
|
||||
name = "Automod1753639700904";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "automod_rules" ("id" character varying NOT NULL, "enabled" boolean NOT NULL, "event_type" integer NOT NULL, "exempt_channels" text NOT NULL, "exempt_roles" text NOT NULL, "guild_id" character varying NOT NULL, "name" character varying NOT NULL, "position" integer NOT NULL, "trigger_type" integer NOT NULL, "trigger_metadata" text, "actions" text NOT NULL, "creator_id" character varying, CONSTRAINT "PK_99789ae863507f5aed9e58d7866" PRIMARY KEY ("id"))`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "automod_rules" ADD CONSTRAINT "FK_12d3d60b961393d310429c062b7" FOREIGN KEY ("creator_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "automod_rules" DROP CONSTRAINT "FK_12d3d60b961393d310429c062b7"`);
|
||||
await queryRunner.query(`DROP TABLE "automod_rules"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class CloudAttachments1758654246197 implements MigrationInterface {
|
||||
name = "CloudAttachments1758654246197";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "cloud_attachments" ("id" character varying NOT NULL, "user_id" character varying, "channel_id" character varying, "upload_filename" character varying NOT NULL, "user_attachment_id" character varying, "user_filename" character varying NOT NULL, "user_file_size" integer, "user_original_content_type" character varying, "user_is_clip" boolean, "size" integer, "height" integer, "width" integer, "content_type" character varying, "userId" character varying, "channelId" character varying, CONSTRAINT "PK_5794827a3ee7c9318612dcb70c8" PRIMARY KEY ("id"))`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "cloud_attachments" ADD CONSTRAINT "FK_e6b32df2004e8ad0f488b4a2019" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "cloud_attachments" ADD CONSTRAINT "FK_cab965a18f8ca30293bff3d50a8" FOREIGN KEY ("channelId") REFERENCES "channels"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "cloud_attachments" DROP CONSTRAINT "FK_cab965a18f8ca30293bff3d50a8"`);
|
||||
await queryRunner.query(`ALTER TABLE "cloud_attachments" DROP CONSTRAINT "FK_e6b32df2004e8ad0f488b4a2019"`);
|
||||
await queryRunner.query(`DROP TABLE "cloud_attachments"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class CloudAttachmentsFixIdRefs1758654621365 implements MigrationInterface {
|
||||
name = "CloudAttachmentsFixIdRefs1758654621365";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "cloud_attachments" DROP CONSTRAINT "FK_cab965a18f8ca30293bff3d50a8"`);
|
||||
await queryRunner.query(`ALTER TABLE "cloud_attachments" DROP CONSTRAINT "FK_e6b32df2004e8ad0f488b4a2019"`);
|
||||
await queryRunner.query(`ALTER TABLE "cloud_attachments" DROP COLUMN "channelId"`);
|
||||
await queryRunner.query(`ALTER TABLE "cloud_attachments" DROP COLUMN "userId"`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "cloud_attachments" ADD CONSTRAINT "FK_8bf8cc8767e48cb482ff644fce6" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "cloud_attachments" ADD CONSTRAINT "FK_998d5fe91008ba5b09e1322104c" FOREIGN KEY ("channel_id") REFERENCES "channels"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "cloud_attachments" DROP CONSTRAINT "FK_998d5fe91008ba5b09e1322104c"`);
|
||||
await queryRunner.query(`ALTER TABLE "cloud_attachments" DROP CONSTRAINT "FK_8bf8cc8767e48cb482ff644fce6"`);
|
||||
await queryRunner.query(`ALTER TABLE "cloud_attachments" ADD "userId" character varying`);
|
||||
await queryRunner.query(`ALTER TABLE "cloud_attachments" ADD "channelId" character varying`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "cloud_attachments" ADD CONSTRAINT "FK_e6b32df2004e8ad0f488b4a2019" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "cloud_attachments" ADD CONSTRAINT "FK_cab965a18f8ca30293bff3d50a8" FOREIGN KEY ("channelId") REFERENCES "channels"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class ApplicationCommands1760622755598 implements MigrationInterface {
|
||||
name = "ApplicationCommands1760622755598";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "application_commands" ("id" character varying NOT NULL, "type" integer NOT NULL DEFAULT '1', "application_id" character varying NOT NULL, "guild_id" character varying, "name" character varying NOT NULL, "name_localizations" text, "description" character varying NOT NULL, "description_localizations" text, "options" text, "default_member_permissions" character varying, "dm_permission" boolean NOT NULL DEFAULT true, "permissions" text, "nsfw" boolean NOT NULL DEFAULT false, "integration_types" text, "global_popularity_rank" integer NOT NULL DEFAULT '0', "contexts" text, "version" character varying NOT NULL DEFAULT '0', "handler" integer NOT NULL DEFAULT '0', CONSTRAINT "PK_0f73c2f025989c407947e1f75fe" PRIMARY KEY ("id"))`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`DROP TABLE "application_commands"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class ReconcileMigrationAttempts1760622755598 implements MigrationInterface {
|
||||
name = "ReconcileMigrationAttempts1760622755598";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "webhooks" DROP CONSTRAINT IF EXISTS "fk_d64f38834fa676f6caa4786ddd6"`);
|
||||
await queryRunner.query(`ALTER TABLE "webhooks" ALTER COLUMN "source_channel_id" TYPE character varying`);
|
||||
await queryRunner.query(`ALTER TABLE "messages" ALTER COLUMN "username" TYPE character varying`);
|
||||
await queryRunner.query(`ALTER TABLE "messages" ALTER COLUMN "avatar" TYPE character varying`);
|
||||
await queryRunner.query(`ALTER TABLE "channels" ALTER COLUMN "default_thread_rate_limit_per_user" DROP NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "client_status" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "friend_discovery_flags" DROP DEFAULT`);
|
||||
await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "view_nsfw_guilds" DROP DEFAULT`);
|
||||
await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "flags" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "public_flags" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "purchased_flags" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "team_members" ALTER COLUMN "role" TYPE character varying`);
|
||||
await queryRunner.query(`ALTER TABLE "team_members" ALTER COLUMN "role" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "guild_id" TYPE character varying`);
|
||||
await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "custom_install_url" TYPE character varying`);
|
||||
await queryRunner.query(`ALTER TABLE "categories" ALTER COLUMN "icon" TYPE character varying`);
|
||||
await queryRunner.query(`ALTER TABLE "user_settings_protos" ALTER COLUMN "userSettings" TYPE character varying`);
|
||||
await queryRunner.query(`ALTER TABLE "user_settings_protos" ALTER COLUMN "frecencySettings" TYPE character varying`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "webhooks" ADD CONSTRAINT "FK_4495b7032a33c6b8b605d030398" FOREIGN KEY ("source_channel_id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "applications" ADD CONSTRAINT "FK_e5bf78cdbbe9ba91062d74c5aba" FOREIGN KEY ("guild_id") REFERENCES "guilds"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_e5bf78cdbbe9ba91062d74c5aba"`);
|
||||
await queryRunner.query(`ALTER TABLE "webhooks" DROP CONSTRAINT "FK_4495b7032a33c6b8b605d030398"`);
|
||||
await queryRunner.query(`ALTER TABLE "user_settings_protos" ALTER COLUMN "frecencySettings" TYPE text`);
|
||||
await queryRunner.query(`ALTER TABLE "user_settings_protos" ALTER COLUMN "userSettings" TYPE text`);
|
||||
await queryRunner.query(`ALTER TABLE "categories" ALTER COLUMN "icon" TYPE text`);
|
||||
await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "custom_install_url" TYPE text`);
|
||||
await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "guild_id" TYPE text`);
|
||||
await queryRunner.query(`ALTER TABLE "team_members" ALTER COLUMN "role" TYPE text`);
|
||||
await queryRunner.query(`ALTER TABLE "team_members" ALTER COLUMN "role" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "purchased_flags" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "public_flags" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "users" ALTER COLUMN "flags" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "view_nsfw_guilds" SET DEFAULT true`);
|
||||
await queryRunner.query(`ALTER TABLE "user_settings" ALTER COLUMN "friend_discovery_flags" SET DEFAULT '0'`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "client_status" DROP NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "channels" ALTER COLUMN "default_thread_rate_limit_per_user" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "messages" ALTER COLUMN "avatar" TYPE text`);
|
||||
await queryRunner.query(`ALTER TABLE "messages" ALTER COLUMN "username" TYPE text`);
|
||||
await queryRunner.query(`ALTER TABLE "webhooks" ALTER COLUMN "source_channel_id" TYPE character varying(255)`);
|
||||
await queryRunner.query(`ALTER TABLE "webhooks" ALTER COLUMN "source_channel_id" SET DEFAULT NULL`);
|
||||
// await queryRunner.query(`ALTER TABLE "webhooks" ADD CONSTRAINT "fk_d64f38834fa676f6caa4786ddd6" FOREIGN KEY ("source_channel_id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class MessageInteractionMetadata1760694225225 implements MigrationInterface {
|
||||
name = "MessageInteractionMetadata1760694225225";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "messages" ADD "interaction_metadata" text`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "messages" DROP COLUMN "interaction_metadata"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class MessageReferenceFix1760961911873 implements MigrationInterface {
|
||||
name = "MessageReferenceFix1760961911873";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "messages" DROP CONSTRAINT "FK_61a92bb65b302a76d9c1fcd3174"`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "messages" ADD CONSTRAINT "FK_61a92bb65b302a76d9c1fcd3174" FOREIGN KEY ("message_reference_id") REFERENCES "messages"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "messages" DROP CONSTRAINT "FK_61a92bb65b302a76d9c1fcd3174"`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "messages" ADD CONSTRAINT "FK_61a92bb65b302a76d9c1fcd3174" FOREIGN KEY ("message_reference_id") REFERENCES "messages"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class DeleteBotUsersWithoutAnApplication1761113394664 implements MigrationInterface {
|
||||
name = "DeleteBotUsersWithoutAnApplication1761113394664";
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`DELETE FROM users WHERE bot = true AND id NOT IN (SELECT bot_user_id FROM applications);`);
|
||||
}
|
||||
|
||||
public async down(_: QueryRunner): Promise<void> {}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class ApplicationCommandsOptionsDefault1761209437070 implements MigrationInterface {
|
||||
name = "ApplicationCommandsOptionsDefault1761209437070";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`UPDATE "application_commands" SET "options" = '[]' WHERE "options" IS NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "application_commands" ALTER COLUMN "options" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "application_commands" ALTER COLUMN "options" SET DEFAULT '[]'`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "application_commands" ALTER COLUMN "options" DROP DEFAULT`);
|
||||
await queryRunner.query(`ALTER TABLE "application_commands" ALTER COLUMN "options" DROP NOT NULL`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class FixGifStickersFormatType1762611552514 implements MigrationInterface {
|
||||
name = "FixGifStickersFormatType1762611552514";
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`UPDATE "stickers" SET "format_type" = 4 WHERE "format_type" = 0;`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`UPDATE "stickers" SET "format_type" = 0 WHERE "format_type" = 4;`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class DefaultActivitiesToEmptyArray1763630755675 implements MigrationInterface {
|
||||
name = "DefaultActivitiesToEmptyArray1763630755675";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "activities" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "activities" SET DEFAULT '[]'`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "activities" DROP DEFAULT`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "activities" DROP NOT NULL`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class DontIpBanBanner1765143034407 implements MigrationInterface {
|
||||
name = "DontIpBanBanner1765143034407";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "bans" ALTER COLUMN "ip" DROP NOT NULL`);
|
||||
await queryRunner.query(`UPDATE "bans" SET "ip" = NULL`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`UPDATE "bans" SET "ip" = '0.0.0.0' WHERE "ip" IS NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "bans" ALTER COLUMN "ip" SET NOT NULL`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class MessageSnapshots1765185286988 implements MigrationInterface {
|
||||
name = "MessageSnapshots1765185286988";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "messages" ADD "message_snapshots" text NOT NULL DEFAULT '[]'`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "messages" DROP COLUMN "message_snapshots"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class InstanceBanTable1765578570423 implements MigrationInterface {
|
||||
name = "InstanceBanTable1765578570423";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "instance_bans" ("id" character varying NOT NULL, "created_at" TIMESTAMP NOT NULL DEFAULT now(), "reason" character varying NOT NULL, "user_id" character varying, "fingerprint" character varying, "ip_address" character varying, "is_from_other_instance_ban" boolean NOT NULL DEFAULT false, "origin_instance_ban_id" character varying, CONSTRAINT "REL_0b02d18d0d830f160c921192a3" UNIQUE ("origin_instance_ban_id"), CONSTRAINT "PK_3aa6e80a6d325601054892b1340" PRIMARY KEY ("id"))`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "instance_bans" ADD CONSTRAINT "FK_0b02d18d0d830f160c921192a30" FOREIGN KEY ("origin_instance_ban_id") REFERENCES "instance_bans"("id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "instance_bans" DROP CONSTRAINT "FK_0b02d18d0d830f160c921192a30"`);
|
||||
await queryRunner.query(`DROP TABLE "instance_bans"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class InstanceBanAllowlist1765587835846 implements MigrationInterface {
|
||||
name = "InstanceBanAllowlist1765587835846";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "instance_bans" ADD "is_allowlisted" boolean NOT NULL DEFAULT false`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "instance_bans" DROP COLUMN "is_allowlisted"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class DropDefaultIPDataKey1765665440000 implements MigrationInterface {
|
||||
name = "DropDefaultIPDataKey1765665440000";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`UPDATE "config" SET "value" = NULL WHERE "key" = 'security_ipdataApiKey' AND "value" = '"eca677b284b3bac29eb72f5e496aa9047f26543605efe99ff2ce35c9"'`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`UPDATE "config" SET "value" = '"eca677b284b3bac29eb72f5e496aa9047f26543605efe99ff2ce35c9"' WHERE "key" = 'security_ipdataApiKey' AND "value" IS NULL`,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class ExtendedSessionInfo1765863159930 implements MigrationInterface {
|
||||
name = "ExtendedSessionInfo1765863159930";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "sessions" DROP CONSTRAINT "PK_3238ef96f18b355b671619111bc"`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" DROP COLUMN "id"`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ADD "is_admin_session" boolean NOT NULL DEFAULT false`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ADD "created_at" TIMESTAMP NOT NULL DEFAULT now()`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ADD "last_seen" TIMESTAMP NOT NULL DEFAULT '1970-01-01 00:00:00'`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ADD "last_seen_ip" character varying NOT NULL DEFAULT '127.0.0.1'`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ADD "last_seen_location" character varying`);
|
||||
await queryRunner.query(`ALTER TABLE "webhooks" ALTER COLUMN "source_channel_id" DROP DEFAULT`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" DROP CONSTRAINT "FK_085d540d9f418cfbdc7bd55bb19"`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ADD CONSTRAINT "PK_9340188c93349808f10d1db74a8" PRIMARY KEY ("session_id")`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "user_id" SET NOT NULL`);
|
||||
await queryRunner.query(`CREATE INDEX "IDX_085d540d9f418cfbdc7bd55bb1" ON "sessions" ("user_id") `);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "sessions" ADD CONSTRAINT "FK_085d540d9f418cfbdc7bd55bb19" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "sessions" DROP CONSTRAINT "FK_085d540d9f418cfbdc7bd55bb19"`);
|
||||
await queryRunner.query(`ALTER TABLE "webhooks" DROP CONSTRAINT "FK_4495b7032a33c6b8b605d030398"`);
|
||||
await queryRunner.query(`DROP INDEX "public"."IDX_085d540d9f418cfbdc7bd55bb1"`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "user_id" DROP NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" DROP CONSTRAINT "PK_9340188c93349808f10d1db74a8"`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "sessions" ADD CONSTRAINT "FK_085d540d9f418cfbdc7bd55bb19" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" DROP COLUMN "last_seen_location"`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" DROP COLUMN "last_seen_ip"`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" DROP COLUMN "last_seen"`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" DROP COLUMN "created_at"`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" DROP COLUMN "is_admin_session"`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ADD "id" character varying NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ADD CONSTRAINT "PK_3238ef96f18b355b671619111bc" PRIMARY KEY ("id")`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class UpdateSessionInfo1765932247127 implements MigrationInterface {
|
||||
name = "UpdateSessionInfo1765932247127";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ADD "last_seen_location_info" text`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ADD "session_nickname" character varying`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "last_seen" DROP NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "last_seen" DROP DEFAULT`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "last_seen_ip" DROP NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "last_seen_ip" DROP DEFAULT`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "last_seen_ip" SET DEFAULT '127.0.0.1'`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "last_seen_ip" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "last_seen" SET DEFAULT '1970-01-01 00:00:00'`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" ALTER COLUMN "last_seen" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" DROP COLUMN "session_nickname"`);
|
||||
await queryRunner.query(`ALTER TABLE "sessions" DROP COLUMN "last_seen_location_info"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class DropExtendedSettings1765967660704 implements MigrationInterface {
|
||||
name = "DropExtendedSettings1765967660704";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "extended_settings"`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "users" ADD "extended_settings" text NOT NULL`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Threads1769636200774 implements MigrationInterface {
|
||||
name = "Threads1769636200774";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "messages" ADD "thread_id" character varying`);
|
||||
await queryRunner.query(`ALTER TABLE "channels" ADD "thread_metadata" text`);
|
||||
await queryRunner.query(`ALTER TABLE "channels" ADD "member_count" integer`);
|
||||
await queryRunner.query(`ALTER TABLE "channels" ADD "message_count" integer`);
|
||||
await queryRunner.query(`ALTER TABLE "channels" ADD "total_message_sent" integer`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "messages" ADD CONSTRAINT "FK_bb3af7f695d50083e6523290d41" FOREIGN KEY ("thread_id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "messages" DROP CONSTRAINT "FK_bb3af7f695d50083e6523290d41"`);
|
||||
await queryRunner.query(`ALTER TABLE "channels" DROP COLUMN "total_message_sent"`);
|
||||
await queryRunner.query(`ALTER TABLE "channels" DROP COLUMN "message_count"`);
|
||||
await queryRunner.query(`ALTER TABLE "channels" DROP COLUMN "member_count"`);
|
||||
await queryRunner.query(`ALTER TABLE "channels" DROP COLUMN "thread_metadata"`);
|
||||
await queryRunner.query(`ALTER TABLE "messages" DROP COLUMN "thread_id"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class ThreadMembers1769653303971 implements MigrationInterface {
|
||||
name = "ThreadMembers1769653303971";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "thread_members" ("index" SERIAL NOT NULL, "id" character varying NOT NULL, "member_id" integer NOT NULL, "join_timestamp" TIMESTAMP NOT NULL, "muted" boolean NOT NULL, "mute_config" text, "flags" integer NOT NULL, CONSTRAINT "PK_22232a9f7a08fb9967a9c78da53" PRIMARY KEY ("index"))`,
|
||||
);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_bde0970b6a26bdbd83508addd2" ON "thread_members" ("id", "member_id") `);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "thread_members" ADD CONSTRAINT "FK_cf20e37d71b0e1bf1ab633861c8" FOREIGN KEY ("id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "thread_members" ADD CONSTRAINT "FK_606ac45e8756d3440c584477f4e" FOREIGN KEY ("member_id") REFERENCES "members"("index") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "thread_members" DROP CONSTRAINT "FK_606ac45e8756d3440c584477f4e"`);
|
||||
await queryRunner.query(`ALTER TABLE "thread_members" DROP CONSTRAINT "FK_cf20e37d71b0e1bf1ab633861c8"`);
|
||||
await queryRunner.query(`DROP INDEX "public"."IDX_bde0970b6a26bdbd83508addd2"`);
|
||||
await queryRunner.query(`DROP TABLE "thread_members"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class ThreadMembersIdx1769653303972 implements MigrationInterface {
|
||||
name = "ThreadMembersIdx1769653303972";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE public.thread_members RENAME COLUMN member_id TO member_idx;`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE public.thread_members RENAME COLUMN member_idx TO member_id;`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class UserProfileCustomisation1770062009127 implements MigrationInterface {
|
||||
name = "UserProfileCustomisation1770062009127";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "users" ADD "avatar_decoration_data" text`);
|
||||
await queryRunner.query(`ALTER TABLE "users" ADD "display_name_styles" text`);
|
||||
await queryRunner.query(`ALTER TABLE "users" ADD "collectibles" text`);
|
||||
await queryRunner.query(`ALTER TABLE "users" ADD "primary_guild" text`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "primary_guild"`);
|
||||
await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "collectibles"`);
|
||||
await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "display_name_styles"`);
|
||||
await queryRunner.query(`ALTER TABLE "users" DROP COLUMN "avatar_decoration_data"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class MemberProfileCustomisation1770079838835 implements MigrationInterface {
|
||||
name = "MemberProfileCustomisation1770079838835";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
// just gonna let typeorm do its thing for once...
|
||||
await queryRunner.query(`ALTER TABLE "thread_members" DROP CONSTRAINT "FK_606ac45e8756d3440c584477f4e"`);
|
||||
await queryRunner.query(`DROP INDEX "public"."IDX_bde0970b6a26bdbd83508addd2"`);
|
||||
await queryRunner.query(`ALTER TABLE "members" ADD "avatar_decoration_data" text`);
|
||||
await queryRunner.query(`ALTER TABLE "members" ADD "display_name_styles" text`);
|
||||
await queryRunner.query(`ALTER TABLE "members" ADD "collectibles" text`);
|
||||
await queryRunner.query(`ALTER TABLE "guilds" ALTER COLUMN "channel_ordering" DROP DEFAULT`);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_38d4f704373da3f0dc9b352ac9" ON "thread_members" ("id", "member_idx") `);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "thread_members" ADD CONSTRAINT "FK_4721015b4e24ad29da55dbd2de0" FOREIGN KEY ("member_idx") REFERENCES "members"("index") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "thread_members" DROP CONSTRAINT "FK_4721015b4e24ad29da55dbd2de0"`);
|
||||
await queryRunner.query(`DROP INDEX "public"."IDX_38d4f704373da3f0dc9b352ac9"`);
|
||||
await queryRunner.query(`ALTER TABLE "guilds" ALTER COLUMN "channel_ordering" SET DEFAULT '[]'`);
|
||||
await queryRunner.query(`ALTER TABLE "members" DROP COLUMN "collectibles"`);
|
||||
await queryRunner.query(`ALTER TABLE "members" DROP COLUMN "display_name_styles"`);
|
||||
await queryRunner.query(`ALTER TABLE "members" DROP COLUMN "avatar_decoration_data"`);
|
||||
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_bde0970b6a26bdbd83508addd2" ON "thread_members" ("id", "member_idx") `);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "thread_members" ADD CONSTRAINT "FK_606ac45e8756d3440c584477f4e" FOREIGN KEY ("member_idx") REFERENCES "members"("index") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class ForumTags1770308886650 implements MigrationInterface {
|
||||
name = "ForumTags1770308886650";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "tags" ("id" character varying NOT NULL, "channel_id" character varying NOT NULL, "name" character varying NOT NULL, "moderated" boolean NOT NULL, "emoji_id" character varying NOT NULL, "emoji_name" character varying NOT NULL, CONSTRAINT "PK_e7dc17249a1148a1970748eda99" PRIMARY KEY ("id"))`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE "channels" ADD "applied_tags" text array`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "tags" ADD CONSTRAINT "FK_2e2df07f6dacc12e1932b361fe4" FOREIGN KEY ("channel_id") REFERENCES "channels"("id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "tags" DROP CONSTRAINT "FK_2e2df07f6dacc12e1932b361fe4"`);
|
||||
await queryRunner.query(`ALTER TABLE "channels" DROP COLUMN "applied_tags"`);
|
||||
await queryRunner.query(`DROP TABLE "tags"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class NullableTags1770310028511 implements MigrationInterface {
|
||||
name = "NullableTags1770310028511";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "tags" ALTER COLUMN "emoji_id" DROP NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "tags" ALTER COLUMN "emoji_name" DROP NOT NULL`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "tags" ALTER COLUMN "emoji_name" SET NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "tags" ALTER COLUMN "emoji_id" SET NOT NULL`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class GuildDiscoveryHoisting1770748070808 implements MigrationInterface {
|
||||
name = "GuildDiscoveryHoisting1770748070808";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "guilds" ADD "discovery_weight" integer NOT NULL DEFAULT 0`);
|
||||
await queryRunner.query(`ALTER TABLE "guilds" ADD "discovery_excluded" boolean NOT NULL DEFAULT FALSE`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "guilds" DROP COLUMN "discovery_excluded"`);
|
||||
await queryRunner.query(`ALTER TABLE "guilds" DROP COLUMN "discovery_weight"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class SetRoleManagedDefault1771271159006 implements MigrationInterface {
|
||||
name = "SetRoleManagedDefault1771271159006";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "roles" ALTER COLUMN "managed" SET DEFAULT false`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "roles" ALTER COLUMN "managed" DROP DEFAULT`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class MoreReadStateFields1771825341528 implements MigrationInterface {
|
||||
name = "MoreReadStateFields1771825341528";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "read_states" DROP COLUMN "public_ack"`);
|
||||
await queryRunner.query(`ALTER TABLE "read_states" ADD "last_acked_id" character varying`);
|
||||
await queryRunner.query(`ALTER TABLE "read_states" ADD "badge_count" integer NOT NULL DEFAULT '0'`);
|
||||
await queryRunner.query(`ALTER TABLE "read_states" ADD "read_state_type" integer NOT NULL DEFAULT '0'`);
|
||||
await queryRunner.query(`ALTER TABLE "read_states" ADD "flags" integer NOT NULL DEFAULT '0'`);
|
||||
await queryRunner.query(`ALTER TABLE "read_states" ALTER COLUMN "mention_count" SET DEFAULT '0'`);
|
||||
await queryRunner.query(`UPDATE "read_states" SET "mention_count" = 0 WHERE "mention_count" IS NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "read_states" ALTER COLUMN "mention_count" SET NOT NULL`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "read_states" ALTER COLUMN "mention_count" DROP NOT NULL`);
|
||||
await queryRunner.query(`ALTER TABLE "read_states" ALTER COLUMN "mention_count" DROP DEFAULT`);
|
||||
await queryRunner.query(`ALTER TABLE "read_states" DROP COLUMN "flags"`);
|
||||
await queryRunner.query(`ALTER TABLE "read_states" DROP COLUMN "read_state_type"`);
|
||||
await queryRunner.query(`ALTER TABLE "read_states" DROP COLUMN "badge_count"`);
|
||||
await queryRunner.query(`ALTER TABLE "read_states" DROP COLUMN "last_acked_id"`);
|
||||
await queryRunner.query(`ALTER TABLE "read_states" ADD "public_ack" character varying`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class LastPinTimestampAsDate1771997061671 implements MigrationInterface {
|
||||
name = "LastPinTimestampAsDate1771997061671";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "channels" DROP COLUMN "last_pin_timestamp"`);
|
||||
await queryRunner.query(`ALTER TABLE "channels" ADD "last_pin_timestamp" TIMESTAMP WITH TIME ZONE`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "channels" DROP COLUMN "last_pin_timestamp"`);
|
||||
await queryRunner.query(`ALTER TABLE "channels" ADD "last_pin_timestamp" integer`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class MemberFlags1772404321400 implements MigrationInterface {
|
||||
name = "MemberFlags1772404321400";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "members" ADD "flags" integer NOT NULL DEFAULT '0'`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "members" DROP COLUMN "flags"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class ChannelStatus1772404321401 implements MigrationInterface {
|
||||
name = "ChannelStatus1772404321401";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "channels" ADD "status" text NULL;`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "channels" DROP COLUMN "status"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class EmbedCacheCreatedAt1772404321402 implements MigrationInterface {
|
||||
name = "EmbedCacheCreatedAt1772404321402";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "embed_cache" ADD "created_at" timestamp with time zone DEFAULT now();`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "embed_cache" DROP COLUMN "created_at"`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class EmbedCacheCreatedAt1772404321403 implements MigrationInterface {
|
||||
name = "EmbedCacheCreatedAt1772404321403";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "embed_cache" ALTER COLUMN "embed" DROP NOT NULL;`);
|
||||
await queryRunner.query(`ALTER TABLE "embed_cache" ADD "embeds" text NULL;`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE "embed_cache" DROP COLUMN "embeds"`);
|
||||
await queryRunner.query(`UPDATE "embed_cache" SET "embed" = '{}' WHERE "embed" IS NULL;`);
|
||||
await queryRunner.query(`ALTER TABLE "embed_cache" ALTER COLUMN "embed" SET NOT NULL;`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class InstanceBansIndexes1772404321404 implements MigrationInterface {
|
||||
name = "InstanceBansIndexes1772404321404";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`CREATE INDEX instance_bans_user_id_idx ON instance_bans USING HASH (user_id);`);
|
||||
await queryRunner.query(`CREATE INDEX instance_bans_fingerprint_idx ON instance_bans USING HASH (fingerprint);`);
|
||||
await queryRunner.query(`CREATE INDEX instance_bans_ip_address_idx ON instance_bans USING HASH (ip_address);`);
|
||||
// sneaky, sneaky maintenance
|
||||
await queryRunner.query(`REINDEX (VERBOSE) TABLE instance_bans;`);
|
||||
// escape the transaction for a sec...
|
||||
await queryRunner.query(`COMMIT;`);
|
||||
await queryRunner.query(`VACUUM (FULL, ANALYZE, VERBOSE) instance_bans;`);
|
||||
await queryRunner.query(`BEGIN;`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`DROP INDEX instance_bans_user_id_idx;`);
|
||||
await queryRunner.query(`DROP INDEX instance_bans_fingerprint_idx;`);
|
||||
await queryRunner.query(`DROP INDEX instance_bans_ip_address_idx;`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class ReconcileMigrationsAgain1776178641999 implements MigrationInterface {
|
||||
name = "ReconcileMigrationsAgain1776178641999";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
// since we're no longer using syncDb()!
|
||||
await queryRunner.query(`ALTER TABLE "webhooks" DROP CONSTRAINT IF EXISTS "fk_d64f38834fa676f6caa4786ddd6"`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
console.log("no.");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8PrimaryKeys1776178642000 implements MigrationInterface {
|
||||
name = "Int8PrimaryKeys1776178642000";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
// simple changes only
|
||||
await queryRunner.query(`ALTER TABLE application_commands ALTER COLUMN id TYPE ${to} USING id::${to};`); // varchar
|
||||
// applications -> separate migration
|
||||
await queryRunner.query(`ALTER TABLE attachments ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE audit_logs ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE automod_rules ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE backup_codes ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE badges ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE bans ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE categories ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
// channels -> separate migration
|
||||
await queryRunner.query(`ALTER TABLE client_release ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE cloud_attachments ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE connected_accounts ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE embed_cache ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE emojis ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
// guilds -> separate migration
|
||||
// instance_bans -> separate migration
|
||||
// messages -> separate migration
|
||||
await queryRunner.query(`ALTER TABLE notes ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE rate_limits ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE read_states ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE recipients ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE relationships ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
// roles -> separate migration
|
||||
await queryRunner.query(`ALTER TABLE security_keys ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE security_settings ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
// sticker_packs -> separate migration
|
||||
// stickers -> separate migration
|
||||
await queryRunner.query(`ALTER TABLE stream_sessions ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
// streams -> separate migration
|
||||
await queryRunner.query(`ALTER TABLE tags ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE team_members ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
// teams -> separate migration
|
||||
// templates -> separate migration
|
||||
// users -> separate migration
|
||||
await queryRunner.query(`ALTER TABLE voice_states ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
// webhooks -> separate migration
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8PrimaryKeysApplications1776178642001 implements MigrationInterface {
|
||||
name = "Int8PrimaryKeysApplications1776178642001";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
// applications
|
||||
// -> messages
|
||||
await queryRunner.query(`ALTER TABLE messages DROP CONSTRAINT "FK_5d3ec1cb962de6488637fd779d6";`); // application_id
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN application_id TYPE ${to} USING application_id::${to};`);
|
||||
// --> webhooks
|
||||
await queryRunner.query(`ALTER TABLE webhooks DROP CONSTRAINT "FK_c3e5305461931763b56aa905f1c";`); // application_id
|
||||
await queryRunner.query(`ALTER TABLE webhooks ALTER COLUMN application_id TYPE ${to} USING application_id::${to};`);
|
||||
// and finally, cleanup
|
||||
await queryRunner.query(`ALTER TABLE applications ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE webhooks ADD CONSTRAINT "FK_c3e5305461931763b56aa905f1c" FOREIGN KEY (application_id) REFERENCES applications(id);`);
|
||||
await queryRunner.query(`ALTER TABLE messages ADD CONSTRAINT "FK_5d3ec1cb962de6488637fd779d6" FOREIGN KEY (application_id) REFERENCES applications(id);`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8PrimaryKeysChannels1776178642002 implements MigrationInterface {
|
||||
name = "Int8PrimaryKeysChannels1776178642002";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
// channels
|
||||
// -> channels
|
||||
await queryRunner.query(`ALTER TABLE channels DROP CONSTRAINT "FK_3274522d14af40540b1a883fc80";`); //parent_id
|
||||
await queryRunner.query(`ALTER TABLE channels ALTER COLUMN parent_id TYPE ${to} USING parent_id::${to}`);
|
||||
// -> cloud_attachments
|
||||
await queryRunner.query(`ALTER TABLE cloud_attachments DROP CONSTRAINT "FK_998d5fe91008ba5b09e1322104c";`); //channel_id
|
||||
await queryRunner.query(`ALTER TABLE cloud_attachments ALTER COLUMN channel_id TYPE ${to} USING channel_id::${to}`);
|
||||
// -> guilds
|
||||
await queryRunner.query(`ALTER TABLE guilds DROP CONSTRAINT "FK_8d450b016dc8bec35f36729e4b0";`); //public_updates_channel_id
|
||||
await queryRunner.query(`ALTER TABLE guilds ALTER COLUMN public_updates_channel_id TYPE ${to} USING public_updates_channel_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE guilds DROP CONSTRAINT "FK_95828668aa333460582e0ca6396";`); //rules_channel_id
|
||||
await queryRunner.query(`ALTER TABLE guilds ALTER COLUMN rules_channel_id TYPE ${to} USING rules_channel_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE guilds DROP CONSTRAINT "FK_9d1d665379eefde7876a17afa99";`); //widget_channel_id
|
||||
await queryRunner.query(`ALTER TABLE guilds ALTER COLUMN widget_channel_id TYPE ${to} USING widget_channel_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE guilds DROP CONSTRAINT "FK_cfc3d3ad260f8121c95b31a1fce";`); //system_channel_id
|
||||
await queryRunner.query(`ALTER TABLE guilds ALTER COLUMN system_channel_id TYPE ${to} USING system_channel_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE guilds DROP CONSTRAINT "FK_f591a66b8019d87b0fe6c12dad6";`); //afk_channel_id
|
||||
await queryRunner.query(`ALTER TABLE guilds ALTER COLUMN afk_channel_id TYPE ${to} USING afk_channel_id::${to}`);
|
||||
// -> invites
|
||||
await queryRunner.query(`ALTER TABLE invites DROP CONSTRAINT "FK_6a15b051fe5050aa00a4b9ff0f6";`); //channel_id
|
||||
await queryRunner.query(`ALTER TABLE invites ALTER COLUMN channel_id TYPE ${to} USING channel_id::${to}`);
|
||||
// -> message_channel_mentions
|
||||
await queryRunner.query(`ALTER TABLE message_channel_mentions DROP CONSTRAINT "FK_bdb8c09e1464cabf62105bf4b9d";`); //channelsId
|
||||
await queryRunner.query(`ALTER TABLE message_channel_mentions ALTER COLUMN "channelsId" TYPE ${to} USING "channelsId"::${to}`);
|
||||
// -> messages
|
||||
await queryRunner.query(`ALTER TABLE messages DROP CONSTRAINT "FK_86b9109b155eb70c0a2ca3b4b6d";`); //channel_id
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN "channel_id" TYPE ${to} USING "channel_id"::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE messages DROP CONSTRAINT "FK_bb3af7f695d50083e6523290d41";`); //thread_id
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN "thread_id" TYPE ${to} USING "thread_id"::${to}`);
|
||||
// -> read_states
|
||||
await queryRunner.query(`ALTER TABLE read_states DROP CONSTRAINT "FK_40da2fca4e0eaf7a23b5bfc5d34";`); //channel_id
|
||||
await queryRunner.query(`ALTER TABLE read_states ALTER COLUMN "channel_id" TYPE ${to} USING "channel_id"::${to}`);
|
||||
// -> recipients
|
||||
await queryRunner.query(`ALTER TABLE recipients DROP CONSTRAINT "FK_2f18ee1ba667f233ae86c0ea60e";`); //channel_id
|
||||
await queryRunner.query(`ALTER TABLE recipients ALTER COLUMN "channel_id" TYPE ${to} USING "channel_id"::${to}`);
|
||||
// -> streams
|
||||
await queryRunner.query(`ALTER TABLE streams DROP CONSTRAINT "FK_5101f0cded27ff0aae78fc4eed7";`); //channel_id
|
||||
await queryRunner.query(`ALTER TABLE streams ALTER COLUMN "channel_id" TYPE ${to} USING "channel_id"::${to}`);
|
||||
// -> tags
|
||||
await queryRunner.query(`ALTER TABLE tags DROP CONSTRAINT "FK_2e2df07f6dacc12e1932b361fe4";`); //channel_id
|
||||
await queryRunner.query(`ALTER TABLE tags ALTER COLUMN "channel_id" TYPE ${to} USING "channel_id"::${to}`);
|
||||
// -> thread_members
|
||||
await queryRunner.query(`ALTER TABLE thread_members DROP CONSTRAINT "FK_cf20e37d71b0e1bf1ab633861c8";`); //id
|
||||
await queryRunner.query(`ALTER TABLE thread_members ALTER COLUMN "id" TYPE ${to} USING "id"::${to}`);
|
||||
// -> voice_states
|
||||
await queryRunner.query(`ALTER TABLE voice_states DROP CONSTRAINT "FK_9f8d389866b40b6657edd026dd4";`); //channel_id
|
||||
await queryRunner.query(`ALTER TABLE voice_states ALTER COLUMN "channel_id" TYPE ${to} USING "channel_id"::${to}`);
|
||||
// -> webhooks
|
||||
await queryRunner.query(`ALTER TABLE webhooks DROP CONSTRAINT "FK_4495b7032a33c6b8b605d030398";`); //source_channel_id
|
||||
await queryRunner.query(`ALTER TABLE webhooks ALTER COLUMN "source_channel_id" TYPE ${to} USING "source_channel_id"::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE webhooks DROP CONSTRAINT "FK_df528cf77e82f8032230e7e37d8";`); //channel_id
|
||||
await queryRunner.query(`ALTER TABLE webhooks ALTER COLUMN "channel_id" TYPE ${to} USING "channel_id"::${to}`);
|
||||
// and finally, cleanup
|
||||
await queryRunner.query(`ALTER TABLE channels ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE channels ADD CONSTRAINT "FK_3274522d14af40540b1a883fc80" FOREIGN KEY (parent_id) REFERENCES channels(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE cloud_attachments ADD CONSTRAINT "FK_998d5fe91008ba5b09e1322104c" FOREIGN KEY (channel_id) REFERENCES channels(id) ON DELETE SET NULL;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE guilds ADD CONSTRAINT "FK_8d450b016dc8bec35f36729e4b0" FOREIGN KEY (public_updates_channel_id) REFERENCES channels(id);`);
|
||||
await queryRunner.query(`ALTER TABLE guilds ADD CONSTRAINT "FK_95828668aa333460582e0ca6396" FOREIGN KEY (rules_channel_id) REFERENCES channels(id);`);
|
||||
await queryRunner.query(`ALTER TABLE guilds ADD CONSTRAINT "FK_9d1d665379eefde7876a17afa99" FOREIGN KEY (widget_channel_id) REFERENCES channels(id);`);
|
||||
await queryRunner.query(`ALTER TABLE guilds ADD CONSTRAINT "FK_cfc3d3ad260f8121c95b31a1fce" FOREIGN KEY (system_channel_id) REFERENCES channels(id);`);
|
||||
await queryRunner.query(`ALTER TABLE guilds ADD CONSTRAINT "FK_f591a66b8019d87b0fe6c12dad6" FOREIGN KEY (afk_channel_id) REFERENCES channels(id);`);
|
||||
await queryRunner.query(`ALTER TABLE invites ADD CONSTRAINT "FK_6a15b051fe5050aa00a4b9ff0f6" FOREIGN KEY (channel_id) REFERENCES channels(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE message_channel_mentions ADD CONSTRAINT "FK_bdb8c09e1464cabf62105bf4b9d" FOREIGN KEY ("channelsId") REFERENCES channels(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE messages ADD CONSTRAINT "FK_86b9109b155eb70c0a2ca3b4b6d" FOREIGN KEY (channel_id) REFERENCES channels(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE messages ADD CONSTRAINT "FK_bb3af7f695d50083e6523290d41" FOREIGN KEY (thread_id) REFERENCES channels(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE read_states ADD CONSTRAINT "FK_40da2fca4e0eaf7a23b5bfc5d34" FOREIGN KEY (channel_id) REFERENCES channels(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE recipients ADD CONSTRAINT "FK_2f18ee1ba667f233ae86c0ea60e" FOREIGN KEY (channel_id) REFERENCES channels(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE streams ADD CONSTRAINT "FK_5101f0cded27ff0aae78fc4eed7" FOREIGN KEY (channel_id) REFERENCES channels(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE tags ADD CONSTRAINT "FK_2e2df07f6dacc12e1932b361fe4" FOREIGN KEY (channel_id) REFERENCES channels(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE thread_members ADD CONSTRAINT "FK_cf20e37d71b0e1bf1ab633861c8" FOREIGN KEY (id) REFERENCES channels(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE voice_states ADD CONSTRAINT "FK_9f8d389866b40b6657edd026dd4" FOREIGN KEY (channel_id) REFERENCES channels(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE webhooks ADD CONSTRAINT "FK_4495b7032a33c6b8b605d030398" FOREIGN KEY (source_channel_id) REFERENCES channels(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE webhooks ADD CONSTRAINT "FK_df528cf77e82f8032230e7e37d8" FOREIGN KEY (channel_id) REFERENCES channels(id) ON DELETE CASCADE;`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8PrimaryKeysGuilds1776178642003 implements MigrationInterface {
|
||||
name = "Int8PrimaryKeysGuilds1776178642003";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
// guilds
|
||||
// -> applications
|
||||
await queryRunner.query(`ALTER TABLE applications DROP CONSTRAINT "FK_e5bf78cdbbe9ba91062d74c5aba";`); //guild_id
|
||||
await queryRunner.query(`ALTER TABLE applications ALTER COLUMN guild_id TYPE ${to} USING guild_id::${to}`);
|
||||
// -> bans
|
||||
await queryRunner.query(`ALTER TABLE bans DROP CONSTRAINT "FK_9d3ab7dd180ebdd245cdb66ecad";`); //guild_id
|
||||
await queryRunner.query(`ALTER TABLE bans ALTER COLUMN guild_id TYPE ${to} USING guild_id::${to}`);
|
||||
// -> channels
|
||||
await queryRunner.query(`ALTER TABLE channels DROP CONSTRAINT "FK_c253dafe5f3a03ec00cd8fb4581";`); //guild_id
|
||||
await queryRunner.query(`ALTER TABLE channels ALTER COLUMN guild_id TYPE ${to} USING guild_id::${to}`);
|
||||
// -> emojis
|
||||
await queryRunner.query(`ALTER TABLE emojis DROP CONSTRAINT "FK_4b988e0db89d94cebcf07f598cc";`); //guild_id
|
||||
await queryRunner.query(`ALTER TABLE emojis ALTER COLUMN guild_id TYPE ${to} USING guild_id::${to}`);
|
||||
// -> invites
|
||||
await queryRunner.query(`ALTER TABLE invites DROP CONSTRAINT "FK_3f4939aa1461e8af57fea3fb05d";`); //guild_id
|
||||
await queryRunner.query(`ALTER TABLE invites ALTER COLUMN guild_id TYPE ${to} USING guild_id::${to}`);
|
||||
// -> members
|
||||
await queryRunner.query(`ALTER TABLE members DROP CONSTRAINT "FK_16aceddd5b89825b8ed6029ad1c";`); //guild_id
|
||||
await queryRunner.query(`ALTER TABLE members ALTER COLUMN guild_id TYPE ${to} USING guild_id::${to}`);
|
||||
// -> messages
|
||||
await queryRunner.query(`ALTER TABLE messages DROP CONSTRAINT "FK_b193588441b085352a4c0109423";`); //guild_id
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN guild_id TYPE ${to} USING guild_id::${to}`);
|
||||
// -> roles
|
||||
await queryRunner.query(`ALTER TABLE roles DROP CONSTRAINT "FK_c32c1ab1c4dc7dcb0278c4b1b8b";`); //guild_id
|
||||
await queryRunner.query(`ALTER TABLE roles ALTER COLUMN guild_id TYPE ${to} USING guild_id::${to}`);
|
||||
// -> stickers
|
||||
await queryRunner.query(`ALTER TABLE stickers DROP CONSTRAINT "FK_193d551d852aca5347ef5c9f205";`); //guild_id
|
||||
await queryRunner.query(`ALTER TABLE stickers ALTER COLUMN guild_id TYPE ${to} USING guild_id::${to}`);
|
||||
// -> templates
|
||||
await queryRunner.query(`ALTER TABLE templates DROP CONSTRAINT "FK_445d00eaaea0e60a017a5ed0c11";`); //source_guild_id
|
||||
await queryRunner.query(`ALTER TABLE templates ALTER COLUMN source_guild_id TYPE ${to} USING source_guild_id::${to}`);
|
||||
// -> voice_states
|
||||
await queryRunner.query(`ALTER TABLE voice_states DROP CONSTRAINT "FK_03779ef216d4b0358470d9cb748";`); //guild_id
|
||||
await queryRunner.query(`ALTER TABLE voice_states ALTER COLUMN guild_id TYPE ${to} USING guild_id::${to}`);
|
||||
// -> webhooks
|
||||
await queryRunner.query(`ALTER TABLE webhooks DROP CONSTRAINT "FK_3a285f4f49c40e0706d3018bc9f";`); //source_guild_id
|
||||
await queryRunner.query(`ALTER TABLE webhooks ALTER COLUMN source_guild_id TYPE ${to} USING source_guild_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE webhooks DROP CONSTRAINT "FK_487a7af59d189f744fe394368fc";`); //guild_id
|
||||
await queryRunner.query(`ALTER TABLE webhooks ALTER COLUMN guild_id TYPE ${to} USING guild_id::${to}`);
|
||||
// and finally, cleanup
|
||||
await queryRunner.query(`ALTER TABLE guilds ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE public.messages ADD CONSTRAINT "FK_b193588441b085352a4c0109423" FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.invites ADD CONSTRAINT "FK_3f4939aa1461e8af57fea3fb05d" FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE public.templates ADD CONSTRAINT "FK_445d00eaaea0e60a017a5ed0c11" FOREIGN KEY (source_guild_id) REFERENCES guilds(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE public.webhooks ADD CONSTRAINT "FK_3a285f4f49c40e0706d3018bc9f" FOREIGN KEY (source_guild_id) REFERENCES guilds(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE public.webhooks ADD CONSTRAINT "FK_487a7af59d189f744fe394368fc" FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.members ADD CONSTRAINT "FK_16aceddd5b89825b8ed6029ad1c" FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.roles ADD CONSTRAINT "FK_c32c1ab1c4dc7dcb0278c4b1b8b" FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.stickers ADD CONSTRAINT "FK_193d551d852aca5347ef5c9f205" FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.applications ADD CONSTRAINT "FK_e5bf78cdbbe9ba91062d74c5aba" FOREIGN KEY (guild_id) REFERENCES guilds(id);`);
|
||||
await queryRunner.query(`ALTER TABLE public.voice_states ADD CONSTRAINT "FK_03779ef216d4b0358470d9cb748" FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.bans ADD CONSTRAINT "FK_9d3ab7dd180ebdd245cdb66ecad" FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.emojis ADD CONSTRAINT "FK_4b988e0db89d94cebcf07f598cc" FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.channels ADD CONSTRAINT "FK_c253dafe5f3a03ec00cd8fb4581" FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE;`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8PrimaryKeysInstanceBans1776178642004 implements MigrationInterface {
|
||||
name = "Int8PrimaryKeysInstanceBans1776178642004";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
// instance_bans
|
||||
// -> instance_bans
|
||||
await queryRunner.query(`ALTER TABLE instance_bans DROP CONSTRAINT "FK_0b02d18d0d830f160c921192a30";`); //origin_instance_ban_id
|
||||
await queryRunner.query(`ALTER TABLE instance_bans ALTER COLUMN origin_instance_ban_id TYPE ${to} USING origin_instance_ban_id::${to}`);
|
||||
// and finally, cleanup
|
||||
await queryRunner.query(`ALTER TABLE instance_bans ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE instance_bans ADD CONSTRAINT "FK_0b02d18d0d830f160c921192a30" FOREIGN KEY (origin_instance_ban_id) REFERENCES instance_bans(id) ON DELETE SET NULL;`,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8PrimaryKeysMessages1776178642005 implements MigrationInterface {
|
||||
name = "Int8PrimaryKeysMessages1776178642005";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
// messages
|
||||
// -> message_role_mentions
|
||||
await queryRunner.query(`ALTER TABLE message_role_mentions DROP CONSTRAINT "FK_a8242cf535337a490b0feaea0b4";`); //messagesId
|
||||
await queryRunner.query(`ALTER TABLE message_role_mentions ALTER COLUMN "messagesId" TYPE ${to} USING "messagesId"::${to}`);
|
||||
// -> message_channel_mentions
|
||||
await queryRunner.query(`ALTER TABLE message_channel_mentions DROP CONSTRAINT "FK_2a27102ecd1d81b4582a4360921";`); //messagesId
|
||||
await queryRunner.query(`ALTER TABLE message_channel_mentions ALTER COLUMN "messagesId" TYPE ${to} USING "messagesId"::${to}`);
|
||||
// -> message_user_mentions
|
||||
await queryRunner.query(`ALTER TABLE message_user_mentions DROP CONSTRAINT "FK_a343387fc560ef378760681c236";`); //messagesId
|
||||
await queryRunner.query(`ALTER TABLE message_user_mentions ALTER COLUMN "messagesId" TYPE ${to} USING "messagesId"::${to}`);
|
||||
// -> message_stickers
|
||||
await queryRunner.query(`ALTER TABLE message_stickers DROP CONSTRAINT "FK_40bb6f23e7cc133292e92829d28";`); //messagesId
|
||||
await queryRunner.query(`ALTER TABLE message_stickers ALTER COLUMN "messagesId" TYPE ${to} USING "messagesId"::${to}`);
|
||||
// -> attachments
|
||||
await queryRunner.query(`ALTER TABLE attachments DROP CONSTRAINT "FK_623e10eec51ada466c5038979e3";`); //message_id
|
||||
await queryRunner.query(`ALTER TABLE attachments ALTER COLUMN message_id TYPE ${to} USING message_id::${to}`);
|
||||
// -> messages
|
||||
await queryRunner.query(`ALTER TABLE messages DROP CONSTRAINT "FK_61a92bb65b302a76d9c1fcd3174";`); //message_reference_id
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN message_reference_id TYPE ${to} USING message_reference_id::${to}`);
|
||||
// and finally, cleanup
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE message_role_mentions ADD CONSTRAINT "FK_a8242cf535337a490b0feaea0b4" FOREIGN KEY ("messagesId") REFERENCES messages(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE message_channel_mentions ADD CONSTRAINT "FK_2a27102ecd1d81b4582a4360921" FOREIGN KEY ("messagesId") REFERENCES messages(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE message_user_mentions ADD CONSTRAINT "FK_a343387fc560ef378760681c236" FOREIGN KEY ("messagesId") REFERENCES messages(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE message_stickers ADD CONSTRAINT "FK_40bb6f23e7cc133292e92829d28" FOREIGN KEY ("messagesId") REFERENCES messages(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE attachments ADD CONSTRAINT "FK_623e10eec51ada466c5038979e3" FOREIGN KEY (message_id) REFERENCES messages(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE messages ADD CONSTRAINT "FK_61a92bb65b302a76d9c1fcd3174" FOREIGN KEY (message_reference_id) REFERENCES messages(id) ON DELETE SET NULL;`,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8PrimaryKeysRoles1776178642006 implements MigrationInterface {
|
||||
name = "Int8PrimaryKeysRoles1776178642006";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
// roles
|
||||
// -> message_role_mentions
|
||||
await queryRunner.query(`ALTER TABLE message_role_mentions DROP CONSTRAINT "FK_29d63eb1a458200851bc37d074b";`); //rolesId
|
||||
await queryRunner.query(`ALTER TABLE message_role_mentions ALTER COLUMN "rolesId" TYPE ${to} USING "rolesId"::${to}`);
|
||||
// -> member_roles
|
||||
await queryRunner.query(`ALTER TABLE member_roles DROP CONSTRAINT "FK_e9080e7a7997a0170026d5139c1";`); //role_id
|
||||
await queryRunner.query(`ALTER TABLE member_roles ALTER COLUMN "role_id" TYPE ${to} USING "role_id"::${to}`);
|
||||
// and finally, cleanup
|
||||
await queryRunner.query(`ALTER TABLE roles ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE public.message_role_mentions ADD CONSTRAINT "FK_29d63eb1a458200851bc37d074b" FOREIGN KEY ("rolesId") REFERENCES roles(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE public.member_roles ADD CONSTRAINT "FK_e9080e7a7997a0170026d5139c1" FOREIGN KEY (role_id) REFERENCES roles(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8PrimaryKeysStickerPacks1776178642007 implements MigrationInterface {
|
||||
name = "Int8PrimaryKeysStickerPacks1776178642007";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
// sticker_packs
|
||||
// -> stickers
|
||||
await queryRunner.query(`ALTER TABLE stickers DROP CONSTRAINT "FK_e7cfa5cefa6661b3fb8fda8ce69";`); //pack_id
|
||||
await queryRunner.query(`ALTER TABLE stickers ALTER COLUMN pack_id TYPE ${to} USING pack_id::${to}`);
|
||||
// and finally, cleanup
|
||||
await queryRunner.query(`ALTER TABLE sticker_packs ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE public.stickers ADD CONSTRAINT "FK_e7cfa5cefa6661b3fb8fda8ce69" FOREIGN KEY (pack_id) REFERENCES sticker_packs(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8PrimaryKeysStickers1776178642008 implements MigrationInterface {
|
||||
name = "Int8PrimaryKeysStickers1776178642008";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
// stickers
|
||||
// -> message_stickers
|
||||
await queryRunner.query(`ALTER TABLE message_stickers DROP CONSTRAINT "FK_e22a70819d07659c7a71c112a1f";`); //stickersId
|
||||
await queryRunner.query(`ALTER TABLE message_stickers ALTER COLUMN "stickersId" TYPE ${to} USING "stickersId"::${to}`);
|
||||
// -> sticker_packs
|
||||
await queryRunner.query(`ALTER TABLE sticker_packs DROP CONSTRAINT "FK_448fafba4355ee1c837bbc865f1";`); //coverStickerId
|
||||
await queryRunner.query(`ALTER TABLE sticker_packs ALTER COLUMN "coverStickerId" TYPE ${to} USING "coverStickerId"::${to}`);
|
||||
// and finally, cleanup
|
||||
await queryRunner.query(`ALTER TABLE stickers ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE public.message_stickers ADD CONSTRAINT "FK_e22a70819d07659c7a71c112a1f" FOREIGN KEY ("stickersId") REFERENCES stickers(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE public.sticker_packs ADD CONSTRAINT "FK_448fafba4355ee1c837bbc865f1" FOREIGN KEY ("coverStickerId") REFERENCES stickers (id);`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8PrimaryKeysStreams1776178642009 implements MigrationInterface {
|
||||
name = "Int8PrimaryKeysStreams1776178642009";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
// streams
|
||||
// -> stream_sessions
|
||||
await queryRunner.query(`ALTER TABLE stream_sessions DROP CONSTRAINT "FK_8b5a028a34dae9ee54af37c9c32";`); //stream_id
|
||||
await queryRunner.query(`ALTER TABLE stream_sessions ALTER COLUMN stream_id TYPE ${to} USING stream_id::${to}`);
|
||||
// and finally, cleanup
|
||||
await queryRunner.query(`ALTER TABLE streams ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE public.stream_sessions ADD CONSTRAINT "FK_8b5a028a34dae9ee54af37c9c32" FOREIGN KEY (stream_id) REFERENCES streams(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8PrimaryKeysTeams1776178642010 implements MigrationInterface {
|
||||
name = "Int8PrimaryKeysTeams1776178642010";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
// teams
|
||||
// -> applications
|
||||
await queryRunner.query(`ALTER TABLE applications DROP CONSTRAINT "FK_a36ed02953077f408d0f3ebc424";`); //team_id
|
||||
await queryRunner.query(`ALTER TABLE applications ALTER COLUMN team_id TYPE ${to} USING team_id::${to}`);
|
||||
// -> team_members
|
||||
await queryRunner.query(`ALTER TABLE team_members DROP CONSTRAINT "FK_fdad7d5768277e60c40e01cdcea";`); //team_id
|
||||
await queryRunner.query(`ALTER TABLE team_members ALTER COLUMN team_id TYPE ${to} USING team_id::${to}`);
|
||||
// and finally, cleanup
|
||||
await queryRunner.query(`ALTER TABLE teams ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE public.applications ADD CONSTRAINT "FK_a36ed02953077f408d0f3ebc424" FOREIGN KEY (team_id) REFERENCES teams(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.team_members ADD CONSTRAINT "FK_fdad7d5768277e60c40e01cdcea" FOREIGN KEY (team_id) REFERENCES teams(id) ON DELETE CASCADE;`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8PrimaryKeysTemplates1776178642011 implements MigrationInterface {
|
||||
name = "Int8PrimaryKeysTemplates1776178642011";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
// templates
|
||||
// -> guilds
|
||||
await queryRunner.query(`ALTER TABLE guilds DROP CONSTRAINT "FK_e2a2f873a64a5cf62526de42325";`); //template_id
|
||||
await queryRunner.query(`ALTER TABLE guilds ALTER COLUMN template_id TYPE ${to} USING template_id::${to}`);
|
||||
// and finally, cleanup
|
||||
await queryRunner.query(`ALTER TABLE templates ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE public.guilds ADD CONSTRAINT "FK_e2a2f873a64a5cf62526de42325" FOREIGN KEY (template_id) REFERENCES templates(id);`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,166 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8PrimaryKeysUsers1776178642012 implements MigrationInterface {
|
||||
name = "Int8PrimaryKeysUsers1776178642012";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
// users
|
||||
// -> applications
|
||||
await queryRunner.query(`ALTER TABLE applications DROP CONSTRAINT "FK_2ce5a55796fe4c2f77ece57a647";`); //bot_user_id
|
||||
await queryRunner.query(`ALTER TABLE applications ALTER COLUMN bot_user_id TYPE ${to} USING bot_user_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE applications DROP CONSTRAINT "FK_e57508958bf92b9d9d25231b5e8";`); //owner_id
|
||||
await queryRunner.query(`ALTER TABLE applications ALTER COLUMN owner_id TYPE ${to} USING owner_id::${to}`);
|
||||
// -> audit_logs
|
||||
await queryRunner.query(`ALTER TABLE audit_logs DROP CONSTRAINT "FK_3cd01cd3ae7aab010310d96ac8e";`); //target_id
|
||||
await queryRunner.query(`ALTER TABLE audit_logs ALTER COLUMN target_id TYPE ${to} USING target_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE audit_logs DROP CONSTRAINT "FK_bd2726fd31b35443f2245b93ba0";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE audit_logs ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> automod_rules
|
||||
await queryRunner.query(`ALTER TABLE automod_rules DROP CONSTRAINT "FK_12d3d60b961393d310429c062b7";`); //creator_id
|
||||
await queryRunner.query(`ALTER TABLE automod_rules ALTER COLUMN creator_id TYPE ${to} USING creator_id::${to}`);
|
||||
// -> backup_codes
|
||||
await queryRunner.query(`ALTER TABLE backup_codes DROP CONSTRAINT "FK_70066ea80d2f4b871beda32633b";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE backup_codes ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> bans
|
||||
await queryRunner.query(`ALTER TABLE bans DROP CONSTRAINT "FK_07ad88c86d1f290d46748410d58";`); //executor_id
|
||||
await queryRunner.query(`ALTER TABLE bans ALTER COLUMN executor_id TYPE ${to} USING executor_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE bans DROP CONSTRAINT "FK_5999e8e449f80a236ff72023559";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE bans ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> channels
|
||||
await queryRunner.query(`ALTER TABLE channels DROP CONSTRAINT "FK_3873ed438575cce703ecff4fc7b";`); //owner_id
|
||||
await queryRunner.query(`ALTER TABLE channels ALTER COLUMN owner_id TYPE ${to} USING owner_id::${to}`);
|
||||
// -> cloud_attachments
|
||||
await queryRunner.query(`ALTER TABLE cloud_attachments DROP CONSTRAINT "FK_8bf8cc8767e48cb482ff644fce6";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE cloud_attachments ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> connected_accounts
|
||||
await queryRunner.query(`ALTER TABLE connected_accounts DROP CONSTRAINT "FK_f47244225a6a1eac04a3463dd90";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE connected_accounts ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> emojis
|
||||
await queryRunner.query(`ALTER TABLE emojis DROP CONSTRAINT "FK_fa7ddd5f9a214e28ce596548421";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE emojis ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> guilds
|
||||
await queryRunner.query(`ALTER TABLE guilds DROP CONSTRAINT "FK_fc1a451727e3643ca572a3bb394";`); //owner_id
|
||||
await queryRunner.query(`ALTER TABLE guilds ALTER COLUMN owner_id TYPE ${to} USING owner_id::${to}`);
|
||||
// -> invites
|
||||
await queryRunner.query(`ALTER TABLE invites DROP CONSTRAINT "FK_11a0d394f8fc649c19ce5f16b59";`); //target_user_id
|
||||
await queryRunner.query(`ALTER TABLE invites ALTER COLUMN target_user_id TYPE ${to} USING target_user_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE invites DROP CONSTRAINT "FK_15c35422032e0b22b4ada95f48f";`); //inviter_id
|
||||
await queryRunner.query(`ALTER TABLE invites ALTER COLUMN inviter_id TYPE ${to} USING inviter_id::${to}`);
|
||||
// -> members
|
||||
await queryRunner.query(`ALTER TABLE members DROP CONSTRAINT "FK_28b53062261b996d9c99fa12404";`); //id
|
||||
await queryRunner.query(`ALTER TABLE members ALTER COLUMN id TYPE ${to} USING id::${to}`);
|
||||
// -> message_user_mentions
|
||||
await queryRunner.query(`ALTER TABLE message_user_mentions DROP CONSTRAINT "FK_b831eb18ceebd28976239b1e2f8";`); //usersId
|
||||
await queryRunner.query(`ALTER TABLE message_user_mentions ALTER COLUMN "usersId" TYPE ${to} USING "usersId"::${to}`);
|
||||
// -> messages
|
||||
await queryRunner.query(`ALTER TABLE messages DROP CONSTRAINT "FK_05535bc695e9f7ee104616459d3";`); //author_id
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN author_id TYPE ${to} USING author_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE messages DROP CONSTRAINT "FK_b0525304f2262b7014245351c76";`); //member_id
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN member_id TYPE ${to} USING member_id::${to}`);
|
||||
// -> notes
|
||||
await queryRunner.query(`ALTER TABLE notes DROP CONSTRAINT "FK_23e08e5b4481711d573e1abecdc";`); //target_id
|
||||
await queryRunner.query(`ALTER TABLE notes ALTER COLUMN target_id TYPE ${to} USING target_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE notes DROP CONSTRAINT "FK_f9e103f8ae67cb1787063597925";`); //owner_id
|
||||
await queryRunner.query(`ALTER TABLE notes ALTER COLUMN owner_id TYPE ${to} USING owner_id::${to}`);
|
||||
// -> read_states
|
||||
await queryRunner.query(`ALTER TABLE read_states DROP CONSTRAINT "FK_195f92e4dd1254a4e348c043763";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE read_states ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> recipients
|
||||
await queryRunner.query(`ALTER TABLE recipients DROP CONSTRAINT "FK_6157e8b6ba4e6e3089616481fe2";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE recipients ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> relationships
|
||||
await queryRunner.query(`ALTER TABLE relationships DROP CONSTRAINT "FK_9af4194bab1250b1c584ae4f1d7";`); //from_id
|
||||
await queryRunner.query(`ALTER TABLE relationships ALTER COLUMN from_id TYPE ${to} USING from_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE relationships DROP CONSTRAINT "FK_9c7f6b98a9843b76dce1b0c878b";`); //to_id
|
||||
await queryRunner.query(`ALTER TABLE relationships ALTER COLUMN to_id TYPE ${to} USING to_id::${to}`);
|
||||
// -> security_keys
|
||||
await queryRunner.query(`ALTER TABLE security_keys DROP CONSTRAINT "FK_24c97d0771cafedce6d7163eaad";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE security_keys ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> sessions
|
||||
await queryRunner.query(`ALTER TABLE sessions DROP CONSTRAINT "FK_085d540d9f418cfbdc7bd55bb19";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE sessions ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> stickers
|
||||
await queryRunner.query(`ALTER TABLE stickers DROP CONSTRAINT "FK_8f4ee73f2bb2325ff980502e158";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE stickers ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> stream_sessions
|
||||
await queryRunner.query(`ALTER TABLE stream_sessions DROP CONSTRAINT "FK_13ae5c29aff4d0890c54179511a";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE stream_sessions ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> streams
|
||||
await queryRunner.query(`ALTER TABLE streams DROP CONSTRAINT "FK_1b566f9b54d1cda271da53ac82f";`); //owner_id
|
||||
await queryRunner.query(`ALTER TABLE streams ALTER COLUMN owner_id TYPE ${to} USING owner_id::${to}`);
|
||||
// -> team_members
|
||||
await queryRunner.query(`ALTER TABLE team_members DROP CONSTRAINT "FK_c2bf4967c8c2a6b845dadfbf3d4";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE team_members ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> teams
|
||||
await queryRunner.query(`ALTER TABLE teams DROP CONSTRAINT "FK_13f00abf7cb6096c43ecaf8c108";`); //owner_user_id
|
||||
await queryRunner.query(`ALTER TABLE teams ALTER COLUMN owner_user_id TYPE ${to} USING owner_user_id::${to}`);
|
||||
// -> templates
|
||||
await queryRunner.query(`ALTER TABLE templates DROP CONSTRAINT "FK_d7374b7f8f5fbfdececa4fb62e1";`); //creator_id
|
||||
await queryRunner.query(`ALTER TABLE templates ALTER COLUMN creator_id TYPE ${to} USING creator_id::${to}`);
|
||||
// -> user_settings_protos
|
||||
await queryRunner.query(`ALTER TABLE user_settings_protos DROP CONSTRAINT "FK_8ff3d1961a48b693810c9f99853";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE user_settings_protos ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> voice_states
|
||||
await queryRunner.query(`ALTER TABLE voice_states DROP CONSTRAINT "FK_5fe1d5f931a67e85039c640001b";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE voice_states ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// -> webhooks
|
||||
await queryRunner.query(`ALTER TABLE webhooks DROP CONSTRAINT "FK_0d523f6f997c86e052c49b1455f";`); //user_id
|
||||
await queryRunner.query(`ALTER TABLE webhooks ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
// and finally, cleanup
|
||||
await queryRunner.query(`ALTER TABLE users ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE public.applications ADD CONSTRAINT "FK_2ce5a55796fe4c2f77ece57a647" FOREIGN KEY (bot_user_id) REFERENCES users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE public.applications ADD CONSTRAINT "FK_e57508958bf92b9d9d25231b5e8" FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.audit_logs ADD CONSTRAINT "FK_3cd01cd3ae7aab010310d96ac8e" FOREIGN KEY (target_id) REFERENCES users(id);`);
|
||||
await queryRunner.query(`ALTER TABLE public.audit_logs ADD CONSTRAINT "FK_bd2726fd31b35443f2245b93ba0" FOREIGN KEY (user_id) REFERENCES users(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE public.automod_rules ADD CONSTRAINT "FK_12d3d60b961393d310429c062b7" FOREIGN KEY (creator_id) REFERENCES users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE public.backup_codes ADD CONSTRAINT "FK_70066ea80d2f4b871beda32633b" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.bans ADD CONSTRAINT "FK_07ad88c86d1f290d46748410d58" FOREIGN KEY (executor_id) REFERENCES users(id);`);
|
||||
await queryRunner.query(`ALTER TABLE public.bans ADD CONSTRAINT "FK_5999e8e449f80a236ff72023559" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.channels ADD CONSTRAINT "FK_3873ed438575cce703ecff4fc7b" FOREIGN KEY (owner_id) REFERENCES users(id);`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE public.cloud_attachments ADD CONSTRAINT "FK_8bf8cc8767e48cb482ff644fce6" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL;`,
|
||||
);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE public.connected_accounts ADD CONSTRAINT "FK_f47244225a6a1eac04a3463dd90" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE public.emojis ADD CONSTRAINT "FK_fa7ddd5f9a214e28ce596548421" FOREIGN KEY (user_id) REFERENCES users(id);`);
|
||||
await queryRunner.query(`ALTER TABLE public.guilds ADD CONSTRAINT "FK_fc1a451727e3643ca572a3bb394" FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.invites ADD CONSTRAINT "FK_11a0d394f8fc649c19ce5f16b59" FOREIGN KEY (target_user_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.invites ADD CONSTRAINT "FK_15c35422032e0b22b4ada95f48f" FOREIGN KEY (inviter_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.members ADD CONSTRAINT "FK_28b53062261b996d9c99fa12404" FOREIGN KEY (id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE public.message_user_mentions ADD CONSTRAINT "FK_b831eb18ceebd28976239b1e2f8" FOREIGN KEY ("usersId") REFERENCES users(id) ON UPDATE CASCADE ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE public.messages ADD CONSTRAINT "FK_05535bc695e9f7ee104616459d3" FOREIGN KEY (author_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.messages ADD CONSTRAINT "FK_b0525304f2262b7014245351c76" FOREIGN KEY (member_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.notes ADD CONSTRAINT "FK_23e08e5b4481711d573e1abecdc" FOREIGN KEY (target_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.notes ADD CONSTRAINT "FK_f9e103f8ae67cb1787063597925" FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.read_states ADD CONSTRAINT "FK_195f92e4dd1254a4e348c043763" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.recipients ADD CONSTRAINT "FK_6157e8b6ba4e6e3089616481fe2" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.relationships ADD CONSTRAINT "FK_9af4194bab1250b1c584ae4f1d7" FOREIGN KEY (from_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.relationships ADD CONSTRAINT "FK_9c7f6b98a9843b76dce1b0c878b" FOREIGN KEY (to_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.security_keys ADD CONSTRAINT "FK_24c97d0771cafedce6d7163eaad" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.sessions ADD CONSTRAINT "FK_085d540d9f418cfbdc7bd55bb19" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.stickers ADD CONSTRAINT "FK_8f4ee73f2bb2325ff980502e158" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.stream_sessions ADD CONSTRAINT "FK_13ae5c29aff4d0890c54179511a" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.streams ADD CONSTRAINT "FK_1b566f9b54d1cda271da53ac82f" FOREIGN KEY (owner_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.team_members ADD CONSTRAINT "FK_c2bf4967c8c2a6b845dadfbf3d4" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.teams ADD CONSTRAINT "FK_13f00abf7cb6096c43ecaf8c108" FOREIGN KEY (owner_user_id) REFERENCES users(id);`);
|
||||
await queryRunner.query(`ALTER TABLE public.templates ADD CONSTRAINT "FK_d7374b7f8f5fbfdececa4fb62e1" FOREIGN KEY (creator_id) REFERENCES users(id);`);
|
||||
await queryRunner.query(`ALTER TABLE public.user_settings_protos ADD CONSTRAINT "FK_8ff3d1961a48b693810c9f99853" FOREIGN KEY (user_id) REFERENCES users(id);`);
|
||||
await queryRunner.query(`ALTER TABLE public.voice_states ADD CONSTRAINT "FK_5fe1d5f931a67e85039c640001b" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE public.webhooks ADD CONSTRAINT "FK_0d523f6f997c86e052c49b1455f" FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8PrimaryKeysWebhooks1776178642013 implements MigrationInterface {
|
||||
name = "Int8PrimaryKeysWebhooks1776178642013";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
// webhooks
|
||||
// -> messages
|
||||
await queryRunner.query(`ALTER TABLE messages DROP CONSTRAINT "FK_f83c04bcf1df4e5c0e7a52ed348";`); //webhook_id
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN webhook_id TYPE ${to} USING webhook_id::${to}`);
|
||||
// and finally, cleanup
|
||||
await queryRunner.query(`ALTER TABLE webhooks ALTER COLUMN id TYPE ${to} USING id::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE public.messages ADD CONSTRAINT "FK_f83c04bcf1df4e5c0e7a52ed348" FOREIGN KEY (webhook_id) REFERENCES webhooks(id);`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class JsonbForJsonColumns1776204936000 implements MigrationInterface {
|
||||
name = "JsonbForJsonColumns1776204936000";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "jsonb");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
await queryRunner.query(`ALTER TABLE application_commands ALTER COLUMN options SET DEFAULT '[]'::jsonb;`);
|
||||
await queryRunner.query(`ALTER TABLE application_commands ALTER COLUMN contexts TYPE ${to} USING contexts::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE application_commands ALTER COLUMN description_localizations TYPE ${to} USING description_localizations::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE application_commands ALTER COLUMN integration_types TYPE ${to} USING integration_types::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE application_commands ALTER COLUMN options TYPE ${to} USING options::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE application_commands ALTER COLUMN permissions TYPE ${to} USING permissions::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE applications ALTER COLUMN "type" TYPE ${to} USING "type"::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE applications ALTER COLUMN install_params TYPE ${to} USING install_params::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE audit_logs ALTER COLUMN changes TYPE ${to} USING changes::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE audit_logs ALTER COLUMN options TYPE ${to} USING options::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE automod_rules ALTER COLUMN actions TYPE ${to} USING actions::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE automod_rules ALTER COLUMN trigger_metadata TYPE ${to} USING trigger_metadata::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE categories ALTER COLUMN localizations TYPE ${to} USING localizations::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE channels ALTER COLUMN permission_overwrites TYPE ${to} USING permission_overwrites::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE channels ALTER COLUMN thread_metadata TYPE ${to} USING thread_metadata::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE connected_accounts ALTER COLUMN metadata TYPE ${to} USING metadata::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE connected_accounts ALTER COLUMN token_data TYPE ${to} USING token_data::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE embed_cache ALTER COLUMN embed TYPE ${to} USING embed::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE embed_cache ALTER COLUMN embeds TYPE ${to} USING embeds::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE guilds ALTER COLUMN welcome_screen TYPE ${to} USING welcome_screen::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE members ALTER COLUMN avatar_decoration_data TYPE ${to} USING avatar_decoration_data::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE members ALTER COLUMN collectibles TYPE ${to} USING collectibles::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE members ALTER COLUMN display_name_styles TYPE ${to} USING display_name_styles::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE members ALTER COLUMN settings TYPE ${to} USING settings::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN message_snapshots SET DEFAULT '[]'::jsonb;`);
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN activity TYPE ${to} USING activity::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN components TYPE ${to} USING components::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN embeds TYPE ${to} USING embeds::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN interaction TYPE ${to} USING interaction::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN interaction_metadata TYPE ${to} USING interaction_metadata::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN message_reference TYPE ${to} USING message_reference::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN message_snapshots TYPE ${to} USING message_snapshots::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN poll TYPE ${to} USING poll::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE messages ALTER COLUMN reactions TYPE ${to} USING reactions::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE roles ALTER COLUMN colors TYPE ${to} USING colors::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE roles ALTER COLUMN tags TYPE ${to} USING tags::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE sessions ALTER COLUMN activities SET DEFAULT '[]'::jsonb;`);
|
||||
await queryRunner.query(`ALTER TABLE sessions ALTER COLUMN activities TYPE ${to} USING activities::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE sessions ALTER COLUMN client_info TYPE ${to} USING client_info::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE sessions ALTER COLUMN client_status TYPE ${to} USING client_status::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE sessions ALTER COLUMN last_seen_location_info TYPE ${to} USING last_seen_location_info::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE templates ALTER COLUMN serialized_source_guild TYPE ${to} USING serialized_source_guild::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE thread_members ALTER COLUMN mute_config TYPE ${to} USING mute_config::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE user_settings ALTER COLUMN custom_status TYPE ${to} USING custom_status::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE user_settings ALTER COLUMN friend_source_flags TYPE ${to} USING friend_source_flags::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE user_settings ALTER COLUMN guild_folders TYPE ${to} USING guild_folders::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE user_settings ALTER COLUMN guild_positions TYPE ${to} USING guild_positions::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE user_settings ALTER COLUMN restricted_guilds TYPE ${to} USING restricted_guilds::${to};`);
|
||||
|
||||
await queryRunner.query(`ALTER TABLE users ALTER COLUMN avatar_decoration_data TYPE ${to} USING avatar_decoration_data::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE users ALTER COLUMN collectibles TYPE ${to} USING collectibles::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE users ALTER COLUMN data TYPE ${to} USING data::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE users ALTER COLUMN display_name_styles TYPE ${to} USING display_name_styles::${to};`);
|
||||
await queryRunner.query(`ALTER TABLE users ALTER COLUMN primary_guild TYPE ${to} USING primary_guild::${to};`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class DontStoreAttachmentUrls1776270346000 implements MigrationInterface {
|
||||
name = "DontStoreAttachmentUrls1776270346000";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "jsonb");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
await queryRunner.query(`ALTER TABLE attachments ADD channel_id int8 NULL;`);
|
||||
await queryRunner.query(`ALTER TABLE attachments ADD CONSTRAINT attachments_channels_fk FOREIGN KEY (channel_id) REFERENCES public.channels(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`UPDATE attachments att SET channel_id = (SELECT channel_id FROM messages WHERE id = att.message_id) WHERE message_id IS NOT NULL;`);
|
||||
await queryRunner.query(`ALTER TABLE attachments DROP COLUMN url;`);
|
||||
await queryRunner.query(`ALTER TABLE attachments DROP COLUMN proxy_url;`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Int8Fixes1776283923000 implements MigrationInterface {
|
||||
name = "Int8Fixes1776283923000";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.convertPks(queryRunner, "varchar");
|
||||
}
|
||||
|
||||
private async convertPks(queryRunner: QueryRunner, to: string) {
|
||||
await queryRunner.query(`ALTER TABLE application_commands ALTER COLUMN "version" SET DEFAULT 0::int8;`);
|
||||
await queryRunner.query(`ALTER TABLE application_commands ALTER COLUMN application_id TYPE ${to} USING application_id::${to}`);
|
||||
// missing relation
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE application_commands ADD CONSTRAINT application_commands_applications_fk FOREIGN KEY (application_id) REFERENCES applications(id) ON DELETE CASCADE;`,
|
||||
);
|
||||
await queryRunner.query(`ALTER TABLE application_commands ALTER COLUMN version TYPE ${to} USING version::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE automod_rules ALTER COLUMN guild_id TYPE ${to} USING guild_id::${to}`);
|
||||
// missing relation
|
||||
await queryRunner.query(`ALTER TABLE automod_rules ADD CONSTRAINT automod_rules_guilds_fk FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE;`);
|
||||
await queryRunner.query(`ALTER TABLE channels ALTER COLUMN last_message_id TYPE ${to} USING last_message_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE guilds ALTER COLUMN primary_category_id TYPE ${to} USING primary_category_id::${to}`);
|
||||
// missing relation
|
||||
await queryRunner.query(`ALTER TABLE guilds ADD CONSTRAINT guilds_categories_fk FOREIGN KEY (primary_category_id) REFERENCES categories(id) ON DELETE SET NULL;`);
|
||||
await queryRunner.query(`ALTER TABLE instance_bans ALTER COLUMN user_id TYPE ${to} USING user_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE members ALTER COLUMN last_message_id TYPE ${to} USING last_message_id::${to}`);
|
||||
// oops
|
||||
await queryRunner.query(`UPDATE read_states SET last_message_id = NULL WHERE last_message_id = 'null' OR last_message_id = 'undefined' OR last_message_id ~ 'fake';`);
|
||||
await queryRunner.query(`ALTER TABLE read_states ALTER COLUMN last_message_id TYPE ${to} USING last_message_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE read_states ALTER COLUMN last_acked_id TYPE ${to} USING last_acked_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE security_settings ALTER COLUMN guild_id TYPE ${to} USING guild_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE security_settings ALTER COLUMN channel_id TYPE ${to} USING channel_id::${to}`);
|
||||
await queryRunner.query(`ALTER TABLE tags ALTER COLUMN emoji_id TYPE ${to} USING emoji_id::${to}`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class GuildChannelOrderingAsArray1776450647000 implements MigrationInterface {
|
||||
name = "GuildChannelOrderingAsArray1776450647000";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
// spacebar was randomly adding json data into CSV values, unwrap them
|
||||
await queryRunner.query(`UPDATE guilds SET channel_ordering = REPLACE(channel_ordering, '"', '') WHERE channel_ordering ~ '"';`);
|
||||
await queryRunner.query(`UPDATE guilds SET channel_ordering = REPLACE(channel_ordering, '[', '') WHERE channel_ordering ~ '\\[';`);
|
||||
await queryRunner.query(`UPDATE guilds SET channel_ordering = REPLACE(channel_ordering, ']', '') WHERE channel_ordering ~ '\\]';`);
|
||||
await queryRunner.query(`ALTER TABLE guilds ALTER COLUMN channel_ordering TYPE int8[] USING string_to_array(channel_ordering, ',')::int8[];`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
console.log(`Migration ${this.name}.down() not implemented`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class AllSimpleArraysToPgArrays1776450647001 implements MigrationInterface {
|
||||
name = "AllSimpleArraysToPgArrays1776450647001";
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await this.cleanAndConvertToArray(queryRunner, "applications", "redirect_uris", "varchar");
|
||||
await this.cleanAndConvertToArray(queryRunner, "applications", "tags", "varchar");
|
||||
// await this.cleanAndConvertToArray(queryRunner, "applications", "rpc_origins", "varchar");
|
||||
|
||||
await this.cleanAndConvertToArray(queryRunner, "automod_rules", "exempt_channels", "int8");
|
||||
await this.cleanAndConvertToArray(queryRunner, "automod_rules", "exempt_roles", "int8");
|
||||
|
||||
await this.cleanAndConvertToArray(queryRunner, "connected_accounts", "integrations", "varchar");
|
||||
|
||||
await this.cleanAndConvertToArray(queryRunner, "emojis", "roles", "int8");
|
||||
await this.cleanAndConvertToArray(queryRunner, "emojis", "groups", "int8");
|
||||
|
||||
await this.cleanAndConvertToArray(queryRunner, "guilds", "features", "varchar");
|
||||
|
||||
await this.cleanAndConvertToArray(queryRunner, "members", "theme_colors", "int4");
|
||||
|
||||
await this.cleanAndConvertToArray(queryRunner, "team_members", "permissions", "varchar");
|
||||
|
||||
await this.cleanAndConvertToArray(queryRunner, "users", "theme_colors", "int4");
|
||||
await this.cleanAndConvertToArray(queryRunner, "users", "fingerprints", "varchar");
|
||||
await this.cleanAndConvertToArray(queryRunner, "users", "badge_ids", "int8");
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
console.log(`Migration ${this.name}.down() not implemented`);
|
||||
}
|
||||
|
||||
private async cleanAndConvertToArray(queryRunner: QueryRunner, table: string, column: string, type: string) {
|
||||
// spacebar was randomly adding json data into CSV values, unwrap them
|
||||
await queryRunner.query(`UPDATE ${table} SET ${column} = REPLACE(${column}, '"', '') WHERE ${column} ~ '"';`);
|
||||
await queryRunner.query(`UPDATE ${table} SET ${column} = REPLACE(${column}, '[', '') WHERE ${column} ~ '\\[';`);
|
||||
await queryRunner.query(`UPDATE ${table} SET ${column} = REPLACE(${column}, ']', '') WHERE ${column} ~ '\\]';`);
|
||||
await queryRunner.query(`ALTER TABLE ${table} ALTER COLUMN ${column} TYPE ${type}[] USING string_to_array(${column}, ',')::${type}[];`);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user