51 lines
1.3 KiB
JavaScript
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);
|