diff --git a/util/src/entities/BaseClass.ts b/util/src/entities/BaseClass.ts
index 31338ff6..63ce5836 100644
--- a/util/src/entities/BaseClass.ts
+++ b/util/src/entities/BaseClass.ts
@@ -51,7 +51,8 @@ export class BaseClass extends BaseEntity {
if (setter) {
setter.call(this, props[key]);
} else {
- Object.defineProperty(this, key, { value: props[key] });
+ // @ts-ignore
+ this[key] = props[key];
}
}
}
diff --git a/util/src/entities/Emoji.ts b/util/src/entities/Emoji.ts
index 0686d476..4c0fccd3 100644
--- a/util/src/entities/Emoji.ts
+++ b/util/src/entities/Emoji.ts
@@ -15,7 +15,7 @@ export class Emoji extends BaseClass {
guild_id: string;
@JoinColumn({ name: "guild_id" })
- @ManyToOne(() => Guild, (guild: Guild) => guild.id)
+ @ManyToOne(() => Guild, (guild: Guild) => guild.emojis)
guild: Guild;
@Column()
diff --git a/util/src/entities/Guild.ts b/util/src/entities/Guild.ts
index e6a93824..3e7e8917 100644
--- a/util/src/entities/Guild.ts
+++ b/util/src/entities/Guild.ts
@@ -1,4 +1,4 @@
-import { Column, Entity, JoinColumn, ManyToMany, ManyToOne, OneToOne, RelationId } from "typeorm";
+import { Column, Entity, JoinColumn, ManyToMany, ManyToOne, OneToMany, OneToOne, RelationId } from "typeorm";
import { BaseClass } from "./BaseClass";
import { Channel } from "./Channel";
import { Emoji } from "./Emoji";
@@ -68,35 +68,35 @@ export class Guild extends BaseClass {
member_ids: string[];
@JoinColumn({ name: "member_ids" })
- @ManyToMany(() => Member, (member: Member) => member.id)
+ @OneToMany(() => Member, (member: Member) => member.guild)
members: Member[];
@RelationId((guild: Guild) => guild.roles)
role_ids: string[];
@JoinColumn({ name: "role_ids" })
- @ManyToMany(() => Role, (role: Role) => role.id)
+ @OneToMany(() => Role, (role: Role) => role.guild)
roles: Role[];
@RelationId((guild: Guild) => guild.channels)
channel_ids: string[];
@JoinColumn({ name: "channel_ids" })
- @ManyToMany(() => Channel, (channel: Channel) => channel.id)
+ @OneToMany(() => Channel, (channel: Channel) => channel.guild)
channels: Channel[];
@RelationId((guild: Guild) => guild.emojis)
emoji_ids: string[];
@JoinColumn({ name: "emoji_ids" })
- @ManyToMany(() => Emoji, (emoji: Emoji) => emoji.id)
+ @OneToMany(() => Emoji, (emoji: Emoji) => emoji.guild)
emojis: Emoji[];
@RelationId((guild: Guild) => guild.voice_states)
voice_state_ids: string[];
@JoinColumn({ name: "voice_state_ids" })
- @ManyToMany(() => VoiceState, (voicestate: VoiceState) => voicestate.id)
+ @OneToMany(() => VoiceState, (voicestate: VoiceState) => voicestate.guild)
voice_states: VoiceState[];
@Column({ nullable: true })
@@ -109,7 +109,7 @@ export class Guild extends BaseClass {
owner_id: string;
@JoinColumn({ name: "owner_id" })
- @ManyToOne(() => User, (user: User) => user.id)
+ @OneToOne(() => User)
owner: User;
@Column({ nullable: true })
@@ -125,14 +125,14 @@ export class Guild extends BaseClass {
public_updates_channel_id: string;
@JoinColumn({ name: "public_updates_channel_id" })
- @ManyToOne(() => Channel, (channel: Channel) => channel.id)
+ @OneToOne(() => Channel, (channel: Channel) => channel.id)
public_updates_channel?: Channel;
@RelationId((guild: Guild) => guild.rules_channel)
rules_channel_id?: string;
@JoinColumn({ name: "rules_channel_id" })
- @ManyToOne(() => Channel, (channel: Channel) => channel.id)
+ @OneToOne(() => Channel, (channel: Channel) => channel.id)
rules_channel?: string;
@Column({ nullable: true })
@@ -145,7 +145,7 @@ export class Guild extends BaseClass {
system_channel_id?: string;
@JoinColumn({ name: "system_channel_id" })
- @ManyToMany(() => Channel, (channel: Channel) => channel.id)
+ @OneToOne(() => Channel, (channel: Channel) => channel.id)
system_channel?: Channel;
@Column({ nullable: true })
@@ -158,7 +158,7 @@ export class Guild extends BaseClass {
vanity_url_code?: string;
@JoinColumn({ name: "vanity_url_code" })
- @ManyToOne(() => Invite)
+ @OneToOne(() => Invite)
vanity_url?: Invite;
@Column({ nullable: true })
@@ -180,7 +180,7 @@ export class Guild extends BaseClass {
widget_channel_id?: string;
@JoinColumn({ name: "widget_channel_id" })
- @ManyToOne(() => Channel, (channel: Channel) => channel.id)
+ @OneToOne(() => Channel, (channel: Channel) => channel.id)
widget_channel?: Channel;
@Column({ nullable: true })
diff --git a/util/src/entities/Member.ts b/util/src/entities/Member.ts
index 5b588d70..c5d289ef 100644
--- a/util/src/entities/Member.ts
+++ b/util/src/entities/Member.ts
@@ -1,6 +1,6 @@
import { PublicUser, User } from "./User";
import { BaseClass } from "./BaseClass";
-import { Column, Entity, JoinColumn, ManyToMany, ManyToOne, RelationId } from "typeorm";
+import { Column, Entity, JoinColumn, JoinTable, ManyToMany, ManyToOne, OneToMany, RelationId } from "typeorm";
import { Guild } from "./Guild";
import { Config, emitEvent } from "../util";
import {
@@ -26,7 +26,7 @@ export class Member extends BaseClass {
guild_id: string;
@JoinColumn({ name: "guild_id" })
- @ManyToOne(() => Guild, (guild: Guild) => guild.id)
+ @ManyToOne(() => Guild, (guild: Guild) => guild.members)
guild: Guild;
@Column({ nullable: true })
@@ -35,7 +35,7 @@ export class Member extends BaseClass {
@RelationId((member: Member) => member.roles)
role_ids: string[];
- @JoinColumn({ name: "role_ids" })
+ @JoinTable()
@ManyToMany(() => Role)
roles: Role[];
diff --git a/util/src/entities/Role.ts b/util/src/entities/Role.ts
index ddae7e40..be8c731d 100644
--- a/util/src/entities/Role.ts
+++ b/util/src/entities/Role.ts
@@ -27,8 +27,8 @@ export class Role extends BaseClass {
@Column()
name: string;
- @Column({ type: "bigint" })
- permissions: bigint;
+ @Column()
+ permissions: string;
@Column()
position: number;
diff --git a/util/src/util/Config.ts b/util/src/util/Config.ts
index f16921bd..508a8901 100644
--- a/util/src/util/Config.ts
+++ b/util/src/util/Config.ts
@@ -7,7 +7,8 @@ var config: ConfigEntity;
export const Config = {
init: async function init() {
if (config) return config;
- config = new ConfigEntity({}, { id: "0" });
+ config = (await ConfigEntity.findOne({ id: "0" })) || new ConfigEntity({}, { id: "0" });
+
return this.set((config.value || {}).merge(DefaultConfigOptions));
},
get: function get() {
diff --git a/util/src/util/Permissions.ts b/util/src/util/Permissions.ts
index 5082d8ea..ab6aa795 100644
--- a/util/src/util/Permissions.ts
+++ b/util/src/util/Permissions.ts
@@ -212,18 +212,15 @@ export async function getPermission(user_id?: string, guild_id?: string, channel
var guild: Guild | undefined;
if (channel_id) {
- channel = await Channel.findOneOrFail(
- { id: channel_id },
- { select: ["permission_overwrites", "recipients", "owner", "guild"] }
- );
+ channel = await Channel.findOneOrFail({ id: channel_id });
if (channel.guild_id) guild_id = channel.guild_id; // derive guild_id from the channel
}
if (guild_id) {
- guild = await Guild.findOneOrFail({ id: guild_id }, { select: ["owner"] });
+ guild = await Guild.findOneOrFail({ id: guild_id });
if (guild.owner_id === user_id) return new Permissions(Permissions.FLAGS.ADMINISTRATOR);
- member = await Member.findOneOrFail({ guild_id, id: user_id }, { select: ["roles"] });
+ member = await Member.findOneOrFail({ where: { guild_id, id: user_id }, relations: ["roles"] });
}
var permission = Permissions.finalPermission({
|