const mongoose = require('mongoose').set('debug', false) const Schema = mongoose.Schema; const tools = require('../tools/general'); const { ObjectID, ObjectId } = require('mongodb'); mongoose.Promise = global.Promise; mongoose.level = "F"; // Resolving error Unknown modifier: $pushAll mongoose.plugin(schema => { schema.options.usePushEach = true }); const ISize = new Schema({ width: { type: String }, height: { type: String }, fit: { type: String }, }); const IFont = new Schema({ name: { type: String }, size: { type: String }, }); const IBorders = new Schema({ top: { type: String }, bottom: { type: String }, left: { type: String }, right: { type: String }, }) const IImg = new Schema({ imagefile: { type: String }, fit: { type: String }, }) const IText = new Schema( { contenuto: String, maxlength: Number, font: IFont, } ); const IDimensioni = new Schema({ size: ISize, margini: IBorders, padding: IBorders, imgsfondo: IImg, text_html: IText, }); const IAreaDiStampa = new Schema({ margini: IBorders, unit: String, format: [{ type: Number }], orientation: String, compress: Boolean, scale: Number, scalecanvas: Number, }); const IBarCode = new Schema( { show: Boolean, format: Number, size: ISize, font: IFont, } ); const IElementiScheda = new Schema({ pagina: IDimensioni, riga: IDimensioni, scheda_prodotto: IDimensioni, immagine_prodotto: IDimensioni, }); const scheletroScheda = { idapp: { type: String }, isTemplate: { type: Boolean }, name: { type: String }, line_height: { type: Number }, numschede_perRiga: { type: Number }, numschede_perCol: { type: Number }, show_separatore: { type: Boolean }, testo_right: IText, testo_bottom: IText, posiz_text: { type: Number }, barcode: IBarCode, dimensioni: IElementiScheda, productTypes: [{ type: Number }], excludeproductTypes: [{ type: Number }], editore: [{ type: String }], author: { type: String }, sort: { type: Number }, arrProdottiSpeciali: [{ type: String }], }; const MySchedaSchema = new Schema( scheletroScheda ); MySchedaSchema.statics.getFieldsForSearch = function () { return [{ field: 'name', type: tools.FieldType.string }] }; MySchedaSchema.statics.executeQueryTable = function (idapp, params, user) { params.fieldsearch = this.getFieldsForSearch(); return tools.executeQueryTable(this, idapp, params, user); }; MySchedaSchema.statics.findAllIdApp = async function (idapp) { const MyScheda = this; const myfind = { idapp }; return await MyScheda.find(myfind); }; const MyScheda = mongoose.model('MyScheda', MySchedaSchema); MyScheda.createIndexes((err) => { if (err) throw err; }); module.exports = { MyScheda, MySchedaSchema, IDimensioni, IImg, IText, IAreaDiStampa };