Files
freeplanet_serverside/src/server/populate/populate.js
2022-02-14 19:35:11 +01:00

185 lines
4.8 KiB
JavaScript

const tools = require('../tools/general');
const Path = require('path')
module.exports = {
async insertIntoDb(tablename, table) {
try {
const pathfile = Path.join(__dirname, tablename + '.js');
if (tools.isFileExists(pathfile)) {
const mydbfile = require(pathfile);
if (mydbfile && mydbfile.list) {
return table.insertMany(mydbfile.list, {ordered: false}).
then((ris) => {
console.log('Populate table ', tablename);
return !!ris;
});
}
}
}catch (e){
console.log('error insertIntoDb', e);
}
},
async insertIntoDb_NoDuplicate(attiva, tablename, table, field) {
let numrec = 0;
try {
if (!attiva && await table.countDocuments({}) > 0)
return;
const pathfile = Path.join(__dirname, tablename + '.js');
if (tools.isFileExists(pathfile)) {
const mydbfile = require(pathfile);
if (mydbfile && mydbfile.list) {
for (const rec of mydbfile.list) {
let obj = {}
obj[field] = rec[field];
var mynewrec = new table(rec);
if (rec.hasOwnProperty('idapp')) {
obj.idapop = rec['idapp'];
}
const exist = await table.find(obj);
if (exist.length <= 0) {
try {
const ris = await mynewrec.save();
if (ris) {
numrec++;
}
}catch (e){
console.log('error ', e);
}
//await table.insertMany(rec, {ordered: false});
}
}
if (numrec > 0)
console.log('*** Insert', numrec, 'record on '+tablename);
}
}
}catch (e){
console.log('error insertIntoDb', e);
}
},
async rewriteTable(table) {
let mytab = null;
let field = '';
const {City} = require('../models/city');
const {Province} = require('../models/province');
const {Sector} = require('../models/sector');
const {Skill} = require('../models/skill');
const {SubSkill} = require('../models/subskill');
const {Contribtype} = require('../models/contribtype');
const {Level} = require('../models/level');
if (table === 'cities') {
mytab = City;
field = 'comune';
} else if (table === 'provinces') {
mytab = Province;
field = 'descr';
} else if (table === 'sectors') {
mytab = Sector;
field = 'descr';
} else if (table === 'skills') {
mytab = Skill;
field = 'descr';
} else if (table === 'subskills') {
mytab = SubSkill;
field = 'descr';
} else if (table === 'contribtypes') {
mytab = Contribtype;
field = 'label';
} else if (table === 'levels') {
mytab = Level;
field = 'descr';
}
if (mytab) {
console.log('Delete ', table)
await mytab.deleteMany({});
await this.insertIntoDb_NoDuplicate(false, table, mytab, field)
}
return true;
},
async popolaTabelleNuove() {
const abilita = true;
const scrivi_citta = false;
let ris = null;
try {
const {City} = require('../models/city');
const {Province} = require('../models/province');
console.log('INIZIO - popolaTabelleNuove')
// Sectors
const {Sector} = require('../models/sector');
await this.insertIntoDb_NoDuplicate(abilita, 'sectors', Sector, 'descr')
// CatGrps
const {CatGrp} = require('../models/catgrp');
await this.insertIntoDb_NoDuplicate(abilita, 'catgrps', CatGrp, 'descr')
// Skills (Competenze)
const {Skill} = require('../models/skill');
await this.insertIntoDb_NoDuplicate(abilita, 'skills', Skill, 'descr')
// SubSectors
const {SubSkill} = require('../models/subskill');
await this.insertIntoDb_NoDuplicate(abilita, 'subskills', SubSkill, 'descr')
// Levels
const {Level} = require('../models/level');
await this.insertIntoDb_NoDuplicate(abilita, 'levels', Level, 'descr')
// Status
const {StatusSkill} = require('../models/statusSkill');
await this.insertIntoDb_NoDuplicate(abilita, 'statusskills', StatusSkill, 'descr')
// Cities
await this.insertIntoDb_NoDuplicate(scrivi_citta, 'cities', City, 'comune')
// Province
await this.insertIntoDb_NoDuplicate(scrivi_citta, 'provinces', Province, 'descr')
console.log('FINE - Scrivo le Città')
// Contribtypes
const {Contribtype} = require('../models/contribtype');
await this.insertIntoDb_NoDuplicate(false, 'contribtypes', Contribtype, 'label')
const {AdType} = require('../models/adtype');
await this.insertIntoDb_NoDuplicate(abilita, 'adtypes', AdType, 'descr')
console.log('FINE - popolaTabelleNuove')
}catch (e) {
console.error('Err: ' + e);
}
},
};