construct Members in getGuild response from database

This commit is contained in:
Sainan 2025-03-10 13:57:09 +01:00
parent e8bd9e4ec4
commit 991068aad7
2 changed files with 42 additions and 8 deletions

View File

@ -5,6 +5,9 @@ import { getAccountIdForRequest } from "@/src/services/loginService";
import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers";
import { getGuildVault } from "@/src/services/guildService";
import { logger } from "@/src/utils/logger";
import { IGuildMemberClient } from "@/src/types/guildTypes";
import { Account } from "@/src/models/loginModel";
import { config } from "@/src/services/configService";
const getGuildController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req);
@ -25,20 +28,48 @@ const getGuildController: RequestHandler = async (req, res) => {
}
const guildMembers = await GuildMember.find({ guildId: inventory.GuildId });
// Handle clans created prior to creation of the GuildMember model.
const members: IGuildMemberClient[] = [];
let missingEntry = true;
for (const guildMember of guildMembers) {
const member: IGuildMemberClient = {
_id: toOid(guildMember.accountId),
Rank: guildMember.rank,
Status: guildMember.status
};
if (guildMember.accountId.equals(accountId)) {
missingEntry = false;
} else {
member.DisplayName = (await Account.findOne(
{
_id: guildMember.accountId
},
"DisplayName"
))!.DisplayName;
const inventory = (await Inventory.findOne(
{
accountOwnerId: guildMember.accountId
},
"PlayerLevel ActiveAvatarImageType"
))!;
member.PlayerLevel =
config.spoofMasteryRank == -1 ? inventory.PlayerLevel : config.spoofMasteryRank;
member.ActiveAvatarImageType = inventory.ActiveAvatarImageType;
}
members.push(member);
}
if (missingEntry) {
// Handle clans created prior to creation of the GuildMember model.
await GuildMember.insertOne({
accountId: accountId,
guildId: inventory.GuildId,
status: 0,
rank: 0
});
members.push({
_id: { $oid: accountId },
Status: 0,
Rank: 0
});
}
res.json({
@ -46,13 +77,7 @@ const getGuildController: RequestHandler = async (req, res) => {
Name: guild.Name,
MOTD: guild.MOTD,
LongMOTD: guild.LongMOTD,
Members: [
{
_id: { $oid: req.query.accountId },
Rank: 0,
Status: 0
}
],
Members: members,
Ranks: [
{
Name: "/Lotus/Language/Game/Rank_Creator",

View File

@ -42,6 +42,15 @@ export interface IGuildMemberDatabase {
rank: number;
}
export interface IGuildMemberClient {
_id: IOid;
Status: number;
Rank: number;
DisplayName?: string;
ActiveAvatarImageType?: string;
PlayerLevel?: number;
}
export interface IGuildVault {
DojoRefundRegularCredits?: number;
DojoRefundMiscItems?: IMiscItem[];