diff --git a/src/util/entities/Application.ts b/src/util/entities/Application.ts index c60a65476..4ed75f275 100644 --- a/src/util/entities/Application.ts +++ b/src/util/entities/Application.ts @@ -20,10 +20,11 @@ import { Column, Entity, JoinColumn, ManyToOne, OneToOne } from "typeorm"; import { BaseClass } from "./BaseClass"; import { Team } from "./Team"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; @Entity({ name: "applications", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Application extends BaseClass { @Column() diff --git a/src/util/entities/Attachment.ts b/src/util/entities/Attachment.ts index f5124154b..e489609d3 100644 --- a/src/util/entities/Attachment.ts +++ b/src/util/entities/Attachment.ts @@ -27,10 +27,11 @@ import { import { URL } from "url"; import { deleteFile } from "../util/cdn"; import { BaseClass } from "./BaseClass"; +import { dbEngine } from "../util/Database"; @Entity({ name: "attachments", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Attachment extends BaseClass { @Column() diff --git a/src/util/entities/AuditLog.ts b/src/util/entities/AuditLog.ts index b8a02d75a..49c836c3b 100644 --- a/src/util/entities/AuditLog.ts +++ b/src/util/entities/AuditLog.ts @@ -20,6 +20,7 @@ import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; import { BaseClass } from "./BaseClass"; import { ChannelPermissionOverwrite } from "./Channel"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; export enum AuditLogEvents { // guild level @@ -113,7 +114,7 @@ export enum AuditLogEvents { @Entity({ name: "audit_logs", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class AuditLog extends BaseClass { @JoinColumn({ name: "target_id" }) diff --git a/src/util/entities/BackupCodes.ts b/src/util/entities/BackupCodes.ts index b4c6f3952..9afc181ad 100644 --- a/src/util/entities/BackupCodes.ts +++ b/src/util/entities/BackupCodes.ts @@ -20,10 +20,11 @@ import { Column, Entity, JoinColumn, ManyToOne } from "typeorm"; import { BaseClass } from "./BaseClass"; import { User } from "./User"; import crypto from "crypto"; +import { dbEngine } from "../util/Database"; @Entity({ name: "backup_codes", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class BackupCode extends BaseClass { @JoinColumn({ name: "user_id" }) diff --git a/src/util/entities/Badge.ts b/src/util/entities/Badge.ts index e716525a4..4b98006ae 100644 --- a/src/util/entities/Badge.ts +++ b/src/util/entities/Badge.ts @@ -18,10 +18,11 @@ import { Column, Entity } from "typeorm"; import { BaseClassWithoutId } from "./BaseClass"; +import { dbEngine } from "../util/Database"; @Entity({ name: "badges", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Badge extends BaseClassWithoutId { @Column({ primary: true }) diff --git a/src/util/entities/Ban.ts b/src/util/entities/Ban.ts index 407569fc5..ed5f47e12 100644 --- a/src/util/entities/Ban.ts +++ b/src/util/entities/Ban.ts @@ -20,10 +20,11 @@ import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; import { BaseClass } from "./BaseClass"; import { Guild } from "./Guild"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; @Entity({ name: "bans", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Ban extends BaseClass { @Column({ nullable: true }) diff --git a/src/util/entities/Categories.ts b/src/util/entities/Categories.ts index 9fa643351..990e7fdda 100644 --- a/src/util/entities/Categories.ts +++ b/src/util/entities/Categories.ts @@ -18,6 +18,7 @@ import { Column, Entity } from "typeorm"; import { BaseClassWithoutId, PrimaryIdColumn } from "./BaseClass"; +import { dbEngine } from "../util/Database"; // TODO: categories: // [{ @@ -35,7 +36,7 @@ import { BaseClassWithoutId, PrimaryIdColumn } from "./BaseClass"; @Entity({ name: "categories", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Categories extends BaseClassWithoutId { // Not using snowflake diff --git a/src/util/entities/Channel.ts b/src/util/entities/Channel.ts index 66eaa0eb0..3b841c8f1 100644 --- a/src/util/entities/Channel.ts +++ b/src/util/entities/Channel.ts @@ -44,6 +44,7 @@ import { Recipient } from "./Recipient"; import { PublicUserProjection, User } from "./User"; import { VoiceState } from "./VoiceState"; import { Webhook } from "./Webhook"; +import { dbEngine } from "../util/Database"; export enum ChannelType { GUILD_TEXT = 0, // a text channel within a guild @@ -71,7 +72,7 @@ export enum ChannelType { @Entity({ name: "channels", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Channel extends BaseClass { @Column() diff --git a/src/util/entities/ClientRelease.ts b/src/util/entities/ClientRelease.ts index f6577b2c9..aa697939f 100644 --- a/src/util/entities/ClientRelease.ts +++ b/src/util/entities/ClientRelease.ts @@ -18,10 +18,11 @@ import { Column, Entity } from "typeorm"; import { BaseClass } from "./BaseClass"; +import { dbEngine } from "../util/Database"; @Entity({ name: "client_release", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Release extends BaseClass { @Column() diff --git a/src/util/entities/Config.ts b/src/util/entities/Config.ts index 9a3fd55e3..8d725a12c 100644 --- a/src/util/entities/Config.ts +++ b/src/util/entities/Config.ts @@ -18,10 +18,11 @@ import { Column, Entity } from "typeorm"; import { BaseClassWithoutId, PrimaryIdColumn } from "./BaseClass"; +import { dbEngine } from "../util/Database"; @Entity({ name: "config", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class ConfigEntity extends BaseClassWithoutId { @PrimaryIdColumn() diff --git a/src/util/entities/ConnectedAccount.ts b/src/util/entities/ConnectedAccount.ts index f0ee62fe3..0c9eb402f 100644 --- a/src/util/entities/ConnectedAccount.ts +++ b/src/util/entities/ConnectedAccount.ts @@ -20,6 +20,7 @@ import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; import { ConnectedAccountTokenData } from "../interfaces"; import { BaseClass } from "./BaseClass"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; export type PublicConnectedAccount = Pick< ConnectedAccount, @@ -28,7 +29,7 @@ export type PublicConnectedAccount = Pick< @Entity({ name: "connected_accounts", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class ConnectedAccount extends BaseClass { @Column() diff --git a/src/util/entities/ConnectionConfigEntity.ts b/src/util/entities/ConnectionConfigEntity.ts index 19d11627a..9d4dde60f 100644 --- a/src/util/entities/ConnectionConfigEntity.ts +++ b/src/util/entities/ConnectionConfigEntity.ts @@ -18,10 +18,11 @@ import { Column, Entity } from "typeorm"; import { BaseClassWithoutId, PrimaryIdColumn } from "./BaseClass"; +import { dbEngine } from "../util/Database"; @Entity({ name: "connection_config", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class ConnectionConfigEntity extends BaseClassWithoutId { @PrimaryIdColumn() diff --git a/src/util/entities/EmbedCache.ts b/src/util/entities/EmbedCache.ts index 853fa73de..8d68b0ac6 100644 --- a/src/util/entities/EmbedCache.ts +++ b/src/util/entities/EmbedCache.ts @@ -19,10 +19,11 @@ import { BaseClass } from "./BaseClass"; import { Entity, Column } from "typeorm"; import { Embed } from "./Message"; +import { dbEngine } from "../util/Database"; @Entity({ name: "embed_cache", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class EmbedCache extends BaseClass { @Column() diff --git a/src/util/entities/Emoji.ts b/src/util/entities/Emoji.ts index ac44b8f77..198d5faf0 100644 --- a/src/util/entities/Emoji.ts +++ b/src/util/entities/Emoji.ts @@ -20,10 +20,11 @@ import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; import { User } from "."; import { BaseClass } from "./BaseClass"; import { Guild } from "./Guild"; +import { dbEngine } from "../util/Database"; @Entity({ name: "emojis", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Emoji extends BaseClass { @Column() diff --git a/src/util/entities/Encryption.ts b/src/util/entities/Encryption.ts index 3ef933fb8..21e77b484 100644 --- a/src/util/entities/Encryption.ts +++ b/src/util/entities/Encryption.ts @@ -18,10 +18,11 @@ import { Column, Entity } from "typeorm"; import { BaseClass } from "./BaseClass"; +import { dbEngine } from "../util/Database"; @Entity({ name: "security_settings", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class SecuritySettings extends BaseClass { @Column({ nullable: true }) diff --git a/src/util/entities/Guild.ts b/src/util/entities/Guild.ts index 8517ca367..4e49ce9b8 100644 --- a/src/util/entities/Guild.ts +++ b/src/util/entities/Guild.ts @@ -37,6 +37,7 @@ import { Template } from "./Template"; import { User } from "./User"; import { VoiceState } from "./VoiceState"; import { Webhook } from "./Webhook"; +import { dbEngine } from "../util/Database"; // TODO: application_command_count, application_command_counts: {1: 0, 2: 0, 3: 0} // TODO: guild_scheduled_events @@ -68,7 +69,7 @@ export const PublicGuildRelations = [ @Entity({ name: "guilds", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Guild extends BaseClass { @Column({ nullable: true }) diff --git a/src/util/entities/Invite.ts b/src/util/entities/Invite.ts index 6ab75302e..e1b8cabdd 100644 --- a/src/util/entities/Invite.ts +++ b/src/util/entities/Invite.ts @@ -22,12 +22,13 @@ import { Channel } from "./Channel"; import { Guild } from "./Guild"; import { Member } from "./Member"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; export const PublicInviteRelation = ["inviter", "guild", "channel"]; @Entity({ name: "invites", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Invite extends BaseClassWithoutId { @PrimaryIdColumn() diff --git a/src/util/entities/Member.ts b/src/util/entities/Member.ts index 0ca1a15bd..62ab9398f 100644 --- a/src/util/entities/Member.ts +++ b/src/util/entities/Member.ts @@ -48,6 +48,7 @@ import { Guild } from "./Guild"; import { Message } from "./Message"; import { Role } from "./Role"; import { PublicUser, User } from "./User"; +import { dbEngine } from "../util/Database"; export const MemberPrivateProjection: (keyof Member)[] = [ "id", @@ -67,7 +68,7 @@ export const MemberPrivateProjection: (keyof Member)[] = [ @Entity({ name: "members", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) @Index(["id", "guild_id"], { unique: true }) export class Member extends BaseClassWithoutId { diff --git a/src/util/entities/Message.ts b/src/util/entities/Message.ts index ba6b1ac76..9dc2949db 100644 --- a/src/util/entities/Message.ts +++ b/src/util/entities/Message.ts @@ -39,6 +39,7 @@ import { Guild } from "./Guild"; import { Webhook } from "./Webhook"; import { Sticker } from "./Sticker"; import { Attachment } from "./Attachment"; +import { dbEngine } from "../util/Database"; export enum MessageType { DEFAULT = 0, @@ -70,7 +71,7 @@ export enum MessageType { @Entity({ name: "messages", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) @Index(["channel_id", "id"], { unique: true }) export class Message extends BaseClass { diff --git a/src/util/entities/Migration.ts b/src/util/entities/Migration.ts index cd572c03f..f0ee3e075 100644 --- a/src/util/entities/Migration.ts +++ b/src/util/entities/Migration.ts @@ -23,6 +23,7 @@ import { PrimaryGeneratedColumn, BaseEntity, } from "typeorm"; +import { dbEngine } from "../util/Database"; export const PrimaryIdAutoGenerated = process.env.DATABASE?.startsWith( "mongodb", @@ -32,7 +33,7 @@ export const PrimaryIdAutoGenerated = process.env.DATABASE?.startsWith( @Entity({ name: "migrations", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Migration extends BaseEntity { @PrimaryIdAutoGenerated() diff --git a/src/util/entities/Note.ts b/src/util/entities/Note.ts index 4821d2d91..9773c8021 100644 --- a/src/util/entities/Note.ts +++ b/src/util/entities/Note.ts @@ -19,10 +19,11 @@ import { Column, Entity, JoinColumn, ManyToOne, Unique } from "typeorm"; import { BaseClass } from "./BaseClass"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; @Entity({ name: "notes", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) @Unique(["owner", "target"]) export class Note extends BaseClass { diff --git a/src/util/entities/RateLimit.ts b/src/util/entities/RateLimit.ts index f0f597e00..ba2b79313 100644 --- a/src/util/entities/RateLimit.ts +++ b/src/util/entities/RateLimit.ts @@ -18,10 +18,11 @@ import { Column, Entity } from "typeorm"; import { BaseClass } from "./BaseClass"; +import { dbEngine } from "../util/Database"; @Entity({ name: "rate_limits", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class RateLimit extends BaseClass { @Column() // no relation as it also diff --git a/src/util/entities/ReadState.ts b/src/util/entities/ReadState.ts index 8e555de63..9f362547f 100644 --- a/src/util/entities/ReadState.ts +++ b/src/util/entities/ReadState.ts @@ -27,6 +27,7 @@ import { import { BaseClass } from "./BaseClass"; import { Channel } from "./Channel"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; // 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 @@ -34,7 +35,7 @@ import { User } from "./User"; @Entity({ name: "read_states", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) @Index(["channel_id", "user_id"], { unique: true }) export class ReadState extends BaseClass { diff --git a/src/util/entities/Recipient.ts b/src/util/entities/Recipient.ts index fecb051f2..268962201 100644 --- a/src/util/entities/Recipient.ts +++ b/src/util/entities/Recipient.ts @@ -18,10 +18,11 @@ import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; import { BaseClass } from "./BaseClass"; +import { dbEngine } from "../util/Database"; @Entity({ name: "recipients", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Recipient extends BaseClass { @Column() diff --git a/src/util/entities/Relationship.ts b/src/util/entities/Relationship.ts index 3aa057e7f..d8dfc289e 100644 --- a/src/util/entities/Relationship.ts +++ b/src/util/entities/Relationship.ts @@ -26,6 +26,7 @@ import { } from "typeorm"; import { BaseClass } from "./BaseClass"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; export enum RelationshipType { outgoing = 4, @@ -36,7 +37,7 @@ export enum RelationshipType { @Entity({ name: "relationships", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) @Index(["from_id", "to_id"], { unique: true }) export class Relationship extends BaseClass { diff --git a/src/util/entities/Role.ts b/src/util/entities/Role.ts index f45098277..c5df6068e 100644 --- a/src/util/entities/Role.ts +++ b/src/util/entities/Role.ts @@ -20,10 +20,11 @@ import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; import { BaseClass } from "./BaseClass"; import { Guild } from "./Guild"; +import { dbEngine } from "../util/Database"; @Entity({ name: "roles", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Role extends BaseClass { @Column() diff --git a/src/util/entities/SecurityKey.ts b/src/util/entities/SecurityKey.ts index f0b156c92..efe46c81f 100644 --- a/src/util/entities/SecurityKey.ts +++ b/src/util/entities/SecurityKey.ts @@ -19,10 +19,11 @@ import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; import { BaseClass } from "./BaseClass"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; @Entity({ name: "security_keys", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class SecurityKey extends BaseClass { @Column({ nullable: true }) diff --git a/src/util/entities/Session.ts b/src/util/entities/Session.ts index b7657d979..5c3d5a4fd 100644 --- a/src/util/entities/Session.ts +++ b/src/util/entities/Session.ts @@ -21,12 +21,13 @@ import { BaseClass } from "./BaseClass"; import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; import { ClientStatus, Status } from "../interfaces/Status"; import { Activity } from "../interfaces/Activity"; +import { dbEngine } from "../util/Database"; //TODO we need to remove all sessions on server start because if the server crashes without closing websockets it won't delete them @Entity({ name: "sessions", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Session extends BaseClass { @Column({ nullable: true }) diff --git a/src/util/entities/Sticker.ts b/src/util/entities/Sticker.ts index 5b17c9b88..78b6d207d 100644 --- a/src/util/entities/Sticker.ts +++ b/src/util/entities/Sticker.ts @@ -20,6 +20,7 @@ import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; import { BaseClass } from "./BaseClass"; import { Guild } from "./Guild"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; export enum StickerType { STANDARD = 1, @@ -35,7 +36,7 @@ export enum StickerFormatType { @Entity({ name: "stickers", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Sticker extends BaseClass { @Column() diff --git a/src/util/entities/StickerPack.ts b/src/util/entities/StickerPack.ts index 5f7bf671f..43d27d60b 100644 --- a/src/util/entities/StickerPack.ts +++ b/src/util/entities/StickerPack.ts @@ -26,10 +26,11 @@ import { } from "typeorm"; import { Sticker } from "."; import { BaseClass } from "./BaseClass"; +import { dbEngine } from "../util/Database"; @Entity({ name: "sticker_packs", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class StickerPack extends BaseClass { @Column() diff --git a/src/util/entities/Team.ts b/src/util/entities/Team.ts index 7c804260e..6b3fa5543 100644 --- a/src/util/entities/Team.ts +++ b/src/util/entities/Team.ts @@ -27,10 +27,11 @@ import { import { BaseClass } from "./BaseClass"; import { TeamMember } from "./TeamMember"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; @Entity({ name: "teams", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Team extends BaseClass { @Column({ nullable: true }) diff --git a/src/util/entities/TeamMember.ts b/src/util/entities/TeamMember.ts index 5b82d30e3..2cd04710a 100644 --- a/src/util/entities/TeamMember.ts +++ b/src/util/entities/TeamMember.ts @@ -19,6 +19,7 @@ import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; import { BaseClass } from "./BaseClass"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; export enum TeamMemberState { INVITED = 1, @@ -27,7 +28,7 @@ export enum TeamMemberState { @Entity({ name: "team_members", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class TeamMember extends BaseClass { @Column({ type: "int" }) diff --git a/src/util/entities/Template.ts b/src/util/entities/Template.ts index 3d5c1764b..faf6454a9 100644 --- a/src/util/entities/Template.ts +++ b/src/util/entities/Template.ts @@ -20,10 +20,11 @@ import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm"; import { BaseClass } from "./BaseClass"; import { Guild } from "./Guild"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; @Entity({ name: "templates", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Template extends BaseClass { @Column({ unique: true }) diff --git a/src/util/entities/User.ts b/src/util/entities/User.ts index 43c4aea63..0323de528 100644 --- a/src/util/entities/User.ts +++ b/src/util/entities/User.ts @@ -34,6 +34,7 @@ import { Relationship } from "./Relationship"; import { SecurityKey } from "./SecurityKey"; import { Session } from "./Session"; import { UserSettings } from "./UserSettings"; +import { dbEngine } from "../util/Database"; export enum PublicUserEnum { username, @@ -88,7 +89,7 @@ export interface UserPrivate extends Pick { @Entity({ name: "users", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class User extends BaseClass { @Column() diff --git a/src/util/entities/UserSettings.ts b/src/util/entities/UserSettings.ts index 1f27630db..cbb1cbcf3 100644 --- a/src/util/entities/UserSettings.ts +++ b/src/util/entities/UserSettings.ts @@ -18,10 +18,11 @@ import { Column, Entity, PrimaryGeneratedColumn } from "typeorm"; import { BaseClassWithoutId } from "./BaseClass"; +import { dbEngine } from "../util/Database"; @Entity({ name: "user_settings", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class UserSettings extends BaseClassWithoutId { @PrimaryGeneratedColumn() diff --git a/src/util/entities/ValidRegistrationTokens.ts b/src/util/entities/ValidRegistrationTokens.ts index 737adfc16..709457656 100644 --- a/src/util/entities/ValidRegistrationTokens.ts +++ b/src/util/entities/ValidRegistrationTokens.ts @@ -17,10 +17,11 @@ */ import { BaseEntity, Column, Entity, PrimaryColumn } from "typeorm"; +import { dbEngine } from "../util/Database"; @Entity({ name: "valid_registration_tokens", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class ValidRegistrationToken extends BaseEntity { @PrimaryColumn() diff --git a/src/util/entities/VoiceState.ts b/src/util/entities/VoiceState.ts index de0a52d3b..83a0af63b 100644 --- a/src/util/entities/VoiceState.ts +++ b/src/util/entities/VoiceState.ts @@ -22,11 +22,12 @@ import { Channel } from "./Channel"; import { Guild } from "./Guild"; import { Member } from "./Member"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; //https://gist.github.com/vassjozsef/e482c65df6ee1facaace8b3c9ff66145#file-voice_state-ex @Entity({ name: "voice_states", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class VoiceState extends BaseClass { @Column({ nullable: true }) diff --git a/src/util/entities/Webhook.ts b/src/util/entities/Webhook.ts index 7005bf647..473352c87 100644 --- a/src/util/entities/Webhook.ts +++ b/src/util/entities/Webhook.ts @@ -22,6 +22,7 @@ import { BaseClass } from "./BaseClass"; import { Channel } from "./Channel"; import { Guild } from "./Guild"; import { User } from "./User"; +import { dbEngine } from "../util/Database"; export enum WebhookType { Incoming = 1, @@ -31,7 +32,7 @@ export enum WebhookType { @Entity({ name: "webhooks", - engine: "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci", + engine: dbEngine, }) export class Webhook extends BaseClass { @Column({ type: "int" }) diff --git a/src/util/util/Database.ts b/src/util/util/Database.ts index 3a45eea0e..af0960cd9 100644 --- a/src/util/util/Database.ts +++ b/src/util/util/Database.ts @@ -1,17 +1,17 @@ /* Spacebar: A FOSS re-implementation and extension of the Discord.com backend. Copyright (C) 2023 Spacebar and Spacebar Contributors - + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. - + You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ @@ -134,3 +134,6 @@ export { DataSourceOptions, DatabaseType, dbConnection }; export async function closeDatabase() { await dbConnection?.destroy(); } + +export const dbEngine = + "InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci";