SpaceNinjaServer/src/models/shipModel.ts
7f8ddd a931863249
Fix interface names, +genericUpdate (#51)
Co-authored-by: nk <nk@fbi.rocks>
Co-authored-by: Ordis <134585663+OrdisPrime@users.noreply.github.com>
2023-09-05 14:37:30 +02:00

54 lines
1.3 KiB
TypeScript

import { Schema, model } from "mongoose";
import { IShip } from "../types/shipTypes";
import { IOid } from "../types/commonTypes";
const roomSchema = new Schema(
{
Name: String,
MaxCapacity: Number
},
{ _id: false }
);
const shipSchema = new Schema({
Rooms: [roomSchema],
Features: [String],
ContentUrlSignature: String
});
shipSchema.set("toJSON", {
transform(_document, returnedObject) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
returnedObject.ShipId = { $oid: returnedObject._id.toString() } satisfies IOid;
delete returnedObject._id;
}
});
const apartmentSchema = new Schema({
Rooms: [roomSchema],
FavouriteLoadouts: [Schema.Types.Mixed]
});
apartmentSchema.set("toJSON", {
transform(_document, returnedObject) {
delete returnedObject._id;
}
});
const shipDatabaseSchema = new Schema({
ShipOwnerId: Schema.Types.ObjectId,
Ship: shipSchema,
Apartment: apartmentSchema
});
shipDatabaseSchema.set("toJSON", {
transform(_document, returnedObject) {
delete returnedObject._id;
delete returnedObject.__v;
}
});
const Ship = model<IShip>("Ship", shipDatabaseSchema);
export { Ship };