🐛 fix .delete -> add onDelete: "CASCADE"
This commit is contained in:
parent
0247df3e42
commit
62f9b35185
@ -13,15 +13,8 @@ router.post("/", route({}), async (req: Request, res: Response) => {
|
|||||||
const guild = await Guild.findOneOrFail({ where: { id: guild_id }, select: ["owner_id"] });
|
const guild = await Guild.findOneOrFail({ where: { id: guild_id }, select: ["owner_id"] });
|
||||||
if (guild.owner_id !== req.user_id) throw new HTTPError("You are not the owner of this guild", 401);
|
if (guild.owner_id !== req.user_id) throw new HTTPError("You are not the owner of this guild", 401);
|
||||||
|
|
||||||
// do not put everything into promise all, because of "QueryFailedError: SQLITE_CONSTRAINT: FOREIGN KEY constraint failed"
|
|
||||||
|
|
||||||
await Message.delete({ guild_id }); // messages must be deleted before channel
|
|
||||||
|
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
Role.delete({ guild_id }),
|
Guild.delete({ id: guild_id }), // this will also delete all guild related data
|
||||||
Channel.delete({ guild_id }),
|
|
||||||
Emoji.delete({ guild_id }),
|
|
||||||
Member.delete({ guild_id }),
|
|
||||||
emitEvent({
|
emitEvent({
|
||||||
event: "GUILD_DELETE",
|
event: "GUILD_DELETE",
|
||||||
data: {
|
data: {
|
||||||
@ -31,9 +24,6 @@ router.post("/", route({}), async (req: Request, res: Response) => {
|
|||||||
} as GuildDeleteEvent)
|
} as GuildDeleteEvent)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
await Invite.delete({ guild_id }); // invite must be deleted after channel
|
|
||||||
await Guild.delete({ id: guild_id }); // guild must be deleted after everything else
|
|
||||||
|
|
||||||
return res.sendStatus(204);
|
return res.sendStatus(204);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -41,7 +41,9 @@ export class Application extends BaseClass {
|
|||||||
verify_key: string;
|
verify_key: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "team_id" })
|
@JoinColumn({ name: "team_id" })
|
||||||
@ManyToOne(() => Team)
|
@ManyToOne(() => Team, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
team?: Team;
|
team?: Team;
|
||||||
|
|
||||||
@JoinColumn({ name: "guild_id" })
|
@JoinColumn({ name: "guild_id" })
|
||||||
|
@ -31,7 +31,9 @@ export class Attachment extends BaseClass {
|
|||||||
message_id: string;
|
message_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "message_id" })
|
@JoinColumn({ name: "message_id" })
|
||||||
@ManyToOne(() => require("./Message").Message, (message: import("./Message").Message) => message.attachments)
|
@ManyToOne(() => require("./Message").Message, (message: import("./Message").Message) => message.attachments, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
message: import("./Message").Message;
|
message: import("./Message").Message;
|
||||||
|
|
||||||
@BeforeRemove()
|
@BeforeRemove()
|
||||||
|
@ -10,7 +10,9 @@ export class Ban extends BaseClass {
|
|||||||
user_id: string;
|
user_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "user_id" })
|
@JoinColumn({ name: "user_id" })
|
||||||
@ManyToOne(() => User)
|
@ManyToOne(() => User, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
user: User;
|
user: User;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -18,7 +20,9 @@ export class Ban extends BaseClass {
|
|||||||
guild_id: string;
|
guild_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "guild_id" })
|
@JoinColumn({ name: "guild_id" })
|
||||||
@ManyToOne(() => Guild)
|
@ManyToOne(() => Guild, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
guild: Guild;
|
guild: Guild;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
|
@ -6,6 +6,7 @@ import {
|
|||||||
EntityMetadata,
|
EntityMetadata,
|
||||||
FindConditions,
|
FindConditions,
|
||||||
getConnection,
|
getConnection,
|
||||||
|
getManager,
|
||||||
PrimaryColumn,
|
PrimaryColumn,
|
||||||
RemoveOptions,
|
RemoveOptions,
|
||||||
} from "typeorm";
|
} from "typeorm";
|
||||||
@ -79,44 +80,41 @@ export class BaseClassWithoutId extends BaseEntity {
|
|||||||
return repository.decrement(conditions, propertyPath, value);
|
return repository.decrement(conditions, propertyPath, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static async delete<T>(criteria: FindConditions<T>, options?: RemoveOptions) {
|
// static async delete<T>(criteria: FindConditions<T>, options?: RemoveOptions) {
|
||||||
if (!criteria) throw new Error("You need to specify delete criteria");
|
// if (!criteria) throw new Error("You need to specify delete criteria");
|
||||||
|
|
||||||
const repository = this.getRepository();
|
// const repository = this.getRepository();
|
||||||
const promises = repository.metadata.relations.map(async (x) => {
|
// const promises = repository.metadata.relations.map(async (x) => {
|
||||||
if (x.orphanedRowAction !== "delete") return;
|
// if (x.orphanedRowAction !== "delete") return;
|
||||||
if (typeof x.type === "string") return;
|
|
||||||
|
|
||||||
const foreignKey =
|
// const foreignKey =
|
||||||
x.foreignKeys.find((key) => key.entityMetadata === repository.metadata) ||
|
// x.foreignKeys.find((key) => key.entityMetadata === repository.metadata) ||
|
||||||
x.inverseRelation?.foreignKeys[0]; // find foreign key for this entity
|
// x.inverseRelation?.foreignKeys[0]; // find foreign key for this entity
|
||||||
if (!foreignKey) {
|
// if (!foreignKey) {
|
||||||
throw new Error(
|
// throw new Error(
|
||||||
`Foreign key not found for entity ${repository.metadata.name} in relation ${x.propertyName}`
|
// `Foreign key not found for entity ${repository.metadata.name} in relation ${x.propertyName}`
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
const id = (criteria as any)[foreignKey.referencedColumnNames[0]];
|
// const id = (criteria as any)[foreignKey.referencedColumnNames[0]];
|
||||||
if (!id) throw new Error("id missing in criteria options");
|
// if (!id) throw new Error("id missing in criteria options " + foreignKey.referencedColumnNames);
|
||||||
|
|
||||||
if (x.relationType === "many-to-many") {
|
// if (x.relationType === "many-to-many") {
|
||||||
return getConnection()
|
// return getConnection()
|
||||||
.createQueryBuilder()
|
// .createQueryBuilder()
|
||||||
.relation(this, x.propertyName)
|
// .relation(this, x.propertyName)
|
||||||
.of(id)
|
// .of(id)
|
||||||
.remove({ [foreignKey.columnNames[0]]: id });
|
// .remove({ [foreignKey.columnNames[0]]: id });
|
||||||
} else if (
|
// } else if (
|
||||||
x.relationType === "one-to-one" ||
|
// x.relationType === "one-to-one" ||
|
||||||
x.relationType === "many-to-one" ||
|
// x.relationType === "many-to-one" ||
|
||||||
x.relationType === "one-to-many"
|
// x.relationType === "one-to-many"
|
||||||
) {
|
// ) {
|
||||||
return getConnection()
|
// return (x.inverseEntityMetadata.target as any).delete({ [foreignKey.columnNames[0]]: id });
|
||||||
.getRepository(x.inverseEntityMetadata.target)
|
// }
|
||||||
.delete({ [foreignKey.columnNames[0]]: id });
|
// });
|
||||||
}
|
// await Promise.all(promises);
|
||||||
});
|
// return super.delete(criteria, options);
|
||||||
await Promise.all(promises);
|
// }
|
||||||
return super.delete(criteria, options);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export class BaseClass extends BaseClassWithoutId {
|
export class BaseClass extends BaseClassWithoutId {
|
||||||
|
@ -45,7 +45,6 @@ export class Channel extends BaseClass {
|
|||||||
@OneToMany(() => Recipient, (recipient: Recipient) => recipient.channel, {
|
@OneToMany(() => Recipient, (recipient: Recipient) => recipient.channel, {
|
||||||
cascade: true,
|
cascade: true,
|
||||||
orphanedRowAction: "delete",
|
orphanedRowAction: "delete",
|
||||||
onDelete: "CASCADE",
|
|
||||||
})
|
})
|
||||||
recipients?: Recipient[];
|
recipients?: Recipient[];
|
||||||
|
|
||||||
@ -57,7 +56,9 @@ export class Channel extends BaseClass {
|
|||||||
guild_id?: string;
|
guild_id?: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "guild_id" })
|
@JoinColumn({ name: "guild_id" })
|
||||||
@ManyToOne(() => Guild)
|
@ManyToOne(() => Guild, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
guild: Guild;
|
guild: Guild;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -110,35 +111,30 @@ export class Channel extends BaseClass {
|
|||||||
@OneToMany(() => Invite, (invite: Invite) => invite.channel, {
|
@OneToMany(() => Invite, (invite: Invite) => invite.channel, {
|
||||||
cascade: true,
|
cascade: true,
|
||||||
orphanedRowAction: "delete",
|
orphanedRowAction: "delete",
|
||||||
onDelete: "CASCADE",
|
|
||||||
})
|
})
|
||||||
invites?: Invite[];
|
invites?: Invite[];
|
||||||
|
|
||||||
@OneToMany(() => Message, (message: Message) => message.channel, {
|
@OneToMany(() => Message, (message: Message) => message.channel, {
|
||||||
cascade: true,
|
cascade: true,
|
||||||
orphanedRowAction: "delete",
|
orphanedRowAction: "delete",
|
||||||
onDelete: "CASCADE",
|
|
||||||
})
|
})
|
||||||
messages?: Message[];
|
messages?: Message[];
|
||||||
|
|
||||||
@OneToMany(() => VoiceState, (voice_state: VoiceState) => voice_state.channel, {
|
@OneToMany(() => VoiceState, (voice_state: VoiceState) => voice_state.channel, {
|
||||||
cascade: true,
|
cascade: true,
|
||||||
orphanedRowAction: "delete",
|
orphanedRowAction: "delete",
|
||||||
onDelete: "CASCADE",
|
|
||||||
})
|
})
|
||||||
voice_states?: VoiceState[];
|
voice_states?: VoiceState[];
|
||||||
|
|
||||||
@OneToMany(() => ReadState, (read_state: ReadState) => read_state.channel, {
|
@OneToMany(() => ReadState, (read_state: ReadState) => read_state.channel, {
|
||||||
cascade: true,
|
cascade: true,
|
||||||
orphanedRowAction: "delete",
|
orphanedRowAction: "delete",
|
||||||
onDelete: "CASCADE",
|
|
||||||
})
|
})
|
||||||
read_states?: ReadState[];
|
read_states?: ReadState[];
|
||||||
|
|
||||||
@OneToMany(() => Webhook, (webhook: Webhook) => webhook.channel, {
|
@OneToMany(() => Webhook, (webhook: Webhook) => webhook.channel, {
|
||||||
cascade: true,
|
cascade: true,
|
||||||
orphanedRowAction: "delete",
|
orphanedRowAction: "delete",
|
||||||
onDelete: "CASCADE",
|
|
||||||
})
|
})
|
||||||
webhooks?: Webhook[];
|
webhooks?: Webhook[];
|
||||||
|
|
||||||
|
@ -11,7 +11,9 @@ export class ConnectedAccount extends BaseClass {
|
|||||||
user_id: string;
|
user_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "user_id" })
|
@JoinColumn({ name: "user_id" })
|
||||||
@ManyToOne(() => User)
|
@ManyToOne(() => User, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
user: User;
|
user: User;
|
||||||
|
|
||||||
@Column({ select: false })
|
@Column({ select: false })
|
||||||
|
@ -15,7 +15,9 @@ export class Emoji extends BaseClass {
|
|||||||
guild_id: string;
|
guild_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "guild_id" })
|
@JoinColumn({ name: "guild_id" })
|
||||||
@ManyToOne(() => Guild)
|
@ManyToOne(() => Guild, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
guild: Guild;
|
guild: Guild;
|
||||||
|
|
||||||
@Column()
|
@Column()
|
||||||
|
@ -84,7 +84,6 @@ export class Guild extends BaseClass {
|
|||||||
@OneToMany(() => Ban, (ban: Ban) => ban.guild, {
|
@OneToMany(() => Ban, (ban: Ban) => ban.guild, {
|
||||||
cascade: true,
|
cascade: true,
|
||||||
orphanedRowAction: "delete",
|
orphanedRowAction: "delete",
|
||||||
onDelete: "CASCADE",
|
|
||||||
})
|
})
|
||||||
bans: Ban[];
|
bans: Ban[];
|
||||||
|
|
||||||
@ -147,7 +146,6 @@ export class Guild extends BaseClass {
|
|||||||
@OneToMany(() => Channel, (channel: Channel) => channel.guild, {
|
@OneToMany(() => Channel, (channel: Channel) => channel.guild, {
|
||||||
cascade: true,
|
cascade: true,
|
||||||
orphanedRowAction: "delete",
|
orphanedRowAction: "delete",
|
||||||
onDelete: "CASCADE",
|
|
||||||
})
|
})
|
||||||
channels: Channel[];
|
channels: Channel[];
|
||||||
|
|
||||||
|
@ -34,7 +34,9 @@ export class Invite extends BaseClass {
|
|||||||
guild_id: string;
|
guild_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "guild_id" })
|
@JoinColumn({ name: "guild_id" })
|
||||||
@ManyToOne(() => Guild)
|
@ManyToOne(() => Guild, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
guild: Guild;
|
guild: Guild;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -42,7 +44,9 @@ export class Invite extends BaseClass {
|
|||||||
channel_id: string;
|
channel_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "channel_id" })
|
@JoinColumn({ name: "channel_id" })
|
||||||
@ManyToOne(() => Channel)
|
@ManyToOne(() => Channel, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
channel: Channel;
|
channel: Channel;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -58,7 +62,9 @@ export class Invite extends BaseClass {
|
|||||||
target_user_id: string;
|
target_user_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "target_user_id" })
|
@JoinColumn({ name: "target_user_id" })
|
||||||
@ManyToOne(() => User)
|
@ManyToOne(() => User, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
target_user?: string; // could be used for "User specific invites" https://github.com/fosscord/fosscord/issues/62
|
target_user?: string; // could be used for "User specific invites" https://github.com/fosscord/fosscord/issues/62
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
|
@ -39,7 +39,9 @@ export class Member extends BaseClassWithoutId {
|
|||||||
id: string;
|
id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "id" })
|
@JoinColumn({ name: "id" })
|
||||||
@ManyToOne(() => User)
|
@ManyToOne(() => User, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
user: User;
|
user: User;
|
||||||
|
|
||||||
@Column()
|
@Column()
|
||||||
@ -47,7 +49,9 @@ export class Member extends BaseClassWithoutId {
|
|||||||
guild_id: string;
|
guild_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "guild_id" })
|
@JoinColumn({ name: "guild_id" })
|
||||||
@ManyToOne(() => Guild)
|
@ManyToOne(() => Guild, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
guild: Guild;
|
guild: Guild;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -55,7 +59,6 @@ export class Member extends BaseClassWithoutId {
|
|||||||
|
|
||||||
@JoinTable({
|
@JoinTable({
|
||||||
name: "member_roles",
|
name: "member_roles",
|
||||||
|
|
||||||
joinColumn: { name: "index", referencedColumnName: "index" },
|
joinColumn: { name: "index", referencedColumnName: "index" },
|
||||||
inverseJoinColumn: {
|
inverseJoinColumn: {
|
||||||
name: "role_id",
|
name: "role_id",
|
||||||
|
@ -54,7 +54,9 @@ export class Message extends BaseClass {
|
|||||||
channel_id: string;
|
channel_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "channel_id" })
|
@JoinColumn({ name: "channel_id" })
|
||||||
@ManyToOne(() => Channel)
|
@ManyToOne(() => Channel, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
channel: Channel;
|
channel: Channel;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -62,7 +64,9 @@ export class Message extends BaseClass {
|
|||||||
guild_id?: string;
|
guild_id?: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "guild_id" })
|
@JoinColumn({ name: "guild_id" })
|
||||||
@ManyToOne(() => Guild)
|
@ManyToOne(() => Guild, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
guild?: Guild;
|
guild?: Guild;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -70,7 +74,9 @@ export class Message extends BaseClass {
|
|||||||
author_id: string;
|
author_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "author_id", referencedColumnName: "id" })
|
@JoinColumn({ name: "author_id", referencedColumnName: "id" })
|
||||||
@ManyToOne(() => User)
|
@ManyToOne(() => User, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
author?: User;
|
author?: User;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -132,7 +138,6 @@ export class Message extends BaseClass {
|
|||||||
@OneToMany(() => Attachment, (attachment: Attachment) => attachment.message, {
|
@OneToMany(() => Attachment, (attachment: Attachment) => attachment.message, {
|
||||||
cascade: true,
|
cascade: true,
|
||||||
orphanedRowAction: "delete",
|
orphanedRowAction: "delete",
|
||||||
onDelete: "CASCADE",
|
|
||||||
})
|
})
|
||||||
attachments?: Attachment[];
|
attachments?: Attachment[];
|
||||||
|
|
||||||
|
@ -15,7 +15,9 @@ export class ReadState extends BaseClass {
|
|||||||
channel_id: string;
|
channel_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "channel_id" })
|
@JoinColumn({ name: "channel_id" })
|
||||||
@ManyToOne(() => Channel)
|
@ManyToOne(() => Channel, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
channel: Channel;
|
channel: Channel;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -23,7 +25,9 @@ export class ReadState extends BaseClass {
|
|||||||
user_id: string;
|
user_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "user_id" })
|
@JoinColumn({ name: "user_id" })
|
||||||
@ManyToOne(() => User)
|
@ManyToOne(() => User, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
user: User;
|
user: User;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
|
@ -8,7 +8,9 @@ export class Recipient extends BaseClass {
|
|||||||
channel_id: string;
|
channel_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "channel_id" })
|
@JoinColumn({ name: "channel_id" })
|
||||||
@ManyToOne(() => require("./Channel").Channel)
|
@ManyToOne(() => require("./Channel").Channel, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
channel: import("./Channel").Channel;
|
channel: import("./Channel").Channel;
|
||||||
|
|
||||||
@Column()
|
@Column()
|
||||||
@ -16,7 +18,9 @@ export class Recipient extends BaseClass {
|
|||||||
user_id: string;
|
user_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "user_id" })
|
@JoinColumn({ name: "user_id" })
|
||||||
@ManyToOne(() => require("./User").User)
|
@ManyToOne(() => require("./User").User, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
user: import("./User").User;
|
user: import("./User").User;
|
||||||
|
|
||||||
@Column({ default: false })
|
@Column({ default: false })
|
||||||
|
@ -17,7 +17,9 @@ export class Relationship extends BaseClass {
|
|||||||
from_id: string;
|
from_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "from_id" })
|
@JoinColumn({ name: "from_id" })
|
||||||
@ManyToOne(() => User)
|
@ManyToOne(() => User, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
from: User;
|
from: User;
|
||||||
|
|
||||||
@Column({})
|
@Column({})
|
||||||
@ -25,7 +27,9 @@ export class Relationship extends BaseClass {
|
|||||||
to_id: string;
|
to_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "to_id" })
|
@JoinColumn({ name: "to_id" })
|
||||||
@ManyToOne(() => User)
|
@ManyToOne(() => User, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
to: User;
|
to: User;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
|
@ -10,7 +10,9 @@ export class Role extends BaseClass {
|
|||||||
guild_id: string;
|
guild_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "guild_id" })
|
@JoinColumn({ name: "guild_id" })
|
||||||
@ManyToOne(() => Guild)
|
@ManyToOne(() => Guild, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
guild: Guild;
|
guild: Guild;
|
||||||
|
|
||||||
@Column()
|
@Column()
|
||||||
|
@ -11,7 +11,9 @@ export class Session extends BaseClass {
|
|||||||
user_id: string;
|
user_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "user_id" })
|
@JoinColumn({ name: "user_id" })
|
||||||
@ManyToOne(() => User)
|
@ManyToOne(() => User, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
user: User;
|
user: User;
|
||||||
|
|
||||||
//TODO check, should be 32 char long hex string
|
//TODO check, should be 32 char long hex string
|
||||||
|
@ -31,7 +31,9 @@ export class Sticker extends BaseClass {
|
|||||||
guild_id?: string;
|
guild_id?: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "guild_id" })
|
@JoinColumn({ name: "guild_id" })
|
||||||
@ManyToOne(() => Guild)
|
@ManyToOne(() => Guild, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
guild?: Guild;
|
guild?: Guild;
|
||||||
|
|
||||||
@Column({ type: "simple-enum", enum: StickerType })
|
@Column({ type: "simple-enum", enum: StickerType })
|
||||||
|
@ -9,7 +9,9 @@ export class Team extends BaseClass {
|
|||||||
icon?: string;
|
icon?: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "member_ids" })
|
@JoinColumn({ name: "member_ids" })
|
||||||
@OneToMany(() => TeamMember, (member: TeamMember) => member.team)
|
@OneToMany(() => TeamMember, (member: TeamMember) => member.team, {
|
||||||
|
orphanedRowAction: "delete",
|
||||||
|
})
|
||||||
members: TeamMember[];
|
members: TeamMember[];
|
||||||
|
|
||||||
@Column()
|
@Column()
|
||||||
|
@ -20,7 +20,9 @@ export class TeamMember extends BaseClass {
|
|||||||
team_id: string;
|
team_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "team_id" })
|
@JoinColumn({ name: "team_id" })
|
||||||
@ManyToOne(() => require("./Team").Team, (team: import("./Team").Team) => team.members)
|
@ManyToOne(() => require("./Team").Team, (team: import("./Team").Team) => team.members, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
team: import("./Team").Team;
|
team: import("./Team").Team;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -28,6 +30,8 @@ export class TeamMember extends BaseClass {
|
|||||||
user_id: string;
|
user_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "user_id" })
|
@JoinColumn({ name: "user_id" })
|
||||||
@ManyToOne(() => User)
|
@ManyToOne(() => User, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
user: User;
|
user: User;
|
||||||
}
|
}
|
||||||
|
@ -127,11 +127,17 @@ export class User extends BaseClass {
|
|||||||
public_flags: number;
|
public_flags: number;
|
||||||
|
|
||||||
@JoinColumn({ name: "relationship_ids" })
|
@JoinColumn({ name: "relationship_ids" })
|
||||||
@OneToMany(() => Relationship, (relationship: Relationship) => relationship.from)
|
@OneToMany(() => Relationship, (relationship: Relationship) => relationship.from, {
|
||||||
|
cascade: true,
|
||||||
|
orphanedRowAction: "delete",
|
||||||
|
})
|
||||||
relationships: Relationship[];
|
relationships: Relationship[];
|
||||||
|
|
||||||
@JoinColumn({ name: "connected_account_ids" })
|
@JoinColumn({ name: "connected_account_ids" })
|
||||||
@OneToMany(() => ConnectedAccount, (account: ConnectedAccount) => account.user)
|
@OneToMany(() => ConnectedAccount, (account: ConnectedAccount) => account.user, {
|
||||||
|
cascade: true,
|
||||||
|
orphanedRowAction: "delete",
|
||||||
|
})
|
||||||
connected_accounts: ConnectedAccount[];
|
connected_accounts: ConnectedAccount[];
|
||||||
|
|
||||||
@Column({ type: "simple-json", select: false })
|
@Column({ type: "simple-json", select: false })
|
||||||
|
@ -13,7 +13,9 @@ export class VoiceState extends BaseClass {
|
|||||||
guild_id: string;
|
guild_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "guild_id" })
|
@JoinColumn({ name: "guild_id" })
|
||||||
@ManyToOne(() => Guild)
|
@ManyToOne(() => Guild, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
guild?: Guild;
|
guild?: Guild;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -21,7 +23,9 @@ export class VoiceState extends BaseClass {
|
|||||||
channel_id: string;
|
channel_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "channel_id" })
|
@JoinColumn({ name: "channel_id" })
|
||||||
@ManyToOne(() => Channel)
|
@ManyToOne(() => Channel, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
channel: Channel;
|
channel: Channel;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -29,11 +33,15 @@ export class VoiceState extends BaseClass {
|
|||||||
user_id: string;
|
user_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "user_id" })
|
@JoinColumn({ name: "user_id" })
|
||||||
@ManyToOne(() => User)
|
@ManyToOne(() => User, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
user: User;
|
user: User;
|
||||||
|
|
||||||
// @JoinColumn([{ name: "user_id", referencedColumnName: "id" },{ name: "guild_id", referencedColumnName: "guild_id" }])
|
// @JoinColumn([{ name: "user_id", referencedColumnName: "id" },{ name: "guild_id", referencedColumnName: "guild_id" }])
|
||||||
// @ManyToOne(() => Member)
|
// @ManyToOne(() => Member, {
|
||||||
|
// onDelete: "CASCADE",
|
||||||
|
// })
|
||||||
//TODO find a way to make it work without breaking Guild.voice_states
|
//TODO find a way to make it work without breaking Guild.voice_states
|
||||||
member: Member;
|
member: Member;
|
||||||
|
|
||||||
|
@ -32,7 +32,9 @@ export class Webhook extends BaseClass {
|
|||||||
guild_id: string;
|
guild_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "guild_id" })
|
@JoinColumn({ name: "guild_id" })
|
||||||
@ManyToOne(() => Guild)
|
@ManyToOne(() => Guild, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
guild: Guild;
|
guild: Guild;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -40,7 +42,9 @@ export class Webhook extends BaseClass {
|
|||||||
channel_id: string;
|
channel_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "channel_id" })
|
@JoinColumn({ name: "channel_id" })
|
||||||
@ManyToOne(() => Channel)
|
@ManyToOne(() => Channel, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
channel: Channel;
|
channel: Channel;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -48,7 +52,9 @@ export class Webhook extends BaseClass {
|
|||||||
application_id: string;
|
application_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "application_id" })
|
@JoinColumn({ name: "application_id" })
|
||||||
@ManyToOne(() => Application)
|
@ManyToOne(() => Application, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
application: Application;
|
application: Application;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -56,7 +62,9 @@ export class Webhook extends BaseClass {
|
|||||||
user_id: string;
|
user_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "user_id" })
|
@JoinColumn({ name: "user_id" })
|
||||||
@ManyToOne(() => User)
|
@ManyToOne(() => User, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
user: User;
|
user: User;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -64,6 +72,8 @@ export class Webhook extends BaseClass {
|
|||||||
source_guild_id: string;
|
source_guild_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "source_guild_id" })
|
@JoinColumn({ name: "source_guild_id" })
|
||||||
@ManyToOne(() => Guild)
|
@ManyToOne(() => Guild, {
|
||||||
|
onDelete: "CASCADE",
|
||||||
|
})
|
||||||
source_guild: Guild;
|
source_guild: Guild;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user