From 6e47b8e0b345ed064b5bdd8e16bd4d48ca9c9cd8 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sun, 11 Jun 2023 00:27:38 +1000 Subject: [PATCH] Send user and roles id array in GET /guilds/:id/members/:id --- assets/openapi.json | Bin 564698 -> 566263 bytes assets/schemas.json | Bin 17946220 -> 18087810 bytes scripts/schema.js | 32 +----------------- .../#guild_id/members/#member_id/index.ts | 25 ++++++++++++-- src/util/schemas/responses/TypedResponses.ts | 2 ++ 5 files changed, 26 insertions(+), 33 deletions(-) diff --git a/assets/openapi.json b/assets/openapi.json index 4d285cb17acfa5088a33b7ab4af9a4729e1b14cd..8ff48eee12cc58dd252d553bdce6993fd75545df 100644 GIT binary patch delta 206 zcmV;<05SjCyCV0;B7lSegaWh!S;q!Ybz*F3W0$cm0b`fIiUC`bKpY8^&l*{iP}u~R zJedMomrgPPla~iH0b!R&GXcMo;LQz_|Gg!X5P~(Auu}m)m*2n#Ad(6hmvEQ@v6CRO zN0+Fa0alkzG64#fIsq4xaAE|PAe{jimsC0dJeROK0W_EJr~?RxUdIE6UdIHtUdIIw zsFx1Z1PPZQ#{(Fb;2;DLw?H%n+5@*RUD;#H*n4U0+Szvm=A{PJc0m5vT rShm|IvI#Iwe~`(RHND^;tJd~_GL~FMkW#kxSG6F_zWr4#2d^3cx#J_| diff --git a/assets/schemas.json b/assets/schemas.json index 919d498118c14c820840c8391851c85d83fc3c48..95bc39fae45472e5485c455ebe4abae2126a2452 100644 GIT binary patch delta 897 zcmYk!Wl)r16o%n}bzv8A*%d@UMa1qx>~2NuuC)aVJ5~kpR_s+*eX+4yvBko`#O_uw zvB2&)-;6)}aosa#=FIbY^C?60pNobloNz`*CiJ-AiUA{TWX7E=nDD@ig{*kuMK-+2 zjt{>0k%OG%!k^p(kcU9>l8^ippdf`POc9DwjN+7_B&8@#8OjnwIf5xq1u9aB%2c5$ z)u>JlYEp~Z)S)i*s80hL(ul@{(1cK$(v0S`pe3znO&i+Mj`nn*Bc13>7rJ7l8{O$a zPkPatKJ+DwaQe}o0Ssgi5e#MsLm9?!Mlh05jAjfr#xjoaL=wdWqL~OxVlpvIVJg#@ z&J1QU3p=x!!(1H9V?GN|#Ile@EM^HyS;lhWSiwqGv6?lkWgY9;z(zK)nJsK(8}V#s z2RqrtZuYR3eI&4-103WKhe_lJM>)oEk~qOhPH~zuoF$oaoaX`;xx{6zaFuIZ=LR>q z#cl3zmwVjj0S|dZ%C6K%n@h9d-TR02P%Gkep2{!SqmcR$o70dhncZSY1 z{X65|AM#Pw#qNH}I)8*bCmGBt&h)jR%CIMdE9*e_097N+U{Vo@eY_nZ7C&{tuJ=@t zV*^}eSZ7fgA@VXIJr#RBvrWugob%V@z^v6;X9>a%{Cx`P3kL zf*}T5s(37(h^OM2crIRuH1Sfr60gM@@m8dZ4Dn997azn&@kx9ZU&L4OO?($W#82@{ z{1$(vV{@_#EzVkWS~6+TYjM%ys>PtisKrf7W-abovS=}B@z7#+O2lSydePx8V8NvN delta 676 zcmWl}d3X+V007|Uo87Y+t8|bYMM?*il%mrSNlG=H3YE|yVX~RGrpQr7QI34lF`^dT z6J?zgl}f0d=&&gYrGww^kM}J-ur9NvqB^rgLW(+4rAe0|QdKX;o_zH+P~Z@U zI!r@{JHnBU(nw=RYvLG9HPc)R$2v|+tsJkl6P&1xlbq}nr)sO6)12-M?VYKEvz)D? zbDXP_&dzhb3tZ?T7we*{Zo0cf4?SI~m&^2axjwFNrM|9mwQCgW=UUgf-VJValm2dY zivb22baG#Mz8Lh||_ZzENiE&De#{(WzW`c)2Y@$gX zG1(MTP4lS7OjmA(nI89qS!R3EQ|6d!p81}(K+;0bSmasHdEN^uEVjgpmRjZ|FRS#5 zVQk&k_1t#v;2ne{gK+!wyI(O16qjZMC_ z*%n)U=ljYZii^t1lRpOAg6+Xi!Oy`j!LPxNpeCpdb_Tx%zX!X5-N7HhpTVABZ?G@; zEBHIuAN&*i8~hji9~_uio=i*$VkxmYvD8>vEIpPH%Zz2kvST^1y0P3?UaVd$KUP21 NAW>DGEJ)NA9t0HkP=f#f diff --git a/scripts/schema.js b/scripts/schema.js index b4393558..ff3280ac 100644 --- a/scripts/schema.js +++ b/scripts/schema.js @@ -34,9 +34,7 @@ const settings = { noExtraProps: true, defaultProps: false, }; -const compilerOptions = { - strictNullChecks: true, -}; + const Excluded = [ "DefaultSchema", "Schema", @@ -61,14 +59,6 @@ const Excluded = [ "TransportMakeRequestResponse", ]; -function modify(obj) { - for (var k in obj) { - if (typeof obj[k] === "object" && obj[k] !== null) { - modify(obj[k]); - } - } -} - function main() { const program = TJS.programFromConfig( path.join(__dirname, "..", "tsconfig.json"), @@ -111,32 +101,12 @@ function main() { delete part.properties[key]; continue; } - - // if (part.properties[key].anyOf) { - // const nullIndex = part.properties[key].anyOf.findIndex( - // (x) => x.type == "null", - // ); - // if (nullIndex != -1) { - // part.properties[key].nullable = true; - // part.properties[key].anyOf.splice(nullIndex, 1); - - // if (part.properties[key].anyOf.length == 1) { - // Object.assign( - // part.properties[key], - // part.properties[key].anyOf[0], - // ); - // delete part.properties[key].anyOf; - // } - // } - // } } } definitions = { ...definitions, [name]: { ...part } }; } - //modify(definitions); - fs.writeFileSync(schemaPath, JSON.stringify(definitions, null, 4)); } diff --git a/src/api/routes/guilds/#guild_id/members/#member_id/index.ts b/src/api/routes/guilds/#guild_id/members/#member_id/index.ts index 5f1f6fa7..cafb922e 100644 --- a/src/api/routes/guilds/#guild_id/members/#member_id/index.ts +++ b/src/api/routes/guilds/#guild_id/members/#member_id/index.ts @@ -27,6 +27,8 @@ import { handleFile, Member, MemberChangeSchema, + PublicMemberProjection, + PublicUserProjection, Role, Sticker, } from "@spacebar/util"; @@ -39,7 +41,7 @@ router.get( route({ responses: { 200: { - body: "Member", + body: "APIPublicMember", }, 403: { body: "APIErrorResponse", @@ -55,9 +57,28 @@ router.get( const member = await Member.findOneOrFail({ where: { id: member_id, guild_id }, + relations: ["roles", "user"], + select: { + index: true, + // only grab public member props + ...Object.fromEntries( + PublicMemberProjection.map((x) => [x, true]), + ), + // and public user props + user: Object.fromEntries( + PublicUserProjection.map((x) => [x, true]), + ), + roles: { + id: true, + }, + }, }); - return res.json(member); + return res.json({ + ...member.toPublicMember(), + user: member.user.toPublicUser(), + roles: member.roles.map((x) => x.id), + }); }, ); diff --git a/src/util/schemas/responses/TypedResponses.ts b/src/util/schemas/responses/TypedResponses.ts index 099efba3..4349b93c 100644 --- a/src/util/schemas/responses/TypedResponses.ts +++ b/src/util/schemas/responses/TypedResponses.ts @@ -11,6 +11,7 @@ import { Member, Message, PrivateUser, + PublicMember, PublicUser, Role, Sticker, @@ -68,6 +69,7 @@ export type APIChannelArray = Channel[]; export type APIEmojiArray = Emoji[]; export type APIMemberArray = Member[]; +export type APIPublicMember = PublicMember; export interface APIGuildWithJoinedAt extends Guild { joined_at: string;