This repository has been archived on 2026-10-08. You can view files and clone it, but cannot push or open issues or pull requests.
allotment/packages/server/db/models/History.schema.js

51 lines
1.3 KiB
JavaScript

import mongoose from "mongoose";
const powerSampleSchema = new mongoose.Schema(
{
battery: {
voltage: { type: Number, default: null },
current: { type: Number, default: null },
percent: { type: Number, default: null },
},
solar: {
voltage: { type: Number, default: null },
current: { type: Number, default: null },
},
load: {
voltage: { type: Number, default: null },
current: { type: Number, default: null },
},
},
{ _id: false },
);
const patchSampleSchema = new mongoose.Schema(
{
patchId: { type: String, required: true },
deviceId: {
type: mongoose.Schema.Types.ObjectId,
ref: "Device",
required: true,
},
soilTemperature: { type: Number, default: null },
soilHumidity: { type: Number, default: null },
},
{ _id: false },
);
const historySchema = new mongoose.Schema(
{
sampledAt: { type: Date, required: true, index: true },
waterTank: {
level: { type: Number, default: null },
},
power: { type: powerSampleSchema, default: undefined },
patches: { type: [patchSampleSchema], default: [] },
},
{ timestamps: false },
);
historySchema.index({ sampledAt: 1, "patches.patchId": 1 });
export const History = mongoose.model("History", historySchema);