diff --git a/README.md b/README.md index c19c85c..74f17ca 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,8 @@ GuildMember { roles: Snowflake[], joinedAt: Date | null, isBot?: boolean, - discriminator: string + discriminator?: string, + permissions?: string; } ``` @@ -139,16 +140,6 @@ memberactivities { } ``` -### Schema for channels - -```ts -Channels { - channel: string, - channelId: Snowflake, - last_update: Date -} -``` - ### Schema for token ```ts @@ -191,6 +182,7 @@ Channel { id: Snowflake, name?: string | null, parent_id?: string | null, + permissionOverwrites?: IOverwrite[] } ``` diff --git a/__tests__/unit/models/channel.model.test.ts b/__tests__/unit/models/channel.model.test.ts index 6235c9a..f6adbb8 100644 --- a/__tests__/unit/models/channel.model.test.ts +++ b/__tests__/unit/models/channel.model.test.ts @@ -9,6 +9,20 @@ describe('Channel model', () => { channelId: '123', name: 'channel1', parentId: 'admin', + permissionOverwrites: [ + { + id: '1122334455', // example Snowflake ID for the role or member + type: 0, + allow: 'VIEW_CHANNEL', + deny: 'SEND_MESSAGES', + }, + { + id: '9988776655', // another example Snowflake ID for the role or member + type: 1, + allow: 'VIEW_CHANNEL,SEND_MESSAGES', + deny: '', + }, + ], }; }); test('should correctly validate a valid Channel data', async () => { diff --git a/__tests__/unit/models/guildMember.model.test.ts b/__tests__/unit/models/guildMember.model.test.ts index 40385e9..32e940c 100644 --- a/__tests__/unit/models/guildMember.model.test.ts +++ b/__tests__/unit/models/guildMember.model.test.ts @@ -14,6 +14,7 @@ describe('guildMember model', () => { avatar: '100', isBot: true, discriminator: 'str', + permissions: '137411140513354n', }; }); test('should correctly validate a valid guildMember data', async () => { diff --git a/package.json b/package.json index 1a9d80a..f407a39 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@togethercrew.dev/db", - "version": "2.4.8", + "version": "2.4.9", "description": "All interactions with DB", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/src/interfaces/Channel.interface.ts b/src/interfaces/Channel.interface.ts index 9bbfb88..c2537e0 100644 --- a/src/interfaces/Channel.interface.ts +++ b/src/interfaces/Channel.interface.ts @@ -1,15 +1,24 @@ import { type Snowflake } from 'discord.js'; import { type Model } from 'mongoose'; +export interface IOverwrite { + id: Snowflake; // ID of the role or user this overwrite applies to + type: 0 | 1; // Specifies if this overwrite applies to a role(0) or a member(1) + allow: string; // Permissions allowed by this overwrite + deny: string; // Permissions denied by this overwrite +} + export interface IChannel { channelId: Snowflake; name?: string | null; parentId?: string | null; + permissionOverwrites?: IOverwrite[]; } export interface IChannelUpdateBody { name?: string | null; parentId?: string | null; + permissionOverwrites?: IOverwrite[]; } export interface ChannelModel extends Model { diff --git a/src/interfaces/GuildMember.interface.ts b/src/interfaces/GuildMember.interface.ts index 2cfee96..b3b5b90 100644 --- a/src/interfaces/GuildMember.interface.ts +++ b/src/interfaces/GuildMember.interface.ts @@ -9,6 +9,7 @@ export interface IGuildMember { joinedAt: Date | null; isBot?: boolean; discriminator: string; + permissions?: string; } export interface IGuildMemberUpdateBody { @@ -17,6 +18,7 @@ export interface IGuildMemberUpdateBody { roles?: Snowflake[]; discriminator?: string; joinedAt?: Date | null; + permissions?: string; } export interface GuildMemberModel extends Model { diff --git a/src/models/schemas/Channel.schema.ts b/src/models/schemas/Channel.schema.ts index 7c15e38..c893186 100644 --- a/src/models/schemas/Channel.schema.ts +++ b/src/models/schemas/Channel.schema.ts @@ -13,6 +13,17 @@ const channelSchema = new Schema({ parentId: { type: String, }, + permissionOverwrites: [ + { + id: String, // or use mongoose.Schema.Types.ObjectId if Snowflake is an ObjectId + type: { + type: Number, + enum: [0, 1], + }, + allow: String, + deny: String, + }, + ], }); // Plugins diff --git a/src/models/schemas/GuildMember.schema.ts b/src/models/schemas/GuildMember.schema.ts index 1889cd0..f89b178 100644 --- a/src/models/schemas/GuildMember.schema.ts +++ b/src/models/schemas/GuildMember.schema.ts @@ -27,6 +27,9 @@ const guildMemberSchema = new Schema({ discriminator: { type: String, }, + permissions: { + type: String, + }, }); // Plugins