Files
freeplanet_serverside/src/server/models/t_web_statiprodotto.js

63 lines
1.6 KiB
JavaScript
Raw Normal View History

const mongoose = require('mongoose');
const { Schema } = mongoose;
mongoose.Promise = global.Promise;
mongoose.level = "F";
/**
* @typedef {Object} StatoProdotto
* @property {bigint} Id
* @property {number} IdStatoProdotto
* @property {string} Descrizione
* @property {Date} DataOra
* @property {boolean} Enabled
* @property {boolean} EnabledAlFresco
*/
const StatoProdottoSchema = new Schema({
IdStatoProdotto: Number,
Descrizione: { type: String, maxlength: 100 },
DataOra: Date,
Enabled: Boolean,
EnabledAlFresco: Boolean
}, { collection: 't_web_statiprodottos' });
const T_WEB_StatiProdotto = module.exports = mongoose.model('T_WEB_StatiProdotto', StatoProdottoSchema);
module.exports.findAllIdApp = async function () {
const myfind = {};
const myquery = [
2025-04-22 18:30:48 +02:00
{
$sort: { DataOra: -1 } // Prima ordina per DataOra in modo decrescente
},
{
$group: {
2025-04-22 18:30:48 +02:00
_id: "$IdStatoProdotto", // Raggruppa per IdStatoProdotto
latestRecord: { $first: "$$ROOT" } // Prendi il primo record per ogni gruppo (cioè il più recente)
}
},
{
$lookup: {
from: 't_web_statiprodottos',
2025-04-22 18:30:48 +02:00
localField: '_id', // Usa _id che è l'IdStatoProdotto
foreignField: 'IdStatoProdotto',
as: 'record'
}
},
{
2025-04-22 18:30:48 +02:00
$replaceRoot: { newRoot: { $arrayElemAt: ["$record", 0] } } // Estrai il primo (e unico) record dal risultato di $lookup
},
{
2025-04-22 18:30:48 +02:00
$sort: { IdStatoProdotto: 1 } // Ordina per IdStatoProdotto, se necessario
}
];
2025-04-22 18:30:48 +02:00
const rec = await T_WEB_StatiProdotto.aggregate(myquery);
return rec;
};