diff --git a/src/util/entities/BaseClass.ts b/src/util/entities/BaseClass.ts
index 5338837d..1aaf1479 100644
--- a/src/util/entities/BaseClass.ts
+++ b/src/util/entities/BaseClass.ts
@@ -16,7 +16,7 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-import { BaseEntity, BeforeInsert, BeforeUpdate, FindOptionsWhere, InsertResult, ObjectIdColumn, ObjectLiteral, PrimaryColumn } from "typeorm";
+import { BaseEntity, BeforeInsert, BeforeUpdate, Column, ColumnOptions, FindOptionsWhere, InsertResult, ObjectIdColumn, ObjectLiteral, PrimaryColumn } from "typeorm";
import { Snowflake } from "../util/Snowflake";
import { getDatabase } from "../util/Database";
import { OrmUtils } from "../imports/OrmUtils";
@@ -83,3 +83,5 @@ export class BaseClass extends BaseClassWithoutId {
if (!this.id) this.id = Snowflake.generate();
}
}
+
+export const ArrayColumn = (opts: ColumnOptions) => (process.env.DATABASE?.startsWith("postgres") ? Column({ ...opts, array: true }) : Column({ ...opts, type: "simple-array" }));
diff --git a/src/util/entities/ReportMenu.ts b/src/util/entities/ReportMenu.ts
new file mode 100644
index 00000000..26d66adc
--- /dev/null
+++ b/src/util/entities/ReportMenu.ts
@@ -0,0 +1,43 @@
+/*
+ Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
+ Copyright (C) 2024 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 <https://www.gnu.org/licenses/>.
+*/
+
+import { BaseClass, BaseClassWithoutId } from "./BaseClass";
+import { Entity, JoinColumn, ManyToOne, Column } from "typeorm";
+import { User } from "./User";
+import { AutomodAction, AutomodRuleActionType, AutomodRuleEventType, AutomodRuleTriggerMetadata, AutomodRuleTriggerType } from "@spacebar/schemas";
+import { ReportMenuType } from "../../schemas/api/reports/ReportMenu";
+
+@Entity({
+ name: "report_menus",
+})
+export class ReportMenu extends BaseClass {
+ @Column()
+ type: ReportMenuType;
+
+ @Column()
+ variant: string;
+
+ @Column()
+ isCurrent: boolean;
+
+ @Column({ nullable: true })
+ inherits?: string;
+
+ @Column({ type: "jsonb" })
+ content: unknown;
+}
|