mirror of
https://github.com/spacebarchat/server.git
synced 2024-11-13 22:23:47 +01:00
Fix rebase conflicts
This commit is contained in:
parent
5e629decfc
commit
6d3706c2c8
@ -1,298 +0,0 @@
|
||||
import { WebSocket, Payload } from "@fosscord/gateway";
|
||||
import {
|
||||
checkToken,
|
||||
Intents,
|
||||
Member,
|
||||
ReadyEventData,
|
||||
User,
|
||||
Session,
|
||||
EVENTEnum,
|
||||
Config,
|
||||
PublicMember,
|
||||
PublicUser,
|
||||
PrivateUserProjection,
|
||||
ReadState,
|
||||
Application,
|
||||
emitEvent,
|
||||
SessionsReplace,
|
||||
PrivateSessionProjection,
|
||||
MemberPrivateProjection,
|
||||
PresenceUpdateEvent,
|
||||
UserSettings,
|
||||
IdentifySchema,
|
||||
} from "@fosscord/util";
|
||||
import { Send } from "../util/Send";
|
||||
import { CLOSECODES, OPCODES } from "../util/Constants";
|
||||
import { genSessionId } from "../util/SessionUtils";
|
||||
import { setupListener } from "../listener/listener";
|
||||
// import experiments from "./experiments.json";
|
||||
const experiments: any = [];
|
||||
import { check } from "./instanceOf";
|
||||
import { Recipient } from "@fosscord/util";
|
||||
import { OrmUtils } from "@fosscord/util";
|
||||
|
||||
// TODO: user sharding
|
||||
// TODO: check privileged intents, if defined in the config
|
||||
// TODO: check if already identified
|
||||
|
||||
export async function onIdentify(this: WebSocket, data: Payload) {
|
||||
clearTimeout(this.readyTimeout);
|
||||
check.call(this, IdentifySchema, data.d);
|
||||
|
||||
const identify: IdentifySchema = data.d;
|
||||
|
||||
try {
|
||||
const { jwtSecret } = Config.get().security;
|
||||
var { decoded } = await checkToken(identify.token, jwtSecret); // will throw an error if invalid
|
||||
} catch (error) {
|
||||
console.error("invalid token", error);
|
||||
return this.close(CLOSECODES.Authentication_failed);
|
||||
}
|
||||
this.user_id = decoded.id;
|
||||
|
||||
const session_id = genSessionId();
|
||||
this.session_id = session_id; //Set the session of the WebSocket object
|
||||
|
||||
const [user, read_states, members, recipients, session, application] =
|
||||
await Promise.all([
|
||||
User.findOneOrFail({
|
||||
where: { id: this.user_id },
|
||||
relations: ["relationships", "relationships.to", "settings"],
|
||||
select: [...PrivateUserProjection, "relationships"],
|
||||
}),
|
||||
ReadState.find({ where: { user_id: this.user_id } }),
|
||||
Member.find({
|
||||
where: { id: this.user_id },
|
||||
select: MemberPrivateProjection,
|
||||
relations: [
|
||||
"guild",
|
||||
"guild.channels",
|
||||
"guild.emojis",
|
||||
"guild.emojis.user",
|
||||
"guild.roles",
|
||||
"guild.stickers",
|
||||
"user",
|
||||
"roles",
|
||||
],
|
||||
}),
|
||||
Recipient.find({
|
||||
where: { user_id: this.user_id, closed: false },
|
||||
relations: [
|
||||
"channel",
|
||||
"channel.recipients",
|
||||
"channel.recipients.user",
|
||||
],
|
||||
// TODO: public user selection
|
||||
}),
|
||||
// save the session and delete it when the websocket is closed
|
||||
await OrmUtils.mergeDeep(new Session(), {
|
||||
user_id: this.user_id,
|
||||
session_id: session_id,
|
||||
// TODO: check if status is only one of: online, dnd, offline, idle
|
||||
status: identify.presence?.status || "offline", //does the session always start as online?
|
||||
client_info: {
|
||||
//TODO read from identity
|
||||
client: "desktop",
|
||||
os: identify.properties?.os,
|
||||
version: 0,
|
||||
},
|
||||
activities: [],
|
||||
}).save(),
|
||||
Application.findOne({ where: { id: this.user_id } }),
|
||||
]);
|
||||
|
||||
if (!user) return this.close(CLOSECODES.Authentication_failed);
|
||||
if (!user.settings) { //settings may not exist after updating...
|
||||
user.settings = new UserSettings();
|
||||
user.settings.id = user.id;
|
||||
await user.settings.save();
|
||||
}
|
||||
|
||||
if (!identify.intents) identify.intents = BigInt("0x6ffffffff");
|
||||
this.intents = new Intents(identify.intents);
|
||||
if (identify.shard) {
|
||||
this.shard_id = identify.shard[0];
|
||||
this.shard_count = identify.shard[1];
|
||||
if (
|
||||
this.shard_count == null ||
|
||||
this.shard_id == null ||
|
||||
this.shard_id >= this.shard_count ||
|
||||
this.shard_id < 0 ||
|
||||
this.shard_count <= 0
|
||||
) {
|
||||
console.log(identify.shard);
|
||||
return this.close(CLOSECODES.Invalid_shard);
|
||||
}
|
||||
}
|
||||
let users: PublicUser[] = [];
|
||||
|
||||
const merged_members = members.map((x: Member) => {
|
||||
return [
|
||||
{
|
||||
...x,
|
||||
roles: x.roles.map((x) => x.id),
|
||||
settings: undefined,
|
||||
guild: undefined,
|
||||
},
|
||||
];
|
||||
}) as PublicMember[][];
|
||||
let guilds = members.map((x) => ({ ...x.guild, joined_at: x.joined_at }));
|
||||
|
||||
// @ts-ignore
|
||||
guilds = guilds.map((guild) => {
|
||||
if (user.bot) {
|
||||
setTimeout(() => {
|
||||
Send(this, {
|
||||
op: OPCODES.Dispatch,
|
||||
t: EVENTEnum.GuildCreate,
|
||||
s: this.sequence++,
|
||||
d: guild,
|
||||
});
|
||||
}, 500);
|
||||
return { id: guild.id, unavailable: true };
|
||||
}
|
||||
|
||||
return guild;
|
||||
});
|
||||
|
||||
const user_guild_settings_entries = members.map((x) => x.settings);
|
||||
|
||||
const channels = recipients.map((x) => {
|
||||
// @ts-ignore
|
||||
x.channel.recipients = x.channel.recipients?.map((x) => x.user);
|
||||
//TODO is this needed? check if users in group dm that are not friends are sent in the READY event
|
||||
users = users.concat(x.channel.recipients as unknown as User[]);
|
||||
if (x.channel.isDm()) {
|
||||
x.channel.recipients = x.channel.recipients!.filter(
|
||||
(x) => x.id !== this.user_id
|
||||
);
|
||||
}
|
||||
return x.channel;
|
||||
});
|
||||
|
||||
for (let relation of user.relationships) {
|
||||
const related_user = relation.to;
|
||||
const public_related_user = {
|
||||
username: related_user.username,
|
||||
discriminator: related_user.discriminator,
|
||||
id: related_user.id,
|
||||
public_flags: related_user.public_flags,
|
||||
avatar: related_user.avatar,
|
||||
bot: related_user.bot,
|
||||
bio: related_user.bio,
|
||||
premium_since: user.premium_since
|
||||
};
|
||||
users.push(public_related_user);
|
||||
}
|
||||
|
||||
setImmediate(async () => {
|
||||
// run in seperate "promise context" because ready payload is not dependent on those events
|
||||
emitEvent({
|
||||
event: "SESSIONS_REPLACE",
|
||||
user_id: this.user_id,
|
||||
data: await Session.find({
|
||||
where: { user_id: this.user_id },
|
||||
select: PrivateSessionProjection,
|
||||
}),
|
||||
} as SessionsReplace);
|
||||
emitEvent({
|
||||
event: "PRESENCE_UPDATE",
|
||||
user_id: this.user_id,
|
||||
data: {
|
||||
user: await User.getPublicUser(this.user_id),
|
||||
activities: session.activities,
|
||||
client_status: session?.client_info,
|
||||
status: session.status,
|
||||
},
|
||||
} as PresenceUpdateEvent);
|
||||
});
|
||||
|
||||
read_states.forEach((s: any) => {
|
||||
s.id = s.channel_id;
|
||||
delete s.user_id;
|
||||
delete s.channel_id;
|
||||
});
|
||||
|
||||
const privateUser = {
|
||||
avatar: user.avatar,
|
||||
mobile: user.mobile,
|
||||
desktop: user.desktop,
|
||||
discriminator: user.discriminator,
|
||||
email: user.email,
|
||||
flags: user.flags,
|
||||
id: user.id,
|
||||
mfa_enabled: user.mfa_enabled,
|
||||
nsfw_allowed: user.nsfw_allowed,
|
||||
phone: user.phone,
|
||||
premium: user.premium,
|
||||
premium_type: user.premium_type,
|
||||
public_flags: user.public_flags,
|
||||
username: user.username,
|
||||
verified: user.verified,
|
||||
bot: user.bot,
|
||||
accent_color: user.accent_color || 0,
|
||||
banner: user.banner,
|
||||
bio: user.bio,
|
||||
premium_since: user.premium_since
|
||||
};
|
||||
|
||||
const d: ReadyEventData = {
|
||||
v: 8,
|
||||
application: {id: application?.id??'', flags: application?.flags??0}, //TODO: check this code!
|
||||
user: privateUser,
|
||||
user_settings: user.settings,
|
||||
// @ts-ignore
|
||||
guilds: guilds.map((x) => {
|
||||
// @ts-ignore
|
||||
x.guild_hashes = {}; // @ts-ignore
|
||||
x.guild_scheduled_events = []; // @ts-ignore
|
||||
x.threads = [];
|
||||
return x;
|
||||
}),
|
||||
guild_experiments: [], // TODO
|
||||
geo_ordered_rtc_regions: [], // TODO
|
||||
relationships: user.relationships.map((x) => x.toPublicRelationship()),
|
||||
read_state: {
|
||||
entries: read_states,
|
||||
partial: false,
|
||||
version: 304128,
|
||||
},
|
||||
user_guild_settings: {
|
||||
entries: user_guild_settings_entries,
|
||||
partial: false, // TODO partial
|
||||
version: 642,
|
||||
},
|
||||
private_channels: channels,
|
||||
session_id: session_id,
|
||||
analytics_token: "", // TODO
|
||||
connected_accounts: [], // TODO
|
||||
consents: {
|
||||
personalization: {
|
||||
consented: false, // TODO
|
||||
},
|
||||
},
|
||||
country_code: user.settings.locale,
|
||||
friend_suggestion_count: 0, // TODO
|
||||
// @ts-ignore
|
||||
experiments: experiments, // TODO
|
||||
guild_join_requests: [], // TODO what is this?
|
||||
users: users.filter((x) => x).unique(),
|
||||
merged_members: merged_members,
|
||||
// shard // TODO: only for user sharding
|
||||
};
|
||||
|
||||
// TODO: send real proper data structure
|
||||
await Send(this, {
|
||||
op: OPCODES.Dispatch,
|
||||
t: EVENTEnum.Ready,
|
||||
s: this.sequence++,
|
||||
d,
|
||||
});
|
||||
|
||||
//TODO send READY_SUPPLEMENTAL
|
||||
//TODO send GUILD_MEMBER_LIST_UPDATE
|
||||
//TODO send SESSIONS_REPLACE
|
||||
//TODO send VOICE_STATE_UPDATE to let the client know if another device is already connected to a voice channel
|
||||
|
||||
await setupListener.call(this);
|
||||
}
|
@ -108,7 +108,7 @@ export async function onIdentify(this: WebSocket, data: Payload) {
|
||||
await user.settings.save();
|
||||
}
|
||||
|
||||
if (!identify.intents) identify.intents = "0x6ffffffff"
|
||||
if (!identify.intents) identify.intents = "30064771071";
|
||||
this.intents = new Intents(identify.intents);
|
||||
if (identify.shard) {
|
||||
this.shard_id = identify.shard[0];
|
||||
@ -238,7 +238,7 @@ export async function onIdentify(this: WebSocket, data: Payload) {
|
||||
|
||||
const d: ReadyEventData = {
|
||||
v: 8,
|
||||
application: {id: application?.id??'', flags: application?.flags??''}, //TODO: check this code!
|
||||
application: {id: application?.id??'', flags: application?.flags??0}, //TODO: check this code!
|
||||
user: privateUser,
|
||||
user_settings: user.settings,
|
||||
// @ts-ignore
|
||||
|
@ -1,232 +0,0 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class CodeCleanup31660258393551 implements MigrationInterface {
|
||||
name = 'CodeCleanup31660258393551'
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP FOREIGN KEY \`FK_2ce5a55796fe4c2f77ece57a647\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
DROP INDEX \`REL_2ce5a55796fe4c2f77ece57a64\` ON \`applications\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE TABLE \`user_settings\` (
|
||||
\`id\` varchar(255) NOT NULL,
|
||||
\`afk_timeout\` int NULL,
|
||||
\`allow_accessibility_detection\` tinyint NULL,
|
||||
\`animate_emoji\` tinyint NULL,
|
||||
\`animate_stickers\` int NULL,
|
||||
\`contact_sync_enabled\` tinyint NULL,
|
||||
\`convert_emoticons\` tinyint NULL,
|
||||
\`custom_status\` text NULL,
|
||||
\`default_guilds_restricted\` tinyint NULL,
|
||||
\`detect_platform_accounts\` tinyint NULL,
|
||||
\`developer_mode\` tinyint NULL,
|
||||
\`disable_games_tab\` tinyint NULL,
|
||||
\`enable_tts_command\` tinyint NULL,
|
||||
\`explicit_content_filter\` int NULL,
|
||||
\`friend_source_flags\` text NULL,
|
||||
\`gateway_connected\` tinyint NULL,
|
||||
\`gif_auto_play\` tinyint NULL,
|
||||
\`guild_folders\` text NULL,
|
||||
\`guild_positions\` text NULL,
|
||||
\`inline_attachment_media\` tinyint NULL,
|
||||
\`inline_embed_media\` tinyint NULL,
|
||||
\`locale\` varchar(255) NULL,
|
||||
\`message_display_compact\` tinyint NULL,
|
||||
\`native_phone_integration_enabled\` tinyint NULL,
|
||||
\`render_embeds\` tinyint NULL,
|
||||
\`render_reactions\` tinyint NULL,
|
||||
\`restricted_guilds\` text NULL,
|
||||
\`show_current_game\` tinyint NULL,
|
||||
\`status\` varchar(255) NULL,
|
||||
\`stream_notifications_enabled\` tinyint NULL,
|
||||
\`theme\` varchar(255) NULL,
|
||||
\`timezone_offset\` int NULL,
|
||||
PRIMARY KEY (\`id\`)
|
||||
) ENGINE = InnoDB
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`users\` DROP COLUMN \`settings\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`type\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`hook\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`redirect_uris\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`rpc_application_state\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`store_application_state\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`verification_state\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`interactions_endpoint_url\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`integration_public\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`integration_require_code_grant\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`discoverability_state\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`discovery_eligibility_flags\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`tags\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`install_params\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`bot_user_id\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`guilds\`
|
||||
ADD \`premium_progress_bar_enabled\` tinyint NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`rpc_origins\` text NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`primary_sku_id\` varchar(255) NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`slug\` varchar(255) NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`guild_id\` varchar(255) NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` CHANGE \`description\` \`description\` varchar(255) NOT NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`flags\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`flags\` varchar(255) NOT NULL
|
||||
`);
|
||||
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 FOREIGN KEY \`FK_e5bf78cdbbe9ba91062d74c5aba\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`flags\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`flags\` int NOT NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` CHANGE \`description\` \`description\` varchar(255) NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`guild_id\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`slug\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`primary_sku_id\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\` DROP COLUMN \`rpc_origins\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`guilds\` DROP COLUMN \`premium_progress_bar_enabled\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`bot_user_id\` varchar(255) NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`install_params\` text NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`tags\` text NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`discovery_eligibility_flags\` int NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`discoverability_state\` int NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`integration_require_code_grant\` tinyint NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`integration_public\` tinyint NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`interactions_endpoint_url\` varchar(255) NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`verification_state\` int NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`store_application_state\` int NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`rpc_application_state\` int NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`redirect_uris\` text NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`hook\` tinyint NOT NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD \`type\` text NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`users\`
|
||||
ADD \`settings\` text NOT NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
DROP TABLE \`user_settings\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE UNIQUE INDEX \`REL_2ce5a55796fe4c2f77ece57a64\` ON \`applications\` (\`bot_user_id\`)
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`applications\`
|
||||
ADD CONSTRAINT \`FK_2ce5a55796fe4c2f77ece57a647\` FOREIGN KEY (\`bot_user_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
`);
|
||||
}
|
||||
|
||||
}
|
@ -1,56 +0,0 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class InvitersAreDeletable1660416072362 implements MigrationInterface {
|
||||
name = 'InvitersAreDeletable1660416072362'
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`invites\` DROP FOREIGN KEY \`FK_15c35422032e0b22b4ada95f48f\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
DROP INDEX \`IDX_76ba283779c8441fd5ff819c8c\` ON \`users\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE TABLE \`plugin_config\` (
|
||||
\`key\` varchar(255) NOT NULL,
|
||||
\`value\` text NULL,
|
||||
PRIMARY KEY (\`key\`)
|
||||
) ENGINE = InnoDB
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`channels\`
|
||||
ADD \`flags\` int NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`channels\`
|
||||
ADD \`default_thread_rate_limit_per_user\` int NULL
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`invites\`
|
||||
ADD CONSTRAINT \`FK_15c35422032e0b22b4ada95f48f\` FOREIGN KEY (\`inviter_id\`) REFERENCES \`users\`(\`id\`) ON DELETE CASCADE ON UPDATE NO ACTION
|
||||
`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`invites\` DROP FOREIGN KEY \`FK_15c35422032e0b22b4ada95f48f\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`channels\` DROP COLUMN \`default_thread_rate_limit_per_user\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`channels\` DROP COLUMN \`flags\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
DROP TABLE \`plugin_config\`
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE UNIQUE INDEX \`IDX_76ba283779c8441fd5ff819c8c\` ON \`users\` (\`settingsId\`)
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE \`invites\`
|
||||
ADD CONSTRAINT \`FK_15c35422032e0b22b4ada95f48f\` FOREIGN KEY (\`inviter_id\`) REFERENCES \`users\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
`);
|
||||
}
|
||||
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class InvitersAreDeletable1660416055566 implements MigrationInterface {
|
||||
name = 'InvitersAreDeletable1660416055566'
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "invites" DROP CONSTRAINT "FK_15c35422032e0b22b4ada95f48f"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "invites"
|
||||
ADD CONSTRAINT "FK_15c35422032e0b22b4ada95f48f" FOREIGN KEY ("inviter_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE NO ACTION
|
||||
`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "invites" DROP CONSTRAINT "FK_15c35422032e0b22b4ada95f48f"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "invites"
|
||||
ADD CONSTRAINT "FK_15c35422032e0b22b4ada95f48f" FOREIGN KEY ("inviter_id") REFERENCES "users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION
|
||||
`);
|
||||
}
|
||||
|
||||
}
|
@ -1,246 +0,0 @@
|
||||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class InvitersAreDeletable1660416010862 implements MigrationInterface {
|
||||
name = 'InvitersAreDeletable1660416010862'
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
CREATE TABLE "temporary_invites" (
|
||||
"code" varchar PRIMARY KEY NOT NULL,
|
||||
"temporary" boolean NOT NULL,
|
||||
"uses" integer NOT NULL,
|
||||
"max_uses" integer NOT NULL,
|
||||
"max_age" integer NOT NULL,
|
||||
"created_at" datetime NOT NULL,
|
||||
"expires_at" datetime NOT NULL,
|
||||
"guild_id" varchar,
|
||||
"channel_id" varchar,
|
||||
"inviter_id" varchar,
|
||||
"target_user_id" varchar,
|
||||
"target_user_type" integer,
|
||||
"vanity_url" boolean,
|
||||
CONSTRAINT "FK_11a0d394f8fc649c19ce5f16b59" FOREIGN KEY ("target_user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_6a15b051fe5050aa00a4b9ff0f6" FOREIGN KEY ("channel_id") REFERENCES "channels" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_3f4939aa1461e8af57fea3fb05d" FOREIGN KEY ("guild_id") REFERENCES "guilds" ("id") ON DELETE CASCADE ON UPDATE NO ACTION
|
||||
)
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
INSERT INTO "temporary_invites"(
|
||||
"code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
)
|
||||
SELECT "code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
FROM "invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
DROP TABLE "invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "temporary_invites"
|
||||
RENAME TO "invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE TABLE "temporary_invites" (
|
||||
"code" varchar PRIMARY KEY NOT NULL,
|
||||
"temporary" boolean NOT NULL,
|
||||
"uses" integer NOT NULL,
|
||||
"max_uses" integer NOT NULL,
|
||||
"max_age" integer NOT NULL,
|
||||
"created_at" datetime NOT NULL,
|
||||
"expires_at" datetime NOT NULL,
|
||||
"guild_id" varchar,
|
||||
"channel_id" varchar,
|
||||
"inviter_id" varchar,
|
||||
"target_user_id" varchar,
|
||||
"target_user_type" integer,
|
||||
"vanity_url" boolean,
|
||||
CONSTRAINT "FK_11a0d394f8fc649c19ce5f16b59" FOREIGN KEY ("target_user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_6a15b051fe5050aa00a4b9ff0f6" FOREIGN KEY ("channel_id") REFERENCES "channels" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_3f4939aa1461e8af57fea3fb05d" FOREIGN KEY ("guild_id") REFERENCES "guilds" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_15c35422032e0b22b4ada95f48f" FOREIGN KEY ("inviter_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE NO ACTION
|
||||
)
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
INSERT INTO "temporary_invites"(
|
||||
"code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
)
|
||||
SELECT "code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
FROM "invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
DROP TABLE "invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "temporary_invites"
|
||||
RENAME TO "invites"
|
||||
`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "invites"
|
||||
RENAME TO "temporary_invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE TABLE "invites" (
|
||||
"code" varchar PRIMARY KEY NOT NULL,
|
||||
"temporary" boolean NOT NULL,
|
||||
"uses" integer NOT NULL,
|
||||
"max_uses" integer NOT NULL,
|
||||
"max_age" integer NOT NULL,
|
||||
"created_at" datetime NOT NULL,
|
||||
"expires_at" datetime NOT NULL,
|
||||
"guild_id" varchar,
|
||||
"channel_id" varchar,
|
||||
"inviter_id" varchar,
|
||||
"target_user_id" varchar,
|
||||
"target_user_type" integer,
|
||||
"vanity_url" boolean,
|
||||
CONSTRAINT "FK_11a0d394f8fc649c19ce5f16b59" FOREIGN KEY ("target_user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_6a15b051fe5050aa00a4b9ff0f6" FOREIGN KEY ("channel_id") REFERENCES "channels" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_3f4939aa1461e8af57fea3fb05d" FOREIGN KEY ("guild_id") REFERENCES "guilds" ("id") ON DELETE CASCADE ON UPDATE NO ACTION
|
||||
)
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
INSERT INTO "invites"(
|
||||
"code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
)
|
||||
SELECT "code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
FROM "temporary_invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
DROP TABLE "temporary_invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "invites"
|
||||
RENAME TO "temporary_invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
CREATE TABLE "invites" (
|
||||
"code" varchar PRIMARY KEY NOT NULL,
|
||||
"temporary" boolean NOT NULL,
|
||||
"uses" integer NOT NULL,
|
||||
"max_uses" integer NOT NULL,
|
||||
"max_age" integer NOT NULL,
|
||||
"created_at" datetime NOT NULL,
|
||||
"expires_at" datetime NOT NULL,
|
||||
"guild_id" varchar,
|
||||
"channel_id" varchar,
|
||||
"inviter_id" varchar,
|
||||
"target_user_id" varchar,
|
||||
"target_user_type" integer,
|
||||
"vanity_url" boolean,
|
||||
CONSTRAINT "FK_11a0d394f8fc649c19ce5f16b59" FOREIGN KEY ("target_user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_15c35422032e0b22b4ada95f48f" FOREIGN KEY ("inviter_id") REFERENCES "users" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_6a15b051fe5050aa00a4b9ff0f6" FOREIGN KEY ("channel_id") REFERENCES "channels" ("id") ON DELETE CASCADE ON UPDATE NO ACTION,
|
||||
CONSTRAINT "FK_3f4939aa1461e8af57fea3fb05d" FOREIGN KEY ("guild_id") REFERENCES "guilds" ("id") ON DELETE CASCADE ON UPDATE NO ACTION
|
||||
)
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
INSERT INTO "invites"(
|
||||
"code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
)
|
||||
SELECT "code",
|
||||
"temporary",
|
||||
"uses",
|
||||
"max_uses",
|
||||
"max_age",
|
||||
"created_at",
|
||||
"expires_at",
|
||||
"guild_id",
|
||||
"channel_id",
|
||||
"inviter_id",
|
||||
"target_user_id",
|
||||
"target_user_type",
|
||||
"vanity_url"
|
||||
FROM "temporary_invites"
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
DROP TABLE "temporary_invites"
|
||||
`);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user