feat(services-insert): initial commit
This commit is contained in:
parent
5246a2b0ee
commit
47b344a62e
|
@ -0,0 +1 @@
|
|||
insert data into PostgreSQL services table
|
|
@ -0,0 +1 @@
|
|||
.env*
|
|
@ -0,0 +1,59 @@
|
|||
require('dotenv').config();
|
||||
const debug=require('debug')('debug');
|
||||
|
||||
const calendarAll = require('./service/calendar-all');
|
||||
const serviceAvailability = require('./service/service-availability');
|
||||
|
||||
run().catch(err => {
|
||||
debug('run: error');
|
||||
console.log(err)
|
||||
});
|
||||
|
||||
async function run() {
|
||||
debug('run: started...');
|
||||
let rsp = null;
|
||||
try {
|
||||
//array of object {service_id:string}
|
||||
rsp = await calendarAll.get(1, 1);
|
||||
} catch (err) {
|
||||
console.error(`ERROR: run: Error while getting calendar with oset and linit `, err.message);
|
||||
}
|
||||
|
||||
if ( !Object.prototype.toString.call(rsp) === '[object Array]') {
|
||||
debug('ERROR: run: NO Array!');
|
||||
return;
|
||||
}
|
||||
|
||||
debug('run: Array!');
|
||||
|
||||
const rspLngth = rsp.length
|
||||
debug('run: rsp.length: ' + rspLngth );
|
||||
//debug('run: rsp: ' + JSON.stringify( rsp ) );
|
||||
|
||||
if ( rspLngth === 0 ) {
|
||||
debug('ERROR: run: Why the heck is Array empty?');
|
||||
return;
|
||||
}
|
||||
|
||||
//init services map
|
||||
const mapServices = new Map();
|
||||
debug('run: mapServices.size: '+mapServices.size);
|
||||
|
||||
//TODO clean up for ( let i = 0; i < rspLngth; i++ ) {
|
||||
for ( let i = 0; i < 1; i++ ) {
|
||||
const serviceId = rsp[i].service_id;
|
||||
debug('run: serviceId: ' + serviceId );
|
||||
|
||||
//get service
|
||||
let service = [];
|
||||
if ( !mapServices.has( serviceId ) ) {
|
||||
service = await serviceAvailability.get( serviceId );
|
||||
mapServices.set( serviceId, service );
|
||||
}else{
|
||||
service = mapServices.get(serviceId);
|
||||
}
|
||||
debug('run: service.length: '+service.length);
|
||||
}
|
||||
|
||||
debug('run: done.');
|
||||
};
|
|
@ -0,0 +1,579 @@
|
|||
{
|
||||
"name": "services-insert",
|
||||
"version": "0.0.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "services-insert",
|
||||
"version": "0.0.1",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"dotenv": "16.3.1",
|
||||
"pg": "8.11.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"debug": "4.3.4",
|
||||
"nodemon": "3.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "<=10.24.0"
|
||||
}
|
||||
},
|
||||
"node_modules/abbrev": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/anymatch": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
|
||||
"integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"normalize-path": "^3.0.0",
|
||||
"picomatch": "^2.0.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/balanced-match": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/binary-extensions": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
||||
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/braces": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fill-range": "^7.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/buffer-writer": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz",
|
||||
"integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==",
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/chokidar": {
|
||||
"version": "3.5.3",
|
||||
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
|
||||
"integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "individual",
|
||||
"url": "https://paulmillr.com/funding/"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"anymatch": "~3.1.2",
|
||||
"braces": "~3.0.2",
|
||||
"glob-parent": "~5.1.2",
|
||||
"is-binary-path": "~2.1.0",
|
||||
"is-glob": "~4.0.1",
|
||||
"normalize-path": "~3.0.0",
|
||||
"readdirp": "~3.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8.10.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
|
||||
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"supports-color": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/dotenv": {
|
||||
"version": "16.3.1",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
|
||||
"integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/motdotla/dotenv?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/fsevents": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
|
||||
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/glob-parent": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-glob": "^4.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/has-flag": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/ignore-by-default": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
|
||||
"integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/is-binary-path": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
|
||||
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"binary-extensions": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/is-extglob": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-glob": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-extglob": "^2.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.12.0"
|
||||
}
|
||||
},
|
||||
"node_modules/lru-cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"yallist": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/minimatch": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/nodemon": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz",
|
||||
"integrity": "sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"chokidar": "^3.5.2",
|
||||
"debug": "^3.2.7",
|
||||
"ignore-by-default": "^1.0.1",
|
||||
"minimatch": "^3.1.2",
|
||||
"pstree.remy": "^1.1.8",
|
||||
"semver": "^7.5.3",
|
||||
"simple-update-notifier": "^2.0.0",
|
||||
"supports-color": "^5.5.0",
|
||||
"touch": "^3.1.0",
|
||||
"undefsafe": "^2.0.5"
|
||||
},
|
||||
"bin": {
|
||||
"nodemon": "bin/nodemon.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/nodemon"
|
||||
}
|
||||
},
|
||||
"node_modules/nodemon/node_modules/debug": {
|
||||
"version": "3.2.7",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
|
||||
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"node_modules/nopt": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
|
||||
"integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"abbrev": "1"
|
||||
},
|
||||
"bin": {
|
||||
"nopt": "bin/nopt.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/normalize-path": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
||||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/packet-reader": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz",
|
||||
"integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ=="
|
||||
},
|
||||
"node_modules/pg": {
|
||||
"version": "8.11.3",
|
||||
"resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz",
|
||||
"integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==",
|
||||
"dependencies": {
|
||||
"buffer-writer": "2.0.0",
|
||||
"packet-reader": "1.0.0",
|
||||
"pg-connection-string": "^2.6.2",
|
||||
"pg-pool": "^3.6.1",
|
||||
"pg-protocol": "^1.6.0",
|
||||
"pg-types": "^2.1.0",
|
||||
"pgpass": "1.x"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"pg-cloudflare": "^1.1.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"pg-native": ">=3.0.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"pg-native": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/pg-cloudflare": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz",
|
||||
"integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/pg-connection-string": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz",
|
||||
"integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA=="
|
||||
},
|
||||
"node_modules/pg-int8": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
|
||||
"integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
|
||||
"engines": {
|
||||
"node": ">=4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pg-pool": {
|
||||
"version": "3.6.1",
|
||||
"resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz",
|
||||
"integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==",
|
||||
"peerDependencies": {
|
||||
"pg": ">=8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pg-protocol": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz",
|
||||
"integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q=="
|
||||
},
|
||||
"node_modules/pg-types": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
|
||||
"integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
|
||||
"dependencies": {
|
||||
"pg-int8": "1.0.1",
|
||||
"postgres-array": "~2.0.0",
|
||||
"postgres-bytea": "~1.0.0",
|
||||
"postgres-date": "~1.0.4",
|
||||
"postgres-interval": "^1.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/pgpass": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
|
||||
"integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
|
||||
"dependencies": {
|
||||
"split2": "^4.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/jonschlinkert"
|
||||
}
|
||||
},
|
||||
"node_modules/postgres-array": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
|
||||
"integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/postgres-bytea": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
|
||||
"integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/postgres-date": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
|
||||
"integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/postgres-interval": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
|
||||
"integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
|
||||
"dependencies": {
|
||||
"xtend": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/pstree.remy": {
|
||||
"version": "1.1.8",
|
||||
"resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
|
||||
"integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/readdirp": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
||||
"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"picomatch": "^2.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/semver": {
|
||||
"version": "7.5.4",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
|
||||
"integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"lru-cache": "^6.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/simple-update-notifier": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
|
||||
"integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"semver": "^7.5.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/split2": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
|
||||
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
|
||||
"engines": {
|
||||
"node": ">= 10.x"
|
||||
}
|
||||
},
|
||||
"node_modules/supports-color": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
||||
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"has-flag": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-number": "^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/touch": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
|
||||
"integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"nopt": "~1.0.10"
|
||||
},
|
||||
"bin": {
|
||||
"nodetouch": "bin/nodetouch.js"
|
||||
}
|
||||
},
|
||||
"node_modules/undefsafe": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
|
||||
"integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/xtend": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
|
||||
"engines": {
|
||||
"node": ">=0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"name": "services-insert",
|
||||
"version": "0.0.1",
|
||||
"description": "insert data into PostgreSQL services table",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"dev": "nodemon index.js",
|
||||
"start": "node index.js",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "Stefan Begerad",
|
||||
"license": "GPL-3.0-or-later",
|
||||
"engines": {
|
||||
"node": "<=10.24.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"debug": "4.3.4",
|
||||
"nodemon": "3.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"dotenv": "16.3.1",
|
||||
"pg": "8.11.3"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
const debug=require('debug')('debug');
|
||||
|
||||
const db = require('./db');
|
||||
|
||||
require('dotenv').config();
|
||||
|
||||
async function get(oset = 1,limit = 100) {
|
||||
debug('calendar-all start...');
|
||||
const schema = process.env.DB_SCHEMA || 'schema';
|
||||
|
||||
const query = 'SELECT service_id FROM ' + schema + '.calendar';
|
||||
const data = await db.query( query );
|
||||
|
||||
debug('calendar-all done.');
|
||||
return data;
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
get
|
||||
};
|
|
@ -0,0 +1,22 @@
|
|||
const DEBUG=require('debug')('debug');
|
||||
DEBUG('config start...');
|
||||
|
||||
require('dotenv').config();
|
||||
|
||||
const config = {
|
||||
db: { /* do not put password or any sensitive info here, done only for demo */
|
||||
host: process.env.DB_HOST || 'host',
|
||||
port: process.env.DB_PORT || '5432',
|
||||
user: process.env.DB_USER || 'usr',
|
||||
password: process.env.DB_PASSWORD || 'key',
|
||||
database: process.env.DB_NAME || 'db',
|
||||
},
|
||||
listPerPage: process.env.LIST_PER_PAGE || 10,
|
||||
};
|
||||
|
||||
DEBUG('config host: '+config.db.host);
|
||||
DEBUG('config port: '+config.db.port);
|
||||
DEBUG('config user: '+config.db.user);
|
||||
DEBUG('config database: '+config.db.database);
|
||||
module.exports = config;
|
||||
DEBUG('config done.');
|
|
@ -0,0 +1,32 @@
|
|||
const debug=require('debug')('debug');
|
||||
require('dotenv').config();
|
||||
|
||||
const db = require('./db');
|
||||
const mapping=require('../utils/mapping');
|
||||
|
||||
/**
|
||||
* Create Array of dates in timestamp format
|
||||
*
|
||||
* @return Array of dates
|
||||
*/
|
||||
async function get(serviceId = 0) {
|
||||
debug('datesServiceAdded serviceId: '+serviceId);
|
||||
|
||||
const schema = process.env.DB_SCHEMA || 'schema';
|
||||
debug('schema: ' + schema );
|
||||
|
||||
const query=`SELECT calendar_dates.date FROM ` + schema + `.calendar, ` + schema + `.calendar_dates WHERE calendar.service_id = calendar_dates.service_id AND calendar.service_id = '${serviceId}' and calendar_dates.exception_type = '1';`;
|
||||
debug('datesServiceAdded query: '+query);
|
||||
|
||||
const dates = await db.query(query);
|
||||
debug('datesServiceAdded dates.length: '+dates.length);
|
||||
|
||||
const setDatesServiceAdded = new Set();
|
||||
dates.forEach( ( date ) => setDatesServiceAdded.add( date.date.getTime() ) );
|
||||
debug('datesServiceAdded setDatesServiceAdded.size: ' + setDatesServiceAdded.size );
|
||||
return mapping.set2Array(setDatesServiceAdded);
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
get
|
||||
};
|
|
@ -0,0 +1,58 @@
|
|||
const debug=require('debug')('debug');
|
||||
require('dotenv').config();
|
||||
|
||||
const db = require('./db');
|
||||
const date=require('../utils/date');
|
||||
const mapping=require('../utils/mapping');
|
||||
|
||||
/**
|
||||
* Create Array of dates in timestamp format between service start_date and including end_date.
|
||||
*
|
||||
* @return Array of dates
|
||||
*/
|
||||
async function get(serviceId = 0) {
|
||||
//debug('datesServiceAvailable serviceId: '+serviceId);
|
||||
|
||||
const schema = process.env.DB_SCHEMA || 'schema';
|
||||
debug('schema: ' + schema );
|
||||
|
||||
const query=`SELECT * FROM ` + schema + `.calendar WHERE service_id = '${serviceId}';`;
|
||||
debug('datesServiceAvailable query: ' + query);
|
||||
|
||||
const dataService = await db.query(query);
|
||||
debug('datesServiceAvailable dataService.length: ' + dataService.length);
|
||||
|
||||
const monday=dataService[0].monday;
|
||||
const tuesday=dataService[0].tuesday;
|
||||
const wednesday=dataService[0].wednesday;
|
||||
const thursday=dataService[0].thursday;
|
||||
const friday=dataService[0].friday;
|
||||
const saturday=dataService[0].saturday;
|
||||
const sunday=dataService[0].sunday;
|
||||
|
||||
const dateStart = dataService[0].start_date;
|
||||
const dateEnd = dataService[0].end_date;
|
||||
let dateNext = new Date( dateStart );
|
||||
|
||||
const setDatesServiceAvailable = new Set();
|
||||
while( dateNext.getTime() <= dateEnd.getTime() ) {
|
||||
let weekday = dateNext.getDay();
|
||||
if( ( weekday === date.weekday.monday && monday) ||
|
||||
(weekday===date.weekday.tuesday && tuesday) ||
|
||||
(weekday===date.weekday.wednesday && wednesday) ||
|
||||
(weekday===date.weekday.thursday && thursday) ||
|
||||
(weekday===date.weekday.friday && friday) ||
|
||||
(weekday===date.weekday.saturday && saturday) ||
|
||||
(weekday===date.weekday.sunday && sunday)){
|
||||
setDatesServiceAvailable.add( dateNext.getTime() );
|
||||
}
|
||||
//TODO Optimize!
|
||||
dateNext = new Date( dateNext.setDate( dateNext.getDate() + 1 ));
|
||||
}
|
||||
debug('setDatesServiceAvailable size: ' + setDatesServiceAvailable.size );
|
||||
return mapping.set2Array(setDatesServiceAvailable);
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
get
|
||||
};
|
|
@ -0,0 +1,32 @@
|
|||
const debug=require('debug')('debug');
|
||||
require('dotenv').config();
|
||||
|
||||
const db = require('./db');
|
||||
const mapping=require('../utils/mapping');
|
||||
|
||||
/**
|
||||
* Create Array of dates in timestamp format
|
||||
*
|
||||
* @return Array of dates
|
||||
*/
|
||||
async function get(serviceId = 0) {
|
||||
debug('datesServiceRemoved serviceId: '+serviceId);
|
||||
|
||||
const schema = process.env.DB_SCHEMA || 'schema';
|
||||
debug('schema: ' + schema );
|
||||
|
||||
const query=`SELECT calendar_dates.date FROM ` + schema + `.calendar, ` + schema + `.calendar_dates WHERE calendar.service_id = calendar_dates.service_id AND calendar.service_id = '${serviceId}' and calendar_dates.exception_type = '2';`;
|
||||
debug('datesServiceRemoved query: '+query);
|
||||
|
||||
const dates = await db.query(query);
|
||||
debug('datesServiceRemoved dates.length: '+dates.length);
|
||||
|
||||
const setDatesServiceRemoved = new Set();
|
||||
dates.forEach( ( date ) => setDatesServiceRemoved.add( date.date.getTime() ) );
|
||||
debug('datesServiceAdded setDatesServiceRemoved.size: ' + setDatesServiceRemoved.size );
|
||||
return mapping.set2Array(setDatesServiceRemoved);
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
get
|
||||
};
|
|
@ -0,0 +1,22 @@
|
|||
const DEBUG=require('debug')('debug');
|
||||
|
||||
const { Pool } = require('pg');
|
||||
const config = require('./config');
|
||||
const pool = new Pool(config.db);
|
||||
|
||||
/**
|
||||
* Query the database using the pool
|
||||
* @param {*} query
|
||||
* @param {*} params
|
||||
*
|
||||
* @see https://node-postgres.com/features/pooling#single-query
|
||||
*/
|
||||
async function query(query, params) {
|
||||
const {rows, fields} = await pool.query(query, params);
|
||||
|
||||
return rows;
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
query
|
||||
};
|
|
@ -0,0 +1,45 @@
|
|||
const debug=require('debug')('debug');
|
||||
|
||||
const db = require('./db');
|
||||
const datesServiceAvailable=require('./dates-service-available');
|
||||
const datesServiceAdded=require('./dates-service-added');
|
||||
const datesServiceRemoved=require('./dates-service-removed');
|
||||
const mapping=require('../utils/mapping');
|
||||
|
||||
/**
|
||||
* Create array of days in timestamp format
|
||||
*/
|
||||
async function get(serviceId = 0) {
|
||||
//debug('serviceAvailability serviceId: '+serviceId);
|
||||
|
||||
//array[date in timestamp format]
|
||||
const available = await datesServiceAvailable.get(serviceId);
|
||||
debug('serviceAvailability available: ' + available.length);
|
||||
|
||||
//TODO Make sure this function works with not weekday set at all!
|
||||
|
||||
//array[date in timestamp format]
|
||||
const added = await datesServiceAdded.get(serviceId);
|
||||
debug('serviceAvailability added: ' + added.length);
|
||||
|
||||
//array[date in timestamp format]
|
||||
const removed = await datesServiceRemoved.get(serviceId);
|
||||
debug('serviceAvailability removed: ' + removed.length);
|
||||
|
||||
const setAvail = new Set( available );
|
||||
debug('serviceAvailability setAvail.size: ' + setAvail.size );
|
||||
|
||||
removed.forEach( rmEntry => setAvail.delete( rmEntry ) );
|
||||
debug('serviceAvailability setAvailWithRmed.size: ' + setAvail.size );
|
||||
|
||||
//add dates to service
|
||||
//TODO optimize!
|
||||
const setAvailWithAdded = new Set( [...setAvail, ...new Set( added ) ] );
|
||||
|
||||
debug('serviceAvailability size: ' + setAvailWithAdded.size);
|
||||
return mapping.set2Array(setAvailWithAdded);
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
get
|
||||
};
|
|
@ -0,0 +1,13 @@
|
|||
const weekday={
|
||||
sunday:0,
|
||||
monday:1,
|
||||
tuesday:2,
|
||||
wednesday:3,
|
||||
thursday:4,
|
||||
friday:5,
|
||||
saturday:6
|
||||
}
|
||||
|
||||
module.exports={
|
||||
weekday
|
||||
};
|
|
@ -0,0 +1,108 @@
|
|||
const debug=require('debug')('debug');
|
||||
|
||||
function updateMap(time,tripId,tripShortName,map){
|
||||
//debug('time: '+time);
|
||||
//time map empty
|
||||
if(map.size===0){
|
||||
//debug('map.size: '+map.size);
|
||||
//create trip map
|
||||
let mapTrips=new Map();
|
||||
//add trip to trip map
|
||||
createEntry(mapTrips,tripId,tripShortName);
|
||||
//add time to time map
|
||||
createEntry(map,time,mapTrips);
|
||||
//debug('map.size: '+map.size);
|
||||
}//time map NOT empty
|
||||
else{
|
||||
//debug('map.size: '+map.size);
|
||||
//time not present yet
|
||||
if(!map.has(time)){
|
||||
//debug('map has not: '+time);
|
||||
//create trips map
|
||||
let mapTrips=new Map();
|
||||
//add trip to trip map
|
||||
createEntry(mapTrips,tripId,tripShortName);
|
||||
//add time to time map
|
||||
createEntry(map,time,mapTrips);
|
||||
//debug('map.size: '+map.size);
|
||||
}
|
||||
//time already present
|
||||
else{
|
||||
//debug('map has: '+time);
|
||||
let mapTrips=map.get(time);
|
||||
//debug('mapTrips.size: '+mapTrips.size);
|
||||
//TODO Does it matter to override existing trips?
|
||||
//add trip to trip map
|
||||
createEntry(mapTrips,tripId,tripShortName);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function createEntry(map, key, value){
|
||||
map.set(key,value);
|
||||
};
|
||||
|
||||
function times2Array(map){
|
||||
let array=[];
|
||||
map.forEach((value,key)=>{
|
||||
//debug('key: '+key+', value: '+value);
|
||||
array.push(trips2Array(value));
|
||||
//debug('array: '+array);
|
||||
});
|
||||
return array;
|
||||
};
|
||||
|
||||
//TODO make function generic
|
||||
function times2Obj(map){
|
||||
let object = {};
|
||||
map.forEach((value,key) => {
|
||||
trips2Obj(value);
|
||||
object[key] = trips2Obj(value);
|
||||
});
|
||||
let objSorted=Object.keys(object).sort().reduce(function (result, key) {
|
||||
result[key] = object[key];
|
||||
return result;
|
||||
}, {});
|
||||
return objSorted;
|
||||
};
|
||||
|
||||
//TODO make function generic
|
||||
function trips2Array(map){
|
||||
let array=Array.from(map.values());
|
||||
//debug('array: '+array);
|
||||
return array;
|
||||
};
|
||||
|
||||
function set2Array(set){
|
||||
let array=Array.from(set.values());
|
||||
//debug('set2Array() array.length: '+array.length);
|
||||
return array;
|
||||
};
|
||||
|
||||
//transform map to object
|
||||
function map2Obj(map){
|
||||
let object={};
|
||||
map.forEach((value,key)=>{
|
||||
object[key]=value;
|
||||
});
|
||||
return object;
|
||||
};
|
||||
|
||||
//TODO make function generic: use map2Obj() instead
|
||||
function trips2Obj(map){
|
||||
let object={};
|
||||
map.forEach((value,key)=>{
|
||||
//debug('key: '+key+', value: '+value);
|
||||
object[key]=value;
|
||||
});
|
||||
//debug('JSON stringify object: '+JSON.stringify(object));
|
||||
return object;
|
||||
};
|
||||
|
||||
module.exports={
|
||||
updateMap,
|
||||
times2Obj,
|
||||
times2Array,
|
||||
set2Array,
|
||||
map2Obj
|
||||
};
|
Loading…
Reference in New Issue