summary refs log tree commit diff
path: root/api/src/schema/Guild.ts
diff options
context:
space:
mode:
Diffstat (limited to 'api/src/schema/Guild.ts')
-rw-r--r--api/src/schema/Guild.ts131
1 files changed, 131 insertions, 0 deletions
diff --git a/api/src/schema/Guild.ts b/api/src/schema/Guild.ts
new file mode 100644
index 00000000..0443e64c
--- /dev/null
+++ b/api/src/schema/Guild.ts
@@ -0,0 +1,131 @@
+import { ChannelSchema, GuildChannel } from "@fosscord/server-util";
+import { Length } from "../util/instanceOf";
+
+export const GuildCreateSchema = {
+	name: new Length(String, 2, 100),
+	$region: String, // auto complete voice region of the user
+	$icon: String,
+	$channels: [Object],
+	$guild_template_code: String,
+	$system_channel_id: String,
+	$rules_channel_id: String
+};
+
+export interface GuildCreateSchema {
+	name: string;
+	region?: string;
+	icon?: string;
+	channels?: GuildChannel[];
+	guild_template_code?: string;
+	system_channel_id?: string;
+	rules_channel_id?: string;
+}
+
+export const GuildUpdateSchema = {
+	...GuildCreateSchema,
+	name: undefined,
+	$name: new Length(String, 2, 100),
+	$banner: String,
+	$splash: String,
+	$description: String,
+	$features: [String],
+	$icon: String,
+	$verification_level: Number,
+	$default_message_notifications: Number,
+	$system_channel_flags: Number,
+	$system_channel_id: String,
+	$explicit_content_filter: Number,
+	$public_updates_channel_id: String,
+	$afk_timeout: Number,
+	$afk_channel_id: String,
+	$preferred_locale: String
+};
+// @ts-ignore
+delete GuildUpdateSchema.$channels;
+
+export interface GuildUpdateSchema extends Omit<GuildCreateSchema, "channels"> {
+	banner?: string;
+	splash?: string;
+	description?: string;
+	features?: [string];
+	verification_level?: number;
+	default_message_notifications?: number;
+	system_channel_flags?: number;
+	explicit_content_filter?: number;
+	public_updates_channel_id?: string;
+	afk_timeout?: number;
+	afk_channel_id?: string;
+	preferred_locale?: string;
+}
+
+export const GuildGetSchema = {
+	id: true,
+	name: true,
+	icon: true,
+	splash: true,
+	discovery_splash: true,
+	owner: true,
+	owner_id: true,
+	permissions: true,
+	region: true,
+	afk_channel_id: true,
+	afk_timeout: true,
+	widget_enabled: true,
+	widget_channel_id: true,
+	verification_level: true,
+	default_message_notifications: true,
+	explicit_content_filter: true,
+	roles: true,
+	emojis: true,
+	features: true,
+	mfa_level: true,
+	application_id: true,
+	system_channel_id: true,
+	system_channel_flags: true,
+	rules_channel_id: true,
+	joined_at: true,
+	// large: true,
+	// unavailable: true,
+	member_count: true,
+	// voice_states: true,
+	// members: true,
+	// channels: true,
+	// presences: true,
+	max_presences: true,
+	max_members: true,
+	vanity_url_code: true,
+	description: true,
+	banner: true,
+	premium_tier: true,
+	premium_subscription_count: true,
+	preferred_locale: true,
+	public_updates_channel_id: true,
+	max_video_channel_users: true,
+	approximate_member_count: true,
+	approximate_presence_count: true
+	// welcome_screen: true,
+};
+
+export const GuildTemplateCreateSchema = {
+	name: String,
+	$avatar: String
+};
+
+export interface GuildTemplateCreateSchema {
+	name: string;
+	avatar?: string;
+}
+
+export const GuildAddChannelToWelcomeScreenSchema = {
+	channel_id: String,
+	description: String,
+	$emoji_id: String,
+	emoji_name: String
+};
+
+export interface GuildAddChannelToWelcomeScreenSchema {
+	channel_id: string;
+	description: string;
+	emoji_id?: string;
+	emoji_name: string;
+}