182 lines
4.1 KiB
JavaScript
Executable File
182 lines
4.1 KiB
JavaScript
Executable File
const mongoose = require('mongoose').set('debug', false)
|
|
const Schema = mongoose.Schema;
|
|
|
|
const tools = require('../tools/general');
|
|
|
|
const { ObjectID } = require('mongodb');
|
|
|
|
mongoose.Promise = global.Promise;
|
|
mongoose.level = "F";
|
|
|
|
|
|
// Resolving error Unknown modifier: $pushAll
|
|
mongoose.plugin(schema => {
|
|
schema.options.usePushEach = true
|
|
});
|
|
|
|
const SettingsSchema = new Schema({
|
|
idapp: {
|
|
type: String,
|
|
},
|
|
key: {
|
|
type: String,
|
|
},
|
|
type: {
|
|
type: Number,
|
|
},
|
|
value_str: {
|
|
type: String,
|
|
},
|
|
value_date: {
|
|
type: Date,
|
|
},
|
|
value_num: {
|
|
type: Number,
|
|
},
|
|
value_bool: {
|
|
type: Boolean,
|
|
},
|
|
serv: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
crypted: {
|
|
type: Boolean,
|
|
default: false
|
|
}
|
|
});
|
|
|
|
SettingsSchema.statics.getFieldsForSearch = function () {
|
|
return [{ field: 'key', type: tools.FieldType.string },
|
|
{ field: 'value_str', type: tools.FieldType.string }, { field: 'value_num', type: tools.FieldType.number }]
|
|
};
|
|
|
|
SettingsSchema.statics.executeQueryTable = function (idapp, params) {
|
|
params.fieldsearch = this.getFieldsForSearch();
|
|
return tools.executeQueryTable(this, idapp, params);
|
|
};
|
|
|
|
SettingsSchema.statics.getValDbSettings = function (idapp, key, def) {
|
|
return Settings.findOne({ idapp, key })
|
|
.then((myrec) => {
|
|
// console.log('getValDbSettings', myrec, 'idapp', idapp);
|
|
if (!!myrec) {
|
|
if (myrec.type === tools.FieldType.date)
|
|
return myrec.value_date;
|
|
else if ((myrec.type === tools.FieldType.number) || (myrec.type === tools.FieldType.hours))
|
|
return myrec.value_num;
|
|
else if (myrec.type === tools.FieldType.boolean)
|
|
return myrec.value_bool;
|
|
else if (myrec.type === tools.FieldType.crypted)
|
|
return tools.decryptdata(myrec.value_str);
|
|
else
|
|
return myrec.value_str;
|
|
} else {
|
|
return def
|
|
}
|
|
|
|
}).catch((err) => {
|
|
console.error('getValDbSettings', err);
|
|
return def;
|
|
});
|
|
|
|
};
|
|
|
|
SettingsSchema.statics.DuplicateAllRecords = async function (idapporig, idappdest) {
|
|
|
|
return tools.DuplicateAllRecords(this, idapporig, idappdest);
|
|
|
|
};
|
|
|
|
SettingsSchema.statics.findAllIdApp = async function (idapp, serv, crypted = false) {
|
|
const Settings = this;
|
|
|
|
try {
|
|
let myfind = '';
|
|
if (serv) {
|
|
myfind = {idapp, serv};
|
|
} else
|
|
myfind = {idapp};
|
|
|
|
// myfind = {...myfind, $or: [{ crypted: { $exists: false } }, { crypted: { $exists: true, $eq: crypted } }]};
|
|
|
|
const arrorig = await Settings.find(myfind).lean();
|
|
|
|
let myarr = []
|
|
|
|
if (!crypted) {
|
|
for (let rec of arrorig) {
|
|
if (rec.crypted) {
|
|
rec.value_str = ''
|
|
}
|
|
myarr.push({...rec});
|
|
}
|
|
} else {
|
|
myarr = [...arrorig];
|
|
}
|
|
|
|
return myarr;
|
|
}catch (e) {
|
|
console.error('Settings: findAllIdApp', e);
|
|
return null;
|
|
}
|
|
|
|
};
|
|
|
|
SettingsSchema.statics.setKeyNum = async function (idapp, key, value) {
|
|
const Settings = this;
|
|
|
|
let myrec = await Settings.findOne({ idapp, key });
|
|
if (!myrec) {
|
|
myrec = new Settings({ key });
|
|
myrec._id = new ObjectID();
|
|
myrec.idapp = idapp;
|
|
myrec.type = tools.FieldType.number;
|
|
myrec.value_num = value;
|
|
|
|
return await myrec.save();
|
|
} else {
|
|
myrec = await Settings.findOneAndUpdate({ idapp, key }, { $set: { value_num: value } }, { new: false });
|
|
}
|
|
|
|
return myrec
|
|
|
|
};
|
|
|
|
SettingsSchema.statics.setBool = async function (idapp, key, valbool) {
|
|
const Settings = this;
|
|
|
|
let myrec = await Settings.findOne({ idapp, key });
|
|
if (!myrec) {
|
|
myrec = new Settings({ key });
|
|
myrec._id = new ObjectID();
|
|
myrec.idapp = idapp;
|
|
myrec.type = tools.FieldType.boolean;
|
|
myrec.value_bool = valbool;
|
|
|
|
return await myrec.save();
|
|
} else {
|
|
myrec = await Settings.findOneAndUpdate({ idapp, key }, { $set: { value_bool: valbool } }, { new: false });
|
|
}
|
|
|
|
return myrec
|
|
|
|
};
|
|
|
|
|
|
SettingsSchema.statics.getKeyNum = async function (idapp, key, mydefault) {
|
|
const Settings = this;
|
|
|
|
const ret = await Settings.findOne({ idapp, key });
|
|
if (!!ret) {
|
|
return ret.value_num;
|
|
} else {
|
|
return mydefault;
|
|
}
|
|
|
|
};
|
|
|
|
const Settings = mongoose.model('Settings', SettingsSchema);
|
|
|
|
module.exports = { Settings };
|