🚧 typeorm
This commit is contained in:
parent
eb6efd14c1
commit
584d4a039c
@ -40,7 +40,7 @@ router.post("/", check(RoleModifySchema), async (req: Request, res: Response) =>
|
|||||||
managed: false,
|
managed: false,
|
||||||
position: 0,
|
position: 0,
|
||||||
tags: null,
|
tags: null,
|
||||||
permissions: perms.bitfield & (body.permissions || 0n)
|
permissions: String(perms.bitfield & (body.permissions || 0n))
|
||||||
}).save();
|
}).save();
|
||||||
|
|
||||||
await emitEvent({
|
await emitEvent({
|
||||||
|
@ -17,7 +17,7 @@ const TemplateGuildProjection: (keyof Guild)[] = [
|
|||||||
"preferred_locale",
|
"preferred_locale",
|
||||||
"afk_timeout",
|
"afk_timeout",
|
||||||
"roles",
|
"roles",
|
||||||
"channels",
|
// "channels",
|
||||||
"afk_channel_id",
|
"afk_channel_id",
|
||||||
"system_channel_id",
|
"system_channel_id",
|
||||||
"system_channel_flags",
|
"system_channel_flags",
|
||||||
|
@ -19,63 +19,55 @@ router.post("/", check(GuildCreateSchema), async (req: Request, res: Response) =
|
|||||||
}
|
}
|
||||||
|
|
||||||
const guild_id = Snowflake.generate();
|
const guild_id = Snowflake.generate();
|
||||||
const guild = new Guild({
|
const guild = new Guild(
|
||||||
name: body.name,
|
{
|
||||||
region: Config.get().regions.default,
|
name: body.name,
|
||||||
owner_id: req.user_id,
|
region: Config.get().regions.default,
|
||||||
icon: undefined,
|
owner_id: req.user_id,
|
||||||
afk_channel_id: undefined,
|
afk_timeout: 300,
|
||||||
afk_timeout: 300,
|
default_message_notifications: 0,
|
||||||
application_id: undefined,
|
explicit_content_filter: 0,
|
||||||
banner: undefined,
|
features: [],
|
||||||
default_message_notifications: 0,
|
|
||||||
description: undefined,
|
|
||||||
splash: undefined,
|
|
||||||
discovery_splash: undefined,
|
|
||||||
explicit_content_filter: 0,
|
|
||||||
features: [],
|
|
||||||
id: guild_id,
|
|
||||||
large: undefined,
|
|
||||||
max_members: 250000,
|
|
||||||
max_presences: 250000,
|
|
||||||
max_video_channel_users: 25,
|
|
||||||
presence_count: 0,
|
|
||||||
member_count: 0, // will automatically be increased by addMember()
|
|
||||||
mfa_level: 0,
|
|
||||||
preferred_locale: "en-US",
|
|
||||||
premium_subscription_count: 0,
|
|
||||||
premium_tier: 0,
|
|
||||||
public_updates_channel_id: undefined,
|
|
||||||
rules_channel_id: undefined,
|
|
||||||
system_channel_flags: "0",
|
|
||||||
system_channel_id: undefined,
|
|
||||||
unavailable: false,
|
|
||||||
vanity_url_code: undefined,
|
|
||||||
verification_level: 0,
|
|
||||||
welcome_screen: {
|
|
||||||
enabled: false,
|
|
||||||
description: "No description",
|
|
||||||
welcome_channels: []
|
|
||||||
},
|
|
||||||
widget_channel_id: undefined,
|
|
||||||
widget_enabled: false
|
|
||||||
});
|
|
||||||
|
|
||||||
const [guild_doc, role] = await Promise.all([
|
|
||||||
new Guild(guild).save(),
|
|
||||||
new Role({
|
|
||||||
id: guild_id,
|
id: guild_id,
|
||||||
|
max_members: 250000,
|
||||||
|
max_presences: 250000,
|
||||||
|
max_video_channel_users: 25,
|
||||||
|
presence_count: 0,
|
||||||
|
member_count: 0, // will automatically be increased by addMember()
|
||||||
|
mfa_level: 0,
|
||||||
|
preferred_locale: "en-US",
|
||||||
|
premium_subscription_count: 0,
|
||||||
|
premium_tier: 0,
|
||||||
|
system_channel_flags: "0",
|
||||||
|
unavailable: false,
|
||||||
|
verification_level: 0,
|
||||||
|
welcome_screen: {
|
||||||
|
enabled: false,
|
||||||
|
description: "No description",
|
||||||
|
welcome_channels: []
|
||||||
|
},
|
||||||
|
widget_enabled: false
|
||||||
|
},
|
||||||
|
{ id: guild_id }
|
||||||
|
);
|
||||||
|
const role = new Role(
|
||||||
|
{
|
||||||
guild_id: guild_id,
|
guild_id: guild_id,
|
||||||
color: 0,
|
color: 0,
|
||||||
hoist: false,
|
hoist: false,
|
||||||
managed: false,
|
managed: false,
|
||||||
mentionable: false,
|
mentionable: false,
|
||||||
name: "@everyone",
|
name: "@everyone",
|
||||||
permissions: 2251804225n,
|
permissions: String("2251804225"),
|
||||||
position: 0,
|
position: 0,
|
||||||
tags: null
|
tags: null
|
||||||
}).save()
|
},
|
||||||
]);
|
{
|
||||||
|
id: guild_id
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
await Promise.all([guild.save(), role.save()]);
|
||||||
|
|
||||||
if (!body.channels || !body.channels.length) body.channels = [{ id: "01", type: 0, name: "general" }];
|
if (!body.channels || !body.channels.length) body.channels = [{ id: "01", type: 0, name: "general" }];
|
||||||
|
|
||||||
|
@ -51,7 +51,8 @@ export class BaseClass extends BaseEntity {
|
|||||||
if (setter) {
|
if (setter) {
|
||||||
setter.call(this, props[key]);
|
setter.call(this, props[key]);
|
||||||
} else {
|
} else {
|
||||||
Object.defineProperty(this, key, { value: props[key] });
|
// @ts-ignore
|
||||||
|
this[key] = props[key];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ export class Emoji extends BaseClass {
|
|||||||
guild_id: string;
|
guild_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "guild_id" })
|
@JoinColumn({ name: "guild_id" })
|
||||||
@ManyToOne(() => Guild, (guild: Guild) => guild.id)
|
@ManyToOne(() => Guild, (guild: Guild) => guild.emojis)
|
||||||
guild: Guild;
|
guild: Guild;
|
||||||
|
|
||||||
@Column()
|
@Column()
|
||||||
|
@ -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 { BaseClass } from "./BaseClass";
|
||||||
import { Channel } from "./Channel";
|
import { Channel } from "./Channel";
|
||||||
import { Emoji } from "./Emoji";
|
import { Emoji } from "./Emoji";
|
||||||
@ -68,35 +68,35 @@ export class Guild extends BaseClass {
|
|||||||
member_ids: string[];
|
member_ids: string[];
|
||||||
|
|
||||||
@JoinColumn({ name: "member_ids" })
|
@JoinColumn({ name: "member_ids" })
|
||||||
@ManyToMany(() => Member, (member: Member) => member.id)
|
@OneToMany(() => Member, (member: Member) => member.guild)
|
||||||
members: Member[];
|
members: Member[];
|
||||||
|
|
||||||
@RelationId((guild: Guild) => guild.roles)
|
@RelationId((guild: Guild) => guild.roles)
|
||||||
role_ids: string[];
|
role_ids: string[];
|
||||||
|
|
||||||
@JoinColumn({ name: "role_ids" })
|
@JoinColumn({ name: "role_ids" })
|
||||||
@ManyToMany(() => Role, (role: Role) => role.id)
|
@OneToMany(() => Role, (role: Role) => role.guild)
|
||||||
roles: Role[];
|
roles: Role[];
|
||||||
|
|
||||||
@RelationId((guild: Guild) => guild.channels)
|
@RelationId((guild: Guild) => guild.channels)
|
||||||
channel_ids: string[];
|
channel_ids: string[];
|
||||||
|
|
||||||
@JoinColumn({ name: "channel_ids" })
|
@JoinColumn({ name: "channel_ids" })
|
||||||
@ManyToMany(() => Channel, (channel: Channel) => channel.id)
|
@OneToMany(() => Channel, (channel: Channel) => channel.guild)
|
||||||
channels: Channel[];
|
channels: Channel[];
|
||||||
|
|
||||||
@RelationId((guild: Guild) => guild.emojis)
|
@RelationId((guild: Guild) => guild.emojis)
|
||||||
emoji_ids: string[];
|
emoji_ids: string[];
|
||||||
|
|
||||||
@JoinColumn({ name: "emoji_ids" })
|
@JoinColumn({ name: "emoji_ids" })
|
||||||
@ManyToMany(() => Emoji, (emoji: Emoji) => emoji.id)
|
@OneToMany(() => Emoji, (emoji: Emoji) => emoji.guild)
|
||||||
emojis: Emoji[];
|
emojis: Emoji[];
|
||||||
|
|
||||||
@RelationId((guild: Guild) => guild.voice_states)
|
@RelationId((guild: Guild) => guild.voice_states)
|
||||||
voice_state_ids: string[];
|
voice_state_ids: string[];
|
||||||
|
|
||||||
@JoinColumn({ name: "voice_state_ids" })
|
@JoinColumn({ name: "voice_state_ids" })
|
||||||
@ManyToMany(() => VoiceState, (voicestate: VoiceState) => voicestate.id)
|
@OneToMany(() => VoiceState, (voicestate: VoiceState) => voicestate.guild)
|
||||||
voice_states: VoiceState[];
|
voice_states: VoiceState[];
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -109,7 +109,7 @@ export class Guild extends BaseClass {
|
|||||||
owner_id: string;
|
owner_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "owner_id" })
|
@JoinColumn({ name: "owner_id" })
|
||||||
@ManyToOne(() => User, (user: User) => user.id)
|
@OneToOne(() => User)
|
||||||
owner: User;
|
owner: User;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -125,14 +125,14 @@ export class Guild extends BaseClass {
|
|||||||
public_updates_channel_id: string;
|
public_updates_channel_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "public_updates_channel_id" })
|
@JoinColumn({ name: "public_updates_channel_id" })
|
||||||
@ManyToOne(() => Channel, (channel: Channel) => channel.id)
|
@OneToOne(() => Channel, (channel: Channel) => channel.id)
|
||||||
public_updates_channel?: Channel;
|
public_updates_channel?: Channel;
|
||||||
|
|
||||||
@RelationId((guild: Guild) => guild.rules_channel)
|
@RelationId((guild: Guild) => guild.rules_channel)
|
||||||
rules_channel_id?: string;
|
rules_channel_id?: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "rules_channel_id" })
|
@JoinColumn({ name: "rules_channel_id" })
|
||||||
@ManyToOne(() => Channel, (channel: Channel) => channel.id)
|
@OneToOne(() => Channel, (channel: Channel) => channel.id)
|
||||||
rules_channel?: string;
|
rules_channel?: string;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -145,7 +145,7 @@ export class Guild extends BaseClass {
|
|||||||
system_channel_id?: string;
|
system_channel_id?: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "system_channel_id" })
|
@JoinColumn({ name: "system_channel_id" })
|
||||||
@ManyToMany(() => Channel, (channel: Channel) => channel.id)
|
@OneToOne(() => Channel, (channel: Channel) => channel.id)
|
||||||
system_channel?: Channel;
|
system_channel?: Channel;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -158,7 +158,7 @@ export class Guild extends BaseClass {
|
|||||||
vanity_url_code?: string;
|
vanity_url_code?: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "vanity_url_code" })
|
@JoinColumn({ name: "vanity_url_code" })
|
||||||
@ManyToOne(() => Invite)
|
@OneToOne(() => Invite)
|
||||||
vanity_url?: Invite;
|
vanity_url?: Invite;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -180,7 +180,7 @@ export class Guild extends BaseClass {
|
|||||||
widget_channel_id?: string;
|
widget_channel_id?: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "widget_channel_id" })
|
@JoinColumn({ name: "widget_channel_id" })
|
||||||
@ManyToOne(() => Channel, (channel: Channel) => channel.id)
|
@OneToOne(() => Channel, (channel: Channel) => channel.id)
|
||||||
widget_channel?: Channel;
|
widget_channel?: Channel;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { PublicUser, User } from "./User";
|
import { PublicUser, User } from "./User";
|
||||||
import { BaseClass } from "./BaseClass";
|
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 { Guild } from "./Guild";
|
||||||
import { Config, emitEvent } from "../util";
|
import { Config, emitEvent } from "../util";
|
||||||
import {
|
import {
|
||||||
@ -26,7 +26,7 @@ export class Member extends BaseClass {
|
|||||||
guild_id: string;
|
guild_id: string;
|
||||||
|
|
||||||
@JoinColumn({ name: "guild_id" })
|
@JoinColumn({ name: "guild_id" })
|
||||||
@ManyToOne(() => Guild, (guild: Guild) => guild.id)
|
@ManyToOne(() => Guild, (guild: Guild) => guild.members)
|
||||||
guild: Guild;
|
guild: Guild;
|
||||||
|
|
||||||
@Column({ nullable: true })
|
@Column({ nullable: true })
|
||||||
@ -35,7 +35,7 @@ export class Member extends BaseClass {
|
|||||||
@RelationId((member: Member) => member.roles)
|
@RelationId((member: Member) => member.roles)
|
||||||
role_ids: string[];
|
role_ids: string[];
|
||||||
|
|
||||||
@JoinColumn({ name: "role_ids" })
|
@JoinTable()
|
||||||
@ManyToMany(() => Role)
|
@ManyToMany(() => Role)
|
||||||
roles: Role[];
|
roles: Role[];
|
||||||
|
|
||||||
|
@ -27,8 +27,8 @@ export class Role extends BaseClass {
|
|||||||
@Column()
|
@Column()
|
||||||
name: string;
|
name: string;
|
||||||
|
|
||||||
@Column({ type: "bigint" })
|
@Column()
|
||||||
permissions: bigint;
|
permissions: string;
|
||||||
|
|
||||||
@Column()
|
@Column()
|
||||||
position: number;
|
position: number;
|
||||||
|
@ -7,7 +7,8 @@ var config: ConfigEntity;
|
|||||||
export const Config = {
|
export const Config = {
|
||||||
init: async function init() {
|
init: async function init() {
|
||||||
if (config) return config;
|
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));
|
return this.set((config.value || {}).merge(DefaultConfigOptions));
|
||||||
},
|
},
|
||||||
get: function get() {
|
get: function get() {
|
||||||
|
@ -212,18 +212,15 @@ export async function getPermission(user_id?: string, guild_id?: string, channel
|
|||||||
var guild: Guild | undefined;
|
var guild: Guild | undefined;
|
||||||
|
|
||||||
if (channel_id) {
|
if (channel_id) {
|
||||||
channel = await Channel.findOneOrFail(
|
channel = await Channel.findOneOrFail({ id: channel_id });
|
||||||
{ id: channel_id },
|
|
||||||
{ select: ["permission_overwrites", "recipients", "owner", "guild"] }
|
|
||||||
);
|
|
||||||
if (channel.guild_id) guild_id = channel.guild_id; // derive guild_id from the channel
|
if (channel.guild_id) guild_id = channel.guild_id; // derive guild_id from the channel
|
||||||
}
|
}
|
||||||
|
|
||||||
if (guild_id) {
|
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);
|
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({
|
var permission = Permissions.finalPermission({
|
||||||
|
Loading…
x
Reference in New Issue
Block a user