diff --git a/util/src/models/AuditLog.ts b/util/src/entities/AuditLog.ts
index 02b2c444..ceeb21fd 100644
--- a/util/src/models/AuditLog.ts
+++ b/util/src/entities/AuditLog.ts
@@ -1,20 +1,67 @@
-import { Schema, Document, Types } from "mongoose";
-import db from "../util/Database";
+import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
+import { BaseClass } from "./BaseClass";
import { ChannelPermissionOverwrite } from "./Channel";
-import { PublicUser } from "./User";
+import { User } from "./User";
-export interface AuditLogResponse {
- webhooks: []; // TODO:
- users: PublicUser[];
- audit_log_entries: AuditLogEntries[];
- integrations: []; // TODO:
+export enum AuditLogEvents {
+ GUILD_UPDATE = 1,
+ CHANNEL_CREATE = 10,
+ CHANNEL_UPDATE = 11,
+ CHANNEL_DELETE = 12,
+ CHANNEL_OVERWRITE_CREATE = 13,
+ CHANNEL_OVERWRITE_UPDATE = 14,
+ CHANNEL_OVERWRITE_DELETE = 15,
+ MEMBER_KICK = 20,
+ MEMBER_PRUNE = 21,
+ MEMBER_BAN_ADD = 22,
+ MEMBER_BAN_REMOVE = 23,
+ MEMBER_UPDATE = 24,
+ MEMBER_ROLE_UPDATE = 25,
+ MEMBER_MOVE = 26,
+ MEMBER_DISCONNECT = 27,
+ BOT_ADD = 28,
+ ROLE_CREATE = 30,
+ ROLE_UPDATE = 31,
+ ROLE_DELETE = 32,
+ INVITE_CREATE = 40,
+ INVITE_UPDATE = 41,
+ INVITE_DELETE = 42,
+ WEBHOOK_CREATE = 50,
+ WEBHOOK_UPDATE = 51,
+ WEBHOOK_DELETE = 52,
+ EMOJI_CREATE = 60,
+ EMOJI_UPDATE = 61,
+ EMOJI_DELETE = 62,
+ MESSAGE_DELETE = 72,
+ MESSAGE_BULK_DELETE = 73,
+ MESSAGE_PIN = 74,
+ MESSAGE_UNPIN = 75,
+ INTEGRATION_CREATE = 80,
+ INTEGRATION_UPDATE = 81,
+ INTEGRATION_DELETE = 82,
}
-export interface AuditLogEntries {
- target_id?: string;
+@Entity("audit_logs")
+export class AuditLogEntry extends BaseClass {
+ @JoinColumn({ name: "target_id" })
+ @ManyToOne(() => User)
+ target?: User;
+
+ @Column({ nullable: true })
+ @RelationId((auditlog: AuditLogEntry) => auditlog.user)
user_id: string;
- id: string;
+
+ @JoinColumn({ name: "user_id" })
+ @ManyToOne(() => User)
+ user: User;
+
+ @Column({
+ type: "simple-enum",
+ enum: AuditLogEvents,
+ })
action_type: AuditLogEvents;
+
+ @Column({ type: "simple-json", nullable: true })
options?: {
delete_member_days?: string;
members_removed?: string;
@@ -25,7 +72,12 @@ export interface AuditLogEntries {
type?: string;
role_name?: string;
};
+
+ @Column()
+ @Column({ type: "simple-json" })
changes: AuditLogChange[];
+
+ @Column({ nullable: true })
reason?: string;
}
@@ -91,130 +143,3 @@ export interface AuditLogChangeValue {
expire_grace_period?: number;
user_limit?: number;
}
-
-export interface AuditLogEntriesDocument extends Document, AuditLogEntries {
- id: string;
-}
-
-export const AuditLogChanges = {
- name: String,
- description: String,
- icon_hash: String,
- splash_hash: String,
- discovery_splash_hash: String,
- banner_hash: String,
- owner_id: String,
- region: String,
- preferred_locale: String,
- afk_channel_id: String,
- afk_timeout: Number,
- rules_channel_id: String,
- public_updates_channel_id: String,
- mfa_level: Number,
- verification_level: Number,
- explicit_content_filter: Number,
- default_message_notifications: Number,
- vanity_url_code: String,
- $add: [{}],
- $remove: [{}],
- prune_delete_days: Number,
- widget_enabled: Boolean,
- widget_channel_id: String,
- system_channel_id: String,
- position: Number,
- topic: String,
- bitrate: Number,
- permission_overwrites: [{}],
- nsfw: Boolean,
- application_id: String,
- rate_limit_per_user: Number,
- permissions: String,
- color: Number,
- hoist: Boolean,
- mentionable: Boolean,
- allow: String,
- deny: String,
- code: String,
- channel_id: String,
- inviter_id: String,
- max_uses: Number,
- uses: Number,
- max_age: Number,
- temporary: Boolean,
- deaf: Boolean,
- mute: Boolean,
- nick: String,
- avatar_hash: String,
- id: String,
- type: Number,
- enable_emoticons: Boolean,
- expire_behavior: Number,
- expire_grace_period: Number,
- user_limit: Number,
-};
-
-export const AuditLogSchema = new Schema({
- target_id: String,
- user_id: { type: String, required: true },
- id: { type: String, required: true },
- action_type: { type: Number, required: true },
- options: {
- delete_member_days: String,
- members_removed: String,
- channel_id: String,
- messaged_id: String,
- count: String,
- id: String,
- type: { type: Number },
- role_name: String,
- },
- changes: [
- {
- new_value: AuditLogChanges,
- old_value: AuditLogChanges,
- key: String,
- },
- ],
- reason: String,
-});
-
-// @ts-ignore
-export const AuditLogModel = db.model<AuditLogEntries>("AuditLog", AuditLogSchema, "auditlogs");
-
-export enum AuditLogEvents {
- GUILD_UPDATE = 1,
- CHANNEL_CREATE = 10,
- CHANNEL_UPDATE = 11,
- CHANNEL_DELETE = 12,
- CHANNEL_OVERWRITE_CREATE = 13,
- CHANNEL_OVERWRITE_UPDATE = 14,
- CHANNEL_OVERWRITE_DELETE = 15,
- MEMBER_KICK = 20,
- MEMBER_PRUNE = 21,
- MEMBER_BAN_ADD = 22,
- MEMBER_BAN_REMOVE = 23,
- MEMBER_UPDATE = 24,
- MEMBER_ROLE_UPDATE = 25,
- MEMBER_MOVE = 26,
- MEMBER_DISCONNECT = 27,
- BOT_ADD = 28,
- ROLE_CREATE = 30,
- ROLE_UPDATE = 31,
- ROLE_DELETE = 32,
- INVITE_CREATE = 40,
- INVITE_UPDATE = 41,
- INVITE_DELETE = 42,
- WEBHOOK_CREATE = 50,
- WEBHOOK_UPDATE = 51,
- WEBHOOK_DELETE = 52,
- EMOJI_CREATE = 60,
- EMOJI_UPDATE = 61,
- EMOJI_DELETE = 62,
- MESSAGE_DELETE = 72,
- MESSAGE_BULK_DELETE = 73,
- MESSAGE_PIN = 74,
- MESSAGE_UNPIN = 75,
- INTEGRATION_CREATE = 80,
- INTEGRATION_UPDATE = 81,
- INTEGRATION_DELETE = 82,
-}
|