XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
UTF-8
import { model, Schema, Types } from "mongoose";
import type { IPendingTradeDatabase, ITradeOffer } from "../types/tradingTypes.ts";

const tradeOfferSchema = new Schema<ITradeOffer>(
    {
        RandomUpgrades: Schema.Types.Mixed,
        Upgrades: Schema.Types.Mixed,
        RawUpgrades: Schema.Types.Mixed,
        MiscItems: Schema.Types.Mixed,
        Recipes: Schema.Types.Mixed,
        LongGuns: Schema.Types.Mixed,
        Pistols: Schema.Types.Mixed,
        Melee: Schema.Types.Mixed,
        FusionTreasures: Schema.Types.Mixed,
        NemesisHistory: Schema.Types.Mixed,
        PremiumCredits: Number,
        _SlotOrderInfo: { type: [String] }
    },
    { _id: false }
);
const defaultTradeOffer: ITradeOffer = { _SlotOrderInfo: ["", "", "", "", "", ""] };

const pendingTradeSchema = new Schema<IPendingTradeDatabase>({
    a: { type: Types.ObjectId, required: true },
    b: { type: Types.ObjectId, required: true },
    aOffer: { type: tradeOfferSchema, default: defaultTradeOffer },
    bOffer: { type: tradeOfferSchema, default: defaultTradeOffer },
    aReady: { type: Boolean, default: false },
    bReady: { type: Boolean, default: false },
    aAccepted: { type: Boolean, default: false },
    bAccepted: { type: Boolean, default: false },
    revision: { type: Number, default: 0 },
    clanTax: { type: Number, required: true }
});

pendingTradeSchema.index({ a: 1, b: 1 }, { unique: true });

export const PendingTrade = model<IPendingTradeDatabase>("PendingTrade", pendingTradeSchema);