add GuildMember model

This commit is contained in:
Sainan 2025-03-10 11:19:02 +01:00
parent b0b52ccabe
commit e8bd9e4ec4
5 changed files with 49 additions and 3 deletions

View File

@ -2,7 +2,7 @@ import { RequestHandler } from "express";
import { getAccountIdForRequest } from "@/src/services/loginService"; import { getAccountIdForRequest } from "@/src/services/loginService";
import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { getJSONfromString } from "@/src/helpers/stringHelpers";
import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { Inventory } from "@/src/models/inventoryModels/inventoryModel";
import { Guild } from "@/src/models/guildModel"; import { Guild, GuildMember } from "@/src/models/guildModel";
export const createGuildController: RequestHandler = async (req, res) => { export const createGuildController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req); const accountId = await getAccountIdForRequest(req);
@ -14,6 +14,14 @@ export const createGuildController: RequestHandler = async (req, res) => {
}); });
await guild.save(); await guild.save();
// Create guild member on database
await GuildMember.insertOne({
accountId: accountId,
guildId: guild._id,
status: 0,
rank: 0
});
// Update inventory // Update inventory
const inventory = await Inventory.findOne({ accountOwnerId: accountId }); const inventory = await Inventory.findOne({ accountOwnerId: accountId });
if (inventory) { if (inventory) {

View File

@ -1,6 +1,6 @@
import { RequestHandler } from "express"; import { RequestHandler } from "express";
import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { Inventory } from "@/src/models/inventoryModels/inventoryModel";
import { Guild } from "@/src/models/guildModel"; import { Guild, GuildMember } from "@/src/models/guildModel";
import { getAccountIdForRequest } from "@/src/services/loginService"; 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";
@ -23,6 +23,24 @@ const getGuildController: RequestHandler = async (req, res) => {
guild.CeremonyResetDate = undefined; guild.CeremonyResetDate = undefined;
await guild.save(); await guild.save();
} }
const guildMembers = await GuildMember.find({ guildId: inventory.GuildId });
// Handle clans created prior to creation of the GuildMember model.
let missingEntry = true;
for (const guildMember of guildMembers) {
if (guildMember.accountId.equals(accountId)) {
missingEntry = false;
}
}
if (missingEntry) {
await GuildMember.insertOne({
accountId: accountId,
guildId: inventory.GuildId,
status: 0,
rank: 0
});
}
res.json({ res.json({
_id: toOid(guild._id), _id: toOid(guild._id),
Name: guild.Name, Name: guild.Name,

View File

@ -7,11 +7,14 @@ import { Loadout } from "@/src/models/inventoryModels/loadoutModel";
import { PersonalRooms } from "@/src/models/personalRoomsModel"; import { PersonalRooms } from "@/src/models/personalRoomsModel";
import { Ship } from "@/src/models/shipModel"; import { Ship } from "@/src/models/shipModel";
import { Stats } from "@/src/models/statsModel"; import { Stats } from "@/src/models/statsModel";
import { GuildMember } from "@/src/models/guildModel";
export const deleteAccountController: RequestHandler = async (req, res) => { export const deleteAccountController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req); const accountId = await getAccountIdForRequest(req);
// TODO: Handle the account being the creator of a guild
await Promise.all([ await Promise.all([
Account.deleteOne({ _id: accountId }), Account.deleteOne({ _id: accountId }),
GuildMember.deleteOne({ accountId: accountId }),
Inbox.deleteMany({ ownerId: accountId }), Inbox.deleteMany({ ownerId: accountId }),
Inventory.deleteOne({ accountOwnerId: accountId }), Inventory.deleteOne({ accountOwnerId: accountId }),
Loadout.deleteOne({ loadoutOwnerId: accountId }), Loadout.deleteOne({ loadoutOwnerId: accountId }),

View File

@ -4,7 +4,8 @@ import {
ITechProjectDatabase, ITechProjectDatabase,
ITechProjectClient, ITechProjectClient,
IDojoDecoDatabase, IDojoDecoDatabase,
ILongMOTD ILongMOTD,
IGuildMemberDatabase
} from "@/src/types/guildTypes"; } from "@/src/types/guildTypes";
import { Document, Model, model, Schema, Types } from "mongoose"; import { Document, Model, model, Schema, Types } from "mongoose";
import { fusionTreasuresSchema, typeCountSchema } from "./inventoryModels/inventoryModel"; import { fusionTreasuresSchema, typeCountSchema } from "./inventoryModels/inventoryModel";
@ -113,3 +114,12 @@ export type TGuildDatabaseDocument = Document<unknown, {}, IGuildDatabase> &
keyof GuildDocumentProps keyof GuildDocumentProps
> & > &
GuildDocumentProps; GuildDocumentProps;
const guildMemberSchema = new Schema<IGuildMemberDatabase>({
accountId: Types.ObjectId,
guildId: Types.ObjectId,
status: { type: Number, required: true },
rank: { type: Number, default: 7 }
});
export const GuildMember = model<IGuildMemberDatabase>("GuildMember", guildMemberSchema);

View File

@ -35,6 +35,13 @@ export interface ILongMOTD {
//authorGuildName: ""; //authorGuildName: "";
} }
export interface IGuildMemberDatabase {
accountId: Types.ObjectId;
guildId: Types.ObjectId;
status: number;
rank: number;
}
export interface IGuildVault { export interface IGuildVault {
DojoRefundRegularCredits?: number; DojoRefundRegularCredits?: number;
DojoRefundMiscItems?: IMiscItem[]; DojoRefundMiscItems?: IMiscItem[];