// all functions to get data from mongodb import { MongoClient } from 'mongodb'; const MONGOHOST = process.env.MONGOHOST || 'localhost' const MONGOPORT = process.env.MONGOPORT || 27017 const MONGOAUTH = (process.env.MONGOAUTH === "true") || false const MONGOUSRP = process.env.MONGOUSRP || "" const MONGOBASE = process.env.MONGOBASE || 'medizin' const MONGO_URL = MONGOAUTH ? 'mongodb://'+MONGOUSRP+'@' + MONGOHOST + ':' + MONGOPORT + '/?authSource=admin' : 'mongodb://'+MONGOHOST+':'+MONGOPORT // URL to mongo database let COLLECTION = 'spritzschema' export const doMongo = async function(cmd, options) { let erg = {err: null} if (options.testing) { COLLECTION = 'spritzschema_test' } const client = new MongoClient(MONGO_URL) try { await client.connect() if (cmd === 'getdata') { erg = await getAPIdataOne(client, options) } else if (cmd === 'getlastdata') { erg = await getAPIlastDataOne(client, options) } else if (cmd === 'putdata') { erg = await putAPIdataOne(client, options) } else if (cmd === 'deldata') { erg = await delAPIdataOne(client, options) } else if (cmd === 'geturl') { erg = MONGO_URL } else { erg.err = "Unknown Call" } } catch (e) { console.error(e) erg.err = e } finally { await client.close() } return erg } // ********************************************* // Get data direct via API // // // return: // JSON Dokument mit den angefragten Werten // ********************************************* async function getAPIdataOne(client, options) { let erg = {err: null} try { erg.data = await client.db(MONGOBASE).collection(COLLECTION).findOne({curdata: options.curdata},{ projection:{_id: 0} }) } catch (e) { console.error(e) erg.err = e } return erg } async function getAPIlastDataOne(client, options) { let erg = {err: null} try { erg.data = await client.db(MONGOBASE).collection(COLLECTION).findOne({},{ projection:{_id: 0}, sort: {$natural: -1}}) } catch (e) { console.error(e) erg.err = e } return erg } async function putAPIdataOne(client, options) { let erg = {err: null} const query = {curdate: options.data.curdate} const opts = {upsert : true} const update = {$set: options.data} try { erg.date = await client.db(MONGOBASE).collection(COLLECTION).updateOne(query, update, opts) } catch (e) { console.error(e) erg.err = e } return erg } async function delAPIdataOne(client, options) { let erg = {err: null} const query = {curdate: options.curdate} try { erg.data = await client.db(MONGOBASE).collection(COLLECTION).deleteOne(query) } catch (e) { console.error(e) erg.err = e } return erg }