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;
|