Send user and roles id array in GET /guilds/:id/members/:id

This commit is contained in:
Madeline 2023-06-11 00:27:38 +10:00
parent e545edad94
commit 6e47b8e0b3
No known key found for this signature in database
GPG Key ID: 1958E017C36F2E47
5 changed files with 4273 additions and 34 deletions

View File

@ -7235,6 +7235,55 @@
"$ref": "#/components/schemas/Member" "$ref": "#/components/schemas/Member"
} }
}, },
"APIPublicMember": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"guild_id": {
"type": "string"
},
"nick": {
"type": "string"
},
"joined_at": {
"type": "string",
"format": "date-time"
},
"pending": {
"type": "boolean"
},
"deaf": {
"type": "boolean"
},
"mute": {
"type": "boolean"
},
"premium_since": {
"type": "integer"
},
"user": {
"$ref": "#/components/schemas/PublicUser"
},
"roles": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"deaf",
"guild_id",
"id",
"joined_at",
"mute",
"pending",
"roles",
"user"
]
},
"APIGuildWithJoinedAt": { "APIGuildWithJoinedAt": {
"type": "object", "type": "object",
"properties": { "properties": {
@ -12467,7 +12516,7 @@
"content": { "content": {
"application/json": { "application/json": {
"schema": { "schema": {
"$ref": "#/components/schemas/Member" "$ref": "#/components/schemas/APIPublicMember"
} }
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -34,9 +34,7 @@ const settings = {
noExtraProps: true, noExtraProps: true,
defaultProps: false, defaultProps: false,
}; };
const compilerOptions = {
strictNullChecks: true,
};
const Excluded = [ const Excluded = [
"DefaultSchema", "DefaultSchema",
"Schema", "Schema",
@ -61,14 +59,6 @@ const Excluded = [
"TransportMakeRequestResponse", "TransportMakeRequestResponse",
]; ];
function modify(obj) {
for (var k in obj) {
if (typeof obj[k] === "object" && obj[k] !== null) {
modify(obj[k]);
}
}
}
function main() { function main() {
const program = TJS.programFromConfig( const program = TJS.programFromConfig(
path.join(__dirname, "..", "tsconfig.json"), path.join(__dirname, "..", "tsconfig.json"),
@ -111,32 +101,12 @@ function main() {
delete part.properties[key]; delete part.properties[key];
continue; 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 } }; definitions = { ...definitions, [name]: { ...part } };
} }
//modify(definitions);
fs.writeFileSync(schemaPath, JSON.stringify(definitions, null, 4)); fs.writeFileSync(schemaPath, JSON.stringify(definitions, null, 4));
} }

View File

@ -27,6 +27,8 @@ import {
handleFile, handleFile,
Member, Member,
MemberChangeSchema, MemberChangeSchema,
PublicMemberProjection,
PublicUserProjection,
Role, Role,
Sticker, Sticker,
} from "@spacebar/util"; } from "@spacebar/util";
@ -39,7 +41,7 @@ router.get(
route({ route({
responses: { responses: {
200: { 200: {
body: "Member", body: "APIPublicMember",
}, },
403: { 403: {
body: "APIErrorResponse", body: "APIErrorResponse",
@ -55,9 +57,28 @@ router.get(
const member = await Member.findOneOrFail({ const member = await Member.findOneOrFail({
where: { id: member_id, guild_id }, 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),
});
}, },
); );

View File

@ -11,6 +11,7 @@ import {
Member, Member,
Message, Message,
PrivateUser, PrivateUser,
PublicMember,
PublicUser, PublicUser,
Role, Role,
Sticker, Sticker,
@ -68,6 +69,7 @@ export type APIChannelArray = Channel[];
export type APIEmojiArray = Emoji[]; export type APIEmojiArray = Emoji[];
export type APIMemberArray = Member[]; export type APIMemberArray = Member[];
export type APIPublicMember = PublicMember;
export interface APIGuildWithJoinedAt extends Guild { export interface APIGuildWithJoinedAt extends Guild {
joined_at: string; joined_at: string;