summary refs log tree commit diff
path: root/src/util/entities/Member.ts
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/util/entities/Member.ts (renamed from util/src/entities/Member.ts)56
1 files changed, 32 insertions, 24 deletions
diff --git a/util/src/entities/Member.ts b/src/util/entities/Member.ts

index 03698453..d7bcefea 100644 --- a/util/src/entities/Member.ts +++ b/src/util/entities/Member.ts
@@ -1,6 +1,8 @@ import { PublicUser, User } from "./User"; import { Message } from "./Message"; import { + BeforeInsert, + BeforeUpdate, Column, Entity, Index, @@ -73,17 +75,6 @@ export class Member extends BaseClassWithoutId { @Column({ nullable: true }) nick?: string; - setNick(val: string) { - - if (val) { - val = val.split("\n").join(""); - val = val.split("\t").join(""); - if (BannedWords.find(val)) throw FieldErrors({ nick: { message: "Bad nickname", code: "INVALID_NICKNAME" } }); - } - - this.nick = val; - } - @JoinTable({ name: "member_roles", joinColumn: { name: "index", referencedColumnName: "index" }, @@ -129,8 +120,18 @@ export class Member extends BaseClassWithoutId { // @Column({ type: "simple-json" }) // read_state: ReadState; + @BeforeUpdate() + @BeforeInsert() + validate() { + if (this.nick) { + this.nick = this.nick.split("\n").join(""); + this.nick = this.nick.split("\t").join(""); + if (BannedWords.find(this.nick)) throw FieldErrors({ nick: { message: "Bad nickname", code: "INVALID_NICKNAME" } }); + } + } + static async IsInGuildOrFail(user_id: string, guild_id: string) { - if (await Member.count({ id: user_id, guild: { id: guild_id } })) return true; + if (await Member.count({ where: { id: user_id, guild: { id: guild_id } } })) return true; throw new HTTPError("You are not member of this guild", 403); } @@ -168,11 +169,12 @@ export class Member extends BaseClassWithoutId { Member.findOneOrFail({ where: { id: user_id, guild_id }, relations: ["user", "roles"], // we don't want to load the role objects just the ids - select: ["index", "roles.id"], + //@ts-ignore + select: ["index", "roles.id"], // TODO fix type }), Role.findOneOrFail({ where: { id: role_id, guild_id }, select: ["id"] }), ]); - member.roles.push(new Role({ id: role_id })); + member.roles.push(Role.create({ id: role_id })); await Promise.all([ member.save(), @@ -194,9 +196,10 @@ export class Member extends BaseClassWithoutId { Member.findOneOrFail({ where: { id: user_id, guild_id }, relations: ["user", "roles"], // we don't want to load the role objects just the ids - select: ["roles.id", "index"], + //@ts-ignore + select: ["roles.id", "index"], // TODO: fix type }), - await Role.findOneOrFail({ id: role_id, guild_id }), + await Role.findOneOrFail({ where: { id: role_id, guild_id } }), ]); member.roles = member.roles.filter((x) => x.id == role_id); @@ -246,7 +249,7 @@ export class Member extends BaseClassWithoutId { throw DiscordApiErrors.USER_BANNED; } const { maxGuilds } = Config.get().limits.user; - const guild_count = await Member.count({ id: user_id }); + const guild_count = await Member.count({ where: { id: user_id } }); if (guild_count >= maxGuilds) { throw new HTTPError(`You are at the ${maxGuilds} server limit.`, 403); } @@ -258,7 +261,7 @@ export class Member extends BaseClassWithoutId { relations: [...PublicGuildRelations, "system_channel"], }); - if (await Member.count({ id: user.id, guild: { id: guild_id } })) + if (await Member.count({ where: { id: user.id, guild: { id: guild_id } } })) throw new HTTPError("You are already a member of this guild", 400); const member = { @@ -274,12 +277,18 @@ export class Member extends BaseClassWithoutId { }; await Promise.all([ - new Member({ + Member.create({ ...member, - roles: [new Role({ id: guild_id })], + roles: [Role.create({ id: guild_id })], // read_state: {}, settings: { - channel_overrides: [], + guild_id: null, + mute_config: null, + mute_scheduled_events: false, + flags: 0, + hide_muted_channels: false, + notify_highlights: 0, + channel_overrides: {}, message_notifications: 0, mobile_push: true, muted: false, @@ -318,13 +327,12 @@ export class Member extends BaseClassWithoutId { if (guild.system_channel_id) { // send welcome message - const message = new Message({ + const message = Message.create({ type: 7, guild_id: guild.id, channel_id: guild.system_channel_id, author: user, timestamp: new Date(), - reactions: [], attachments: [], embeds: [], @@ -385,7 +393,7 @@ export const DefaultUserGuildSettings: UserGuildSettings = { suppress_roles: false, version: 453, // ? guild_id: null, -} +}; export interface MuteConfig { end_time: number;