import { toOid } from "@/src/helpers/inventoryHelpers"; import { IOrbiter, IPersonalRooms, PersonalRoomsModelType } from "@/src/types/personalRoomsTypes"; import { IApartment, IGardening, IPlacedDecosDatabase } from "@/src/types/shipTypes"; import { Schema, model } from "mongoose"; const placedDecosSchema = new Schema( { Type: String, Pos: [Number], Rot: [Number] }, { id: false } ); placedDecosSchema.virtual("id").get(function (this: IPlacedDecosDatabase) { return toOid(this._id); }); placedDecosSchema.set("toJSON", { virtuals: true, transform(_document, returnedObject) { delete returnedObject._id; } }); const roomSchema = new Schema( { Name: String, MaxCapacity: Number, PlacedDecos: [placedDecosSchema] }, { _id: false } ); const gardeningSchema = new Schema({ Planters: [Schema.Types.Mixed] //TODO: add when implementing gardening }); const apartmentSchema = new Schema( { Rooms: [roomSchema], FavouriteLoadouts: [Schema.Types.Mixed], Gardening: gardeningSchema }, { _id: false } ); const orbiterSchema = new Schema( { Features: [String], Rooms: [roomSchema], ContentUrlSignature: String }, { _id: false } ); export const personalRoomsSchema = new Schema({ personalRoomsOwnerId: Schema.Types.ObjectId, activeShipId: Schema.Types.ObjectId, Ship: orbiterSchema, Apartment: apartmentSchema }); export const PersonalRooms = model("PersonalRooms", personalRoomsSchema);