diff --git a/src/util/entities/Application.ts b/src/util/entities/Application.ts
index 86142a82..f80535d2 100644
--- a/src/util/entities/Application.ts
+++ b/src/util/entities/Application.ts
@@ -18,9 +18,9 @@
import { Column, Entity, JoinColumn, ManyToOne, OneToOne, RelationId } from "typeorm";
import { BaseClass } from "./BaseClass";
-import { Team } from "./Team";
-import { User } from "./User";
-import { Guild } from "./Guild";
+import type { Guild } from "./Guild";
+import type { Team } from "./Team";
+import type { User } from "./User";
@Entity({
name: "applications",
diff --git a/src/util/entities/ApplicationCommand.ts b/src/util/entities/ApplicationCommand.ts
index 21153d89..273e31b0 100644
--- a/src/util/entities/ApplicationCommand.ts
+++ b/src/util/entities/ApplicationCommand.ts
@@ -17,7 +17,6 @@
*/
import { Column, Entity } from "typeorm";
-import { BaseClass } from "./BaseClass";
import {
ApplicationCommandHandlerType,
ApplicationCommandOption,
@@ -27,6 +26,7 @@ import {
ApplicationIntegrationType,
InteractionContextType,
} from "@spacebar/schemas";
+import { BaseClass } from "./BaseClass";
@Entity({
name: "application_commands",
diff --git a/src/util/entities/Attachment.ts b/src/util/entities/Attachment.ts
index 4dced10a..97ff151a 100644
--- a/src/util/entities/Attachment.ts
+++ b/src/util/entities/Attachment.ts
@@ -18,8 +18,9 @@
import { BeforeRemove, Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
import { deleteFile } from "../util";
-import { BaseClass } from "./BaseClass";
import { getUrlSignature, NewUrlUserSignatureData, NewUrlSignatureData } from "../Signing";
+import { BaseClass } from "./BaseClass";
+import type { Message } from "./Message";
@Entity({
name: "attachments",
@@ -51,10 +52,10 @@ export class Attachment extends BaseClass {
message_id: string;
@JoinColumn({ name: "message_id" })
- @ManyToOne(() => require("./Message").Message, (message: import("./Message").Message) => message.attachments, {
+ @ManyToOne(() => require("./Message").Message, (message: Message) => message.attachments, {
onDelete: "CASCADE",
})
- message: import("./Message").Message;
+ message: Message;
@BeforeRemove()
onDelete() {
diff --git a/src/util/entities/AuditLog.ts b/src/util/entities/AuditLog.ts
index 18b847bc..6c92b68d 100644
--- a/src/util/entities/AuditLog.ts
+++ b/src/util/entities/AuditLog.ts
@@ -17,9 +17,9 @@
*/
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
-import { BaseClass } from "./BaseClass";
-import { User } from "./User";
import { AuditLogChange, AuditLogEvents } from "@spacebar/schemas";
+import { BaseClass } from "./BaseClass";
+import type { User } from "./User";
@Entity({
name: "audit_logs",
diff --git a/src/util/entities/AutomodRule.ts b/src/util/entities/AutomodRule.ts
index 5eedf197..b46b2023 100644
--- a/src/util/entities/AutomodRule.ts
+++ b/src/util/entities/AutomodRule.ts
@@ -16,10 +16,10 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-import { BaseClass } from "./BaseClass";
import { Entity, JoinColumn, ManyToOne, Column } from "typeorm";
-import { User } from "./User";
import { AutomodAction, AutomodRuleEventType, AutomodRuleTriggerMetadata, AutomodRuleTriggerType } from "@spacebar/schemas";
+import { BaseClass } from "./BaseClass";
+import type { User } from "./User";
@Entity({
name: "automod_rules",
diff --git a/src/util/entities/BackupCodes.ts b/src/util/entities/BackupCodes.ts
index 124c865e..51175657 100644
--- a/src/util/entities/BackupCodes.ts
+++ b/src/util/entities/BackupCodes.ts
@@ -17,10 +17,10 @@
*/
import { Column, Entity, JoinColumn, ManyToOne } from "typeorm";
-import { BaseClass } from "./BaseClass";
-import { User } from "./User";
import crypto from "crypto";
import { Config } from "../util";
+import { BaseClass } from "./BaseClass";
+import type { User } from "./User";
@Entity({
name: "backup_codes",
diff --git a/src/util/entities/Ban.ts b/src/util/entities/Ban.ts
index 0697ba70..a61bdcbe 100644
--- a/src/util/entities/Ban.ts
+++ b/src/util/entities/Ban.ts
@@ -18,8 +18,8 @@
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
import { BaseClass } from "./BaseClass";
-import { Guild } from "./Guild";
-import { User } from "./User";
+import type { Guild } from "./Guild";
+import type { User } from "./User";
@Entity({
name: "bans",
diff --git a/src/util/entities/Channel.ts b/src/util/entities/Channel.ts
index 59195dc3..c03c1c6f 100644
--- a/src/util/entities/Channel.ts
+++ b/src/util/entities/Channel.ts
@@ -21,19 +21,19 @@ import { Column, Entity, JoinColumn, ManyToOne, OneToMany, RelationId } from "ty
import { DmChannelDTO } from "../dtos";
import { ChannelCreateEvent, ChannelRecipientRemoveEvent, ThreadCreateEvent, ThreadMembersUpdateEvent } from "../interfaces";
import { InvisibleCharacters, Snowflake, emitEvent, getPermission, trimSpecial, Permissions, Config, DiscordApiErrors } from "../util";
+import { ChannelPermissionOverwrite, ChannelType, PublicUserProjection, ThreadMetadata } from "@spacebar/schemas";
+import { OrmUtils } from "../imports";
import { BaseClass } from "./BaseClass";
import { Guild } from "./Guild";
-import { Invite } from "./Invite";
-import { Message } from "./Message";
-import { Tag } from "./Tag";
-import { ReadState } from "./ReadState";
+import type { Invite } from "./Invite";
+import type { Message } from "./Message";
+import type { Tag } from "./Tag";
+import type { ReadState } from "./ReadState";
import { Recipient } from "./Recipient";
import { User } from "./User";
-import { VoiceState } from "./VoiceState";
-import { Webhook } from "./Webhook";
+import type { VoiceState } from "./VoiceState";
+import type { Webhook } from "./Webhook";
import { Member } from "./Member";
-import { ChannelPermissionOverwrite, ChannelType, PublicUserProjection, ThreadMetadata } from "@spacebar/schemas";
-import { OrmUtils } from "../imports";
import { ThreadMember } from "./ThreadMember";
@Entity({
diff --git a/src/util/entities/CloudAttachment.ts b/src/util/entities/CloudAttachment.ts
index 802e0166..57d2b790 100644
--- a/src/util/entities/CloudAttachment.ts
+++ b/src/util/entities/CloudAttachment.ts
@@ -18,8 +18,8 @@
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
import { BaseClass } from "./BaseClass";
-import { User } from "./User";
-import { Channel } from "./Channel";
+import type { User } from "./User";
+import type { Channel } from "./Channel";
@Entity({
name: "cloud_attachments",
diff --git a/src/util/entities/ConnectedAccount.ts b/src/util/entities/ConnectedAccount.ts
index 5e917615..08bf24b9 100644
--- a/src/util/entities/ConnectedAccount.ts
+++ b/src/util/entities/ConnectedAccount.ts
@@ -17,9 +17,9 @@
*/
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
-import { BaseClass } from "./BaseClass";
-import { User } from "./User";
import { ConnectedAccountTokenData } from "@spacebar/schemas";
+import { BaseClass } from "./BaseClass";
+import type { User } from "./User";
@Entity({
name: "connected_accounts",
diff --git a/src/util/entities/EmbedCache.ts b/src/util/entities/EmbedCache.ts
index db1fbba6..5e792e5c 100644
--- a/src/util/entities/EmbedCache.ts
+++ b/src/util/entities/EmbedCache.ts
@@ -16,9 +16,9 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-import { BaseClass } from "./BaseClass";
import { Entity, Column } from "typeorm";
import { Embed } from "@spacebar/schemas";
+import { BaseClass } from "./BaseClass";
@Entity({
name: "embed_cache",
diff --git a/src/util/entities/Emoji.ts b/src/util/entities/Emoji.ts
index 8f598a50..43149941 100644
--- a/src/util/entities/Emoji.ts
+++ b/src/util/entities/Emoji.ts
@@ -17,9 +17,9 @@
*/
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
-import { User } from "./User";
import { BaseClass } from "./BaseClass";
-import { Guild } from "./Guild";
+import type { User } from "./User";
+import type { Guild } from "./Guild";
@Entity({
name: "emojis",
diff --git a/src/util/entities/Guild.ts b/src/util/entities/Guild.ts
index 6ab0f110..5a6e7ea6 100644
--- a/src/util/entities/Guild.ts
+++ b/src/util/entities/Guild.ts
@@ -18,19 +18,19 @@
import { Column, Entity, JoinColumn, ManyToOne, OneToMany, RelationId } from "typeorm";
import { Config, GuildWelcomeScreen, Snowflake, handleFile } from "..";
-import { Ban } from "./Ban";
+import { arrayRemove } from "@spacebar/util";
import { BaseClass } from "./BaseClass";
+import type { Ban } from "./Ban";
import { Channel } from "./Channel";
-import { Emoji } from "./Emoji";
-import { Invite } from "./Invite";
+import type { Emoji } from "./Emoji";
+import type { Invite } from "./Invite";
import { Member } from "./Member";
import { Role } from "./Role";
-import { Sticker } from "./Sticker";
-import { Template } from "./Template";
-import { User } from "./User";
-import { VoiceState } from "./VoiceState";
-import { Webhook } from "./Webhook";
-import { arrayRemove } from "@spacebar/util";
+import type { Sticker } from "./Sticker";
+import type { Template } from "./Template";
+import type { User } from "./User";
+import type { VoiceState } from "./VoiceState";
+import type { Webhook } from "./Webhook";
// TODO: application_command_count, application_command_counts: {1: 0, 2: 0, 3: 0}
// TODO: guild_scheduled_events
// TODO: stage_instances
diff --git a/src/util/entities/Invite.ts b/src/util/entities/Invite.ts
index b9195a64..533d2df2 100644
--- a/src/util/entities/Invite.ts
+++ b/src/util/entities/Invite.ts
@@ -18,10 +18,10 @@
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
import { BaseClassWithoutId, PrimaryIdColumn } from "./BaseClass";
-import { Channel } from "./Channel";
-import { Guild } from "./Guild";
+import type { Channel } from "./Channel";
+import type { Guild } from "./Guild";
import { Member } from "./Member";
-import { User } from "./User";
+import type { User } from "./User";
export const PublicInviteRelation = ["inviter", "guild", "channel"];
diff --git a/src/util/entities/Member.ts b/src/util/entities/Member.ts
index 45c4fbe8..48e2b4c0 100644
--- a/src/util/entities/Member.ts
+++ b/src/util/entities/Member.ts
@@ -21,14 +21,14 @@ import { BeforeInsert, BeforeUpdate, Column, Entity, Index, JoinColumn, JoinTabl
import { ReadyGuildDTO } from "../dtos";
import { GuildCreateEvent, GuildDeleteEvent, GuildMemberAddEvent, GuildMemberRemoveEvent, GuildMemberUpdateEvent, MessageCreateEvent } from "../interfaces";
import { Config, emitEvent, DiscordApiErrors } from "../util";
-import { Ban } from "./Ban";
+import { AvatarDecorationData, Collectibles, DisplayNameStyle, PublicMember, PublicMemberProjection, UserGuildSettings } from "@spacebar/schemas";
import { BaseClassWithoutId } from "./BaseClass";
+import { Ban } from "./Ban";
import { Channel } from "./Channel";
import { Guild, PublicGuildRelations } from "./Guild";
import { Message } from "./Message";
import { Role } from "./Role";
import { User } from "./User";
-import { AvatarDecorationData, Collectibles, DisplayNameStyle, PublicMember, PublicMemberProjection, UserGuildSettings } from "@spacebar/schemas";
export const MemberPrivateProjection: (keyof Member)[] = [
"id",
diff --git a/src/util/entities/Message.ts b/src/util/entities/Message.ts
index 66a3dfe5..5e342777 100644
--- a/src/util/entities/Message.ts
+++ b/src/util/entities/Message.ts
@@ -16,22 +16,22 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-import { User } from "./User";
-import { Member } from "./Member";
-import { Role } from "./Role";
-import { Channel } from "./Channel";
-import { InteractionType } from "../interfaces";
-import { Application } from "./Application";
import { Column, CreateDateColumn, Entity, Index, JoinColumn, JoinTable, ManyToMany, ManyToOne, OneToMany, RelationId, FindOneOptions, Raw, Not, BaseEntity, In } from "typeorm";
-import { BaseClass } from "./BaseClass";
-import { Guild } from "./Guild";
-import { Webhook } from "./Webhook";
-import { Sticker } from "./Sticker";
-import { Attachment } from "./Attachment";
import { NewUrlUserSignatureData } from "../Signing";
import { ActionRowComponent, ApplicationCommandType, Embed, MessageSnapshot, MessageType, PartialMessage, Poll, Reaction } from "@spacebar/schemas";
import { MessageFlags } from "@spacebar/util";
import { JsonRemoveEmpty } from "../util/Decorators";
+import { InteractionType } from "../interfaces";
+import { BaseClass } from "./BaseClass";
+import { User } from "./User";
+import { Member } from "./Member";
+import type { Role } from "./Role";
+import { Channel } from "./Channel";
+import type { Application } from "./Application";
+import { Guild } from "./Guild";
+import type { Webhook } from "./Webhook";
+import type { Sticker } from "./Sticker";
+import { Attachment } from "./Attachment";
@Entity({
name: "messages",
diff --git a/src/util/entities/Note.ts b/src/util/entities/Note.ts
index 0e4969e0..360d7860 100644
--- a/src/util/entities/Note.ts
+++ b/src/util/entities/Note.ts
@@ -18,7 +18,7 @@
import { Column, Entity, JoinColumn, ManyToOne, Unique } from "typeorm";
import { BaseClass } from "./BaseClass";
-import { User } from "./User";
+import type { User } from "./User";
@Entity({
name: "notes",
diff --git a/src/util/entities/ReadState.ts b/src/util/entities/ReadState.ts
index a3cee7ed..c929d4c6 100644
--- a/src/util/entities/ReadState.ts
+++ b/src/util/entities/ReadState.ts
@@ -17,10 +17,10 @@
*/
import { Column, Entity, Index, JoinColumn, ManyToOne, RelationId } from "typeorm";
-import { BaseClass } from "./BaseClass";
-import { Channel } from "./Channel";
-import { User } from "./User";
import { ReadStateFlags, ReadStateType } from "@spacebar/schemas";
+import { BaseClass } from "./BaseClass";
+import type { Channel } from "./Channel";
+import type { User } from "./User";
// for read receipts
// notification cursor and public read receipt need to be forwards-only (the former to prevent re-pinging when marked as unread, and the latter to be acceptable as a legal acknowledgement in criminal proceedings), and private read marker needs to be advance-rewind capable
diff --git a/src/util/entities/Recipient.ts b/src/util/entities/Recipient.ts
index 2dcff244..73664647 100644
--- a/src/util/entities/Recipient.ts
+++ b/src/util/entities/Recipient.ts
@@ -18,6 +18,8 @@
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
import { BaseClass } from "./BaseClass";
+import type { Channel } from "./Channel";
+import type { User } from "./User";
@Entity({
name: "recipients",
@@ -31,7 +33,7 @@ export class Recipient extends BaseClass {
@ManyToOne(() => require("./Channel").Channel, {
onDelete: "CASCADE",
})
- channel: import("./Channel").Channel;
+ channel: Channel;
@Column()
@RelationId((recipient: Recipient) => recipient.user)
@@ -41,7 +43,7 @@ export class Recipient extends BaseClass {
@ManyToOne(() => require("./User").User, {
onDelete: "CASCADE",
})
- user: import("./User").User;
+ user: User;
@Column({ default: false })
closed: boolean;
diff --git a/src/util/entities/Relationship.ts b/src/util/entities/Relationship.ts
index 60321e4f..2f26a5b2 100644
--- a/src/util/entities/Relationship.ts
+++ b/src/util/entities/Relationship.ts
@@ -17,9 +17,9 @@
*/
import { Column, Entity, Index, JoinColumn, ManyToOne, RelationId } from "typeorm";
-import { BaseClass } from "./BaseClass";
-import { User } from "./User";
import { RelationshipType } from "@spacebar/schemas";
+import { BaseClass } from "./BaseClass";
+import type { User } from "./User";
@Entity({
name: "relationships",
diff --git a/src/util/entities/ReportMenu.ts b/src/util/entities/ReportMenu.ts
index 4f565640..059405a5 100644
--- a/src/util/entities/ReportMenu.ts
+++ b/src/util/entities/ReportMenu.ts
@@ -16,9 +16,9 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-import { BaseClass } from "./BaseClass";
import { Entity, Column } from "typeorm";
import { ReportMenuType } from "@spacebar/schemas";
+import { BaseClass } from "./BaseClass";
@Entity({
name: "report_menus",
diff --git a/src/util/entities/Role.ts b/src/util/entities/Role.ts
index 6daeef54..e0dd1e04 100644
--- a/src/util/entities/Role.ts
+++ b/src/util/entities/Role.ts
@@ -18,9 +18,9 @@
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
-import { BaseClass } from "./BaseClass";
-import { Guild } from "./Guild";
import { RoleColors } from "@spacebar/schemas";
+import { BaseClass } from "./BaseClass";
+import type { Guild } from "./Guild";
@Entity({
name: "roles",
diff --git a/src/util/entities/SecurityKey.ts b/src/util/entities/SecurityKey.ts
index 3f8df973..43958911 100644
--- a/src/util/entities/SecurityKey.ts
+++ b/src/util/entities/SecurityKey.ts
@@ -18,7 +18,7 @@
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
import { BaseClass } from "./BaseClass";
-import { User } from "./User";
+import type { User } from "./User";
@Entity({
name: "security_keys",
diff --git a/src/util/entities/Session.ts b/src/util/entities/Session.ts
index d55ab3bd..e2107745 100644
--- a/src/util/entities/Session.ts
+++ b/src/util/entities/Session.ts
@@ -17,12 +17,12 @@
*/
import crypto from "crypto";
-import { User } from "./User";
-import { BaseClassWithoutId } from "./BaseClass";
import { Column, CreateDateColumn, Entity, Index, JoinColumn, ManyToOne, PrimaryColumn, RelationId } from "typeorm";
import { Activity, ClientStatus, GatewaySession, GatewaySessionClientInfo, Status } from "../interfaces";
import { randomUpperString } from "@spacebar/api";
import { DateBuilder, IpDataClient, TimeSpan } from "../util";
+import { BaseClassWithoutId } from "./BaseClass";
+import type { User } from "./User";
@Entity({
name: "sessions",
diff --git a/src/util/entities/Sticker.ts b/src/util/entities/Sticker.ts
index 6a887cb0..3035525f 100644
--- a/src/util/entities/Sticker.ts
+++ b/src/util/entities/Sticker.ts
@@ -17,10 +17,11 @@
*/
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
-import { BaseClass } from "./BaseClass";
-import { Guild } from "./Guild";
-import { User } from "./User";
import { StickerFormatType, StickerType } from "@spacebar/schemas";
+import { BaseClass } from "./BaseClass";
+import type { Guild } from "./Guild";
+import type { User } from "./User";
+import type { StickerPack } from "./StickerPack";
@Entity({
name: "stickers",
@@ -47,7 +48,7 @@ export class Sticker extends BaseClass {
onDelete: "CASCADE",
nullable: true,
})
- pack: import("./StickerPack").StickerPack;
+ pack: StickerPack;
@Column({ nullable: true })
guild_id?: string;
diff --git a/src/util/entities/StickerPack.ts b/src/util/entities/StickerPack.ts
index 4ac364b4..f6b491d9 100644
--- a/src/util/entities/StickerPack.ts
+++ b/src/util/entities/StickerPack.ts
@@ -17,8 +17,8 @@
*/
import { Column, Entity, JoinColumn, ManyToOne, OneToMany, RelationId } from "typeorm";
-import { Sticker } from "./Sticker";
import { BaseClass } from "./BaseClass";
+import type { Sticker } from "./Sticker";
@Entity({
name: "sticker_packs",
diff --git a/src/util/entities/Stream.ts b/src/util/entities/Stream.ts
index 0b98df1e..54f33126 100644
--- a/src/util/entities/Stream.ts
+++ b/src/util/entities/Stream.ts
@@ -1,7 +1,7 @@
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
import { BaseClass } from "./BaseClass";
-import { User } from "./User";
-import { Channel } from "./Channel";
+import type { User } from "./User";
+import type { Channel } from "./Channel";
@Entity({
name: "streams",
diff --git a/src/util/entities/StreamSession.ts b/src/util/entities/StreamSession.ts
index d0a3a64b..a4db1bb8 100644
--- a/src/util/entities/StreamSession.ts
+++ b/src/util/entities/StreamSession.ts
@@ -1,7 +1,7 @@
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
import { BaseClass } from "./BaseClass";
-import { User } from "./User";
-import { Stream } from "./Stream";
+import type { User } from "./User";
+import type { Stream } from "./Stream";
@Entity({
name: "stream_sessions",
diff --git a/src/util/entities/Tag.ts b/src/util/entities/Tag.ts
index ab60d665..1f4c4ec7 100644
--- a/src/util/entities/Tag.ts
+++ b/src/util/entities/Tag.ts
@@ -18,7 +18,7 @@
import { Column, Entity, JoinColumn, ManyToOne } from "typeorm";
import { BaseClass } from "./BaseClass";
-import { Channel } from "./Channel";
+import type { Channel } from "./Channel";
@Entity({
name: "tags",
diff --git a/src/util/entities/Team.ts b/src/util/entities/Team.ts
index 12ea042e..e4c48190 100644
--- a/src/util/entities/Team.ts
+++ b/src/util/entities/Team.ts
@@ -18,8 +18,8 @@
import { Column, Entity, JoinColumn, ManyToOne, OneToMany, RelationId } from "typeorm";
import { BaseClass } from "./BaseClass";
-import { TeamMember } from "./TeamMember";
-import { User } from "./User";
+import type { TeamMember } from "./TeamMember";
+import type { User } from "./User";
@Entity({
name: "teams",
diff --git a/src/util/entities/TeamMember.ts b/src/util/entities/TeamMember.ts
index 33611652..cda62fb7 100644
--- a/src/util/entities/TeamMember.ts
+++ b/src/util/entities/TeamMember.ts
@@ -17,9 +17,10 @@
*/
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
-import { BaseClass } from "./BaseClass";
-import { User } from "./User";
import { TeamMemberRole, TeamMemberState } from "@spacebar/schemas";
+import { BaseClass } from "./BaseClass";
+import type { User } from "./User";
+import type { Team } from "./Team";
@Entity({
name: "team_members",
@@ -39,10 +40,10 @@ export class TeamMember extends BaseClass {
team_id: string;
@JoinColumn({ name: "team_id" })
- @ManyToOne(() => require("./Team").Team, (team: import("./Team").Team) => team.members, {
+ @ManyToOne(() => require("./Team").Team, (team: Team) => team.members, {
onDelete: "CASCADE",
})
- team: import("./Team").Team;
+ team: Team;
@Column({ nullable: true })
@RelationId((member: TeamMember) => member.user)
diff --git a/src/util/entities/Template.ts b/src/util/entities/Template.ts
index efc35545..d294760b 100644
--- a/src/util/entities/Template.ts
+++ b/src/util/entities/Template.ts
@@ -18,8 +18,8 @@
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
import { BaseClass } from "./BaseClass";
-import { Guild } from "./Guild";
-import { User } from "./User";
+import type { Guild } from "./Guild";
+import type { User } from "./User";
@Entity({
name: "templates",
diff --git a/src/util/entities/ThreadMember.ts b/src/util/entities/ThreadMember.ts
index 862ab26e..a21ae9a8 100644
--- a/src/util/entities/ThreadMember.ts
+++ b/src/util/entities/ThreadMember.ts
@@ -17,12 +17,12 @@
*/
import { Column, Entity, Index, JoinColumn, ManyToOne, PrimaryGeneratedColumn, RelationId } from "typeorm";
+import { HTTPError } from "lambert-server";
import { ThreadMembersUpdateEvent } from "../interfaces";
import { emitEvent } from "../util";
import { BaseClassWithoutId } from "./BaseClass";
import { Channel } from "./Channel";
-import { HTTPError } from "lambert-server";
-import { Member } from "./Member";
+import type { Member } from "./Member";
// TODO: move
interface ThreadMemberMuteConfig {
diff --git a/src/util/entities/User.ts b/src/util/entities/User.ts
index f61951fe..69a9ffe3 100644
--- a/src/util/entities/User.ts
+++ b/src/util/entities/User.ts
@@ -20,14 +20,6 @@ import { Request } from "express";
import { Column, Entity, JoinColumn, OneToMany, OneToOne } from "typeorm";
import { Config, Email, FieldErrors, Snowflake, trimSpecial } from "..";
import { Random } from "../util";
-import { BaseClass } from "./BaseClass";
-import { Channel } from "./Channel";
-import { ConnectedAccount } from "./ConnectedAccount";
-import { Member } from "./Member";
-import { Relationship } from "./Relationship";
-import { SecurityKey } from "./SecurityKey";
-import { Session } from "./Session";
-import { UserSettings } from "./UserSettings";
import {
AvatarDecorationData,
ChannelType,
@@ -40,6 +32,14 @@ import {
UserPrivate,
} from "@spacebar/schemas";
import { JsonNumber } from "../util/Decorators";
+import { BaseClass } from "./BaseClass";
+import { Channel } from "./Channel";
+import type { ConnectedAccount } from "./ConnectedAccount";
+import { Member } from "./Member";
+import type { Relationship } from "./Relationship";
+import type { SecurityKey } from "./SecurityKey";
+import type { Session } from "./Session";
+import { UserSettings } from "./UserSettings";
@Entity({
name: "users",
@@ -144,7 +144,7 @@ export class User extends BaseClass {
@JsonNumber
rights: string;
- @OneToMany(() => Session, (session: Session) => session.user)
+ @OneToMany(() => require("./Session").Session, (session: Session) => session.user)
sessions: Session[];
@JoinColumn({ name: "relationship_ids" })
diff --git a/src/util/entities/UserSettings.ts b/src/util/entities/UserSettings.ts
index f3f6cb05..d658aaff 100644
--- a/src/util/entities/UserSettings.ts
+++ b/src/util/entities/UserSettings.ts
@@ -17,8 +17,8 @@
*/
import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";
-import { BaseClassWithoutId } from "./BaseClass";
import { CustomStatus, FriendSourceFlags, GuildFolder } from "@spacebar/schemas";
+import { BaseClassWithoutId } from "./BaseClass";
@Entity({
name: "user_settings",
diff --git a/src/util/entities/UserSettingsProtos.ts b/src/util/entities/UserSettingsProtos.ts
index bfb7a6a6..ed9fdccc 100644
--- a/src/util/entities/UserSettingsProtos.ts
+++ b/src/util/entities/UserSettingsProtos.ts
@@ -17,9 +17,9 @@
*/
import { Column, Entity, JoinColumn, OneToOne } from "typeorm";
+import { FrecencyUserSettings, PreloadedUserSettings } from "discord-protos";
import { BaseClassWithoutId, PrimaryIdColumn } from "./BaseClass";
import { User } from "./User";
-import { FrecencyUserSettings, PreloadedUserSettings } from "discord-protos";
@Entity({
name: "user_settings_protos",
diff --git a/src/util/entities/VoiceState.ts b/src/util/entities/VoiceState.ts
index b4478052..d1858ae4 100644
--- a/src/util/entities/VoiceState.ts
+++ b/src/util/entities/VoiceState.ts
@@ -17,12 +17,12 @@
*/
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
-import { BaseClass } from "./BaseClass";
-import { Channel } from "./Channel";
-import { Guild } from "./Guild";
-import { Member } from "./Member";
-import { User } from "./User";
import { PublicVoiceState, PublicVoiceStateProjection } from "@spacebar/schemas";
+import { BaseClass } from "./BaseClass";
+import type { Channel } from "./Channel";
+import type { Guild } from "./Guild";
+import type { Member } from "./Member";
+import type { User } from "./User";
//https://gist.github.com/vassjozsef/e482c65df6ee1facaace8b3c9ff66145#file-voice_state-ex
@Entity({
diff --git a/src/util/entities/Webhook.ts b/src/util/entities/Webhook.ts
index 674c9445..03bedcaf 100644
--- a/src/util/entities/Webhook.ts
+++ b/src/util/entities/Webhook.ts
@@ -17,12 +17,12 @@
*/
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
-import { Application } from "./Application";
-import { BaseClass } from "./BaseClass";
-import { Channel } from "./Channel";
-import { Guild } from "./Guild";
-import { User } from "./User";
import { WebhookType } from "@spacebar/schemas";
+import { BaseClass } from "./BaseClass";
+import type { Application } from "./Application";
+import type { Channel } from "./Channel";
+import type { Guild } from "./Guild";
+import type { User } from "./User";
@Entity({
name: "webhooks",
|