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 { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers";
import { getGuildVault } from "@/src/services/guildService"; import { getGuildVault } from "@/src/services/guildService";
import { logger } from "@/src/utils/logger"; 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 getGuildController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req); const accountId = await getAccountIdForRequest(req);
@ -25,20 +28,48 @@ const getGuildController: RequestHandler = async (req, res) => {
} }
const guildMembers = await GuildMember.find({ guildId: inventory.GuildId }); const guildMembers = await GuildMember.find({ guildId: inventory.GuildId });
// Handle clans created prior to creation of the GuildMember model. const members: IGuildMemberClient[] = [];
let missingEntry = true; let missingEntry = true;
for (const guildMember of guildMembers) { for (const guildMember of guildMembers) {
const member: IGuildMemberClient = {
_id: toOid(guildMember.accountId),
Rank: guildMember.rank,
Status: guildMember.status
};
if (guildMember.accountId.equals(accountId)) { if (guildMember.accountId.equals(accountId)) {
missingEntry = false; 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) { if (missingEntry) {
// Handle clans created prior to creation of the GuildMember model.
await GuildMember.insertOne({ await GuildMember.insertOne({
accountId: accountId, accountId: accountId,
guildId: inventory.GuildId, guildId: inventory.GuildId,
status: 0, status: 0,
rank: 0 rank: 0
}); });
members.push({
_id: { $oid: accountId },
Status: 0,
Rank: 0
});
} }
res.json({ res.json({
@ -46,13 +77,7 @@ const getGuildController: RequestHandler = async (req, res) => {
Name: guild.Name, Name: guild.Name,
MOTD: guild.MOTD, MOTD: guild.MOTD,
LongMOTD: guild.LongMOTD, LongMOTD: guild.LongMOTD,
Members: [ Members: members,
{
_id: { $oid: req.query.accountId },
Rank: 0,
Status: 0
}
],
Ranks: [ Ranks: [
{ {
Name: "/Lotus/Language/Game/Rank_Creator", Name: "/Lotus/Language/Game/Rank_Creator",

View File

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