diff --git a/util/src/entities/Invite.ts b/src/util/entities/Invite.ts
index 6ac64ddc..f6ba85d7 100644
--- a/util/src/entities/Invite.ts
+++ b/src/util/entities/Invite.ts
@@ -1,8 +1,9 @@
-import { Column, Entity, JoinColumn, ManyToOne, RelationId, PrimaryColumn } from "typeorm";
-import { Member } from "./Member";
+import { random } from "@fosscord/api";
+import { Column, Entity, JoinColumn, ManyToOne, PrimaryColumn, RelationId } from "typeorm";
import { BaseClassWithoutId } from "./BaseClass";
import { Channel } from "./Channel";
import { Guild } from "./Guild";
+import { Member } from "./Member";
import { User } from "./User";
export const PublicInviteRelation = ["inviter", "guild", "channel"];
@@ -10,13 +11,13 @@ export const PublicInviteRelation = ["inviter", "guild", "channel"];
@Entity("invites")
export class Invite extends BaseClassWithoutId {
@PrimaryColumn()
- code: string;
+ code: string = random();
@Column()
- temporary: boolean;
+ temporary: boolean = true;
@Column()
- uses: number;
+ uses: number = 0;
@Column()
max_uses: number;
@@ -25,7 +26,7 @@ export class Invite extends BaseClassWithoutId {
max_age: number;
@Column()
- created_at: Date;
+ created_at: Date = new Date();
@Column()
expires_at: Date;
@@ -36,7 +37,7 @@ export class Invite extends BaseClassWithoutId {
@JoinColumn({ name: "guild_id" })
@ManyToOne(() => Guild, {
- onDelete: "CASCADE",
+ onDelete: "CASCADE"
})
guild: Guild;
@@ -46,7 +47,7 @@ export class Invite extends BaseClassWithoutId {
@JoinColumn({ name: "channel_id" })
@ManyToOne(() => Channel, {
- onDelete: "CASCADE",
+ onDelete: "CASCADE"
})
channel: Channel;
@@ -55,7 +56,9 @@ export class Invite extends BaseClassWithoutId {
inviter_id: string;
@JoinColumn({ name: "inviter_id" })
- @ManyToOne(() => User)
+ @ManyToOne(() => User, {
+ onDelete: "CASCADE"
+ })
inviter: User;
@Column({ nullable: true })
@@ -64,7 +67,7 @@ export class Invite extends BaseClassWithoutId {
@JoinColumn({ name: "target_user_id" })
@ManyToOne(() => User, {
- onDelete: "CASCADE",
+ onDelete: "CASCADE"
})
target_user?: string; // could be used for "User specific invites" https://github.com/fosscord/fosscord/issues/62
@@ -75,7 +78,7 @@ export class Invite extends BaseClassWithoutId {
vanity_url?: boolean;
static async joinGuild(user_id: string, code: string) {
- const invite = await Invite.findOneOrFail({ code });
+ const invite = await Invite.findOneOrFail({ where: { code } });
if (invite.uses++ >= invite.max_uses && invite.max_uses !== 0) await Invite.delete({ code });
else await invite.save();
|