summary refs log tree commit diff
path: root/src/models
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-02-05 21:55:07 +0100
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-02-05 21:55:07 +0100
commit9b7f4e2b66bd978c3903b352ee1811e80848a24a (patch)
tree4f537890f27f44b95d7057e41ae3c32be08a1791 /src/models
parent:bug: make default options optional (diff)
downloadserver-9b7f4e2b66bd978c3903b352ee1811e80848a24a.tar.xz
Move Models/Schemas to server-util
Diffstat (limited to 'src/models')
-rw-r--r--src/models/Channel.ts19
-rw-r--r--src/models/Emoji.ts12
-rw-r--r--src/models/Guild.ts53
-rw-r--r--src/models/Guild.ts.OLD38
-rw-r--r--src/models/Invite.ts31
-rw-r--r--src/models/Member.ts14
-rw-r--r--src/models/Role.ts9
-rw-r--r--src/models/User.ts62
8 files changed, 238 insertions, 0 deletions
diff --git a/src/models/Channel.ts b/src/models/Channel.ts
new file mode 100644

index 00000000..81fec185 --- /dev/null +++ b/src/models/Channel.ts
@@ -0,0 +1,19 @@ +export interface Channel { + id: bigint; + guild_id: bigint; + last_message_id: string; + last_pin_timestamp: string; + name: string; + nsfw: boolean; + parent_id: bigint; + position: number; + rate_limit_per_user: number; + topic: string | null; + type: number; + permission_overwrites: { + allow: bigint; + deny: bigint; + id: bigint; + type: number; + }[]; +} diff --git a/src/models/Emoji.ts b/src/models/Emoji.ts new file mode 100644
index 00000000..1facc252 --- /dev/null +++ b/src/models/Emoji.ts
@@ -0,0 +1,12 @@ +export interface Emoji { + allNamesString: string; // e.g. :thonk: + animated: boolean; + available: boolean; + guildId: bigint; + id: bigint; + managed: boolean; + name: string; + require_colons: boolean; + url: string; + roles: []; +} diff --git a/src/models/Guild.ts b/src/models/Guild.ts new file mode 100644
index 00000000..3d84a9c8 --- /dev/null +++ b/src/models/Guild.ts
@@ -0,0 +1,53 @@ +import { Channel } from "./Channel"; +import { Emoji } from "./Emoji"; +import { Member } from "./Member"; +import { Role } from "./Role"; + +export interface Guild { + id: bigint; + name: string; + icon: string; + icon_hash: string; + splash: string; + discovery_splash: string; + owner: boolean; + owner_id: bigint; + permissions: string; + region: string; + afk_channel_id: bigint; + afk_timeout: number; + widget_enabled: boolean; + widget_channel_id: bigint; + verification_level: number; + default_message_notifications: number; + explicit_content_filter: number; + roles: Role[]; + emojis: Emoji[]; + features: []; + mfa_level: number; + application_id: bigint; + system_channel_id: bigint; + system_channel_flags: number; + rules_channel_id: bigint; + joined_at: number; + large: boolean; + unavailable: boolean; + member_count: number; + voice_states: []; // ! tf is this + members: Member[]; + channels: Channel[]; + presences: []; // TODO: add model + max_presences: number; + max_members: number; + vanity_url_code: string; + description: string; + banner: string; + premium_tier: number; + premium_subscription_count: number; + preferred_locale: string; + public_updates_channel_id: bigint; + max_video_channel_users: number; + approximate_member_count: number; + approximate_presence_count: number; + welcome_screen: []; // ! what is this +} diff --git a/src/models/Guild.ts.OLD b/src/models/Guild.ts.OLD new file mode 100644
index 00000000..a4e7460f --- /dev/null +++ b/src/models/Guild.ts.OLD
@@ -0,0 +1,38 @@ +export interface Guild { + id: bigint; + name: string; + icon: string; // e.g. "28776e7ad42922582be25bb06cdc5b53" + icon_hash: string; + afk_channel_id: bigint; + afk_timeout: number; + application_id: bigint; + banner: string; // id + description: string; + explicit_content_filter: number; + features: string[]; + /* guild_hashes: // ? what is this + channels: {hash: "uZsNP+TWAFY", omitted: false} + metadata: {hash: "JCboqYj68bQ", omitted: false} + roles: {hash: "1d7EJBRgVqg", omitted: false} + version: 1 + */ + joined_at: string; // user specific, Date Iso: "2021-01-23T19:01:23.126002+00:00" + large: boolean; + lazy: boolean; // ? what is this + max_members: number; // e.g. default 100.000 + max_video_channel_users: number; // ? default: 25, is this max 25 streaming or watching + member_count: number; // current member count + mfa_level: number; + owner_id: bigint; + preferred_locale: string; // only partnered/verified guilds can choose this + premium_subscription_count: number; // number of boosts + premium_tier: number; // ? what is this + public_updates_channel_id: bigint; // + rules_channel_id: bigint; + splash: string; // e.g. "32bec3d01f1dc90933cbb0bd75d333b0" + system_channel_flags: number; + system_channel_id: bigint; + vanity_url_code: string; + verification_level: number; + threads: []; // ? not yet finished +} diff --git a/src/models/Invite.ts b/src/models/Invite.ts new file mode 100644
index 00000000..900eb4a1 --- /dev/null +++ b/src/models/Invite.ts
@@ -0,0 +1,31 @@ +export interface Invite { + code: string; + guild: { + id: bigint; + name: string; + splash: string; + description: string; + icon: string; + features: Object; + verification_level: number; + }; + channel: { + id: bigint; + name: string; + type: number; + }; + + inviter: { + id: bigint; + username: string; + avatar: string; + discriminator: number; + }; + target_user: { + id: bigint; + username: string; + avatar: string; + discriminator: number; + }; + target_user_type: number; +} diff --git a/src/models/Member.ts b/src/models/Member.ts new file mode 100644
index 00000000..c0c5516d --- /dev/null +++ b/src/models/Member.ts
@@ -0,0 +1,14 @@ +import { Role } from "./Role"; +import { User } from "./User"; + +export interface Member { + user: User; + nick: string; + roles: Role[]; + joined_at: number; + premium_since: number; + deaf: boolean; + mute: boolean; + pending: boolean; + permissions: string; +} diff --git a/src/models/Role.ts b/src/models/Role.ts new file mode 100644
index 00000000..44ddfea1 --- /dev/null +++ b/src/models/Role.ts
@@ -0,0 +1,9 @@ +export interface Role { + color: number; + hoist: boolean; + managed: boolean; + mentionable: boolean; + name: string; + permissions: bigint; + position: number; +} diff --git a/src/models/User.ts b/src/models/User.ts new file mode 100644
index 00000000..4cef39c6 --- /dev/null +++ b/src/models/User.ts
@@ -0,0 +1,62 @@ +import { UserFlags } from "../util/UserFlags"; + +export interface User { + id: bigint; + username: string; + discriminator: string; + avatar: string | null; + bot: boolean; + system: boolean; + mfa_enabled: boolean; + created_at: number; + verified: boolean; + email: string; + flags: bigint; // TODO: automatically convert BigInt to BitField of UserFlags + hash: string; // hash of the password, salt is saved in password (bcrypt) + valid_tokens_since: number; // all tokens with a previous issue date are invalid + user_settings: UserSettings; +} + +export interface UserSettings { + afk_timeout: number; + allow_accessibility_detection: boolean; + animate_emoji: boolean; + animate_stickers: number; + contact_sync_enabled: boolean; + convert_emoticons: boolean; + custom_status: { + emoji_id: bigint | null; + emoji_name: string | null; + expires_at: number | null; + text: string | null; + }; + default_guilds_restricted: boolean; + detect_platform_accounts: boolean; + developer_mode: boolean; + disable_games_tab: boolean; + enable_tts_command: boolean; + explicit_content_filter: number; + friend_source_flags: { all: boolean }; + gif_auto_play: boolean; + guild_folders: // every top guild is displayed as a "folder" + { + color: number; + guild_ids: bigint[]; + id: number; + name: string; + }[]; + guild_positions: bigint[]; // guild ids ordered by position + inline_attachment_media: boolean; + inline_embed_media: boolean; + locale: string; // en_US + message_display_compact: boolean; + native_phone_integration_enabled: boolean; + render_embeds: boolean; + render_reactions: boolean; + restricted_guilds: bigint[]; + show_current_game: boolean; + status: "online" | "offline" | "dnd" | "idle"; + stream_notifications_enabled: boolean; + theme: "dark" | "white"; // dark + timezone_offset: number; // e.g -60 +}