fix(guild): use guild id for members endpoint

This commit is contained in:
Axel Cocat 2022-03-17 00:26:09 +01:00
parent 4af6e7e8d0
commit c251b8de27
5 changed files with 21 additions and 8 deletions

4
package-lock.json generated
View file

@ -1,12 +1,12 @@
{ {
"name": "azerothcore-armory", "name": "azerothcore-armory",
"version": "0.13.1", "version": "0.13.2",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "azerothcore-armory", "name": "azerothcore-armory",
"version": "0.13.1", "version": "0.13.2",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@supercharge/promise-pool": "^2.1.0", "@supercharge/promise-pool": "^2.1.0",

View file

@ -1,6 +1,6 @@
{ {
"name": "azerothcore-armory", "name": "azerothcore-armory",
"version": "0.13.1", "version": "0.13.2",
"description": "", "description": "",
"scripts": { "scripts": {
"build": "tsc -p tsconfig.json", "build": "tsc -p tsconfig.json",

View file

@ -151,7 +151,7 @@ export class Armory {
const guildsController = new GuildController(this); const guildsController = new GuildController(this);
app.get("/guild/:realm/:name", this.wrapRoute(guildsController.guild.bind(guildsController))); app.get("/guild/:realm/:name", this.wrapRoute(guildsController.guild.bind(guildsController)));
app.get("/guild/:realm/:name/members", this.wrapRoute(guildsController.members.bind(guildsController))); app.get("/guild/:realm/:guild/members", this.wrapRoute(guildsController.members.bind(guildsController)));
app.use((err, req: express.Request, res: express.Response, next: express.NextFunction) => { app.use((err, req: express.Request, res: express.Response, next: express.NextFunction) => {
// Error handler // Error handler

View file

@ -44,7 +44,7 @@ export class GuildController {
public async members(req: express.Request, res: express.Response, next: express.NextFunction): Promise<void> { public async members(req: express.Request, res: express.Response, next: express.NextFunction): Promise<void> {
const realmName = req.params.realm; const realmName = req.params.realm;
const guildName = req.params.name; const guildId = parseInt(req.params.guild);
const realm = this.armory.getRealm(realmName); const realm = this.armory.getRealm(realmName);
if (realm === undefined) { if (realm === undefined) {
@ -52,8 +52,7 @@ export class GuildController {
return next(404); return next(404);
} }
const guildId = await this.getGuildId(realm, guildName); if (isNaN(guildId) || !(await this.guildExists(realm, guildId))) {
if (guildId === null) {
// Could not find guild // Could not find guild
return next(404); return next(404);
} }
@ -155,6 +154,20 @@ export class GuildController {
return rows[0].guildid; return rows[0].guildid;
} }
private async guildExists(realm: IRealmConfig, id: number): Promise<boolean> {
const db = this.armory.getCharactersDb(realm.name);
const [rows, fields] = await db.query({
sql: `
SELECT guildid
FROM guild WHERE guildid
`,
values: [id],
timeout: this.armory.config.dbQueryTimeout,
});
return (rows as RowDataPacket[]).length !== 0;
}
private async getGuildRanks(realm: IRealmConfig, id: number): Promise<IGuildRank[]> { private async getGuildRanks(realm: IRealmConfig, id: number): Promise<IGuildRank[]> {
const db = this.armory.getCharactersDb(realm.name); const db = this.armory.getCharactersDb(realm.name);
const [rows, fields] = await db.query({ const [rows, fields] = await db.query({

View file

@ -66,7 +66,7 @@
serverSide: true, serverSide: true,
searchDelay: 800, searchDelay: 800,
ajax: { ajax: {
url: `{{websiteRoot}}/guild/{{realm}}/{{name}}/members`, url: `{{websiteRoot}}/guild/{{realm}}/{{id}}/members`,
}, },
columnDefs: [ columnDefs: [
{ {