First commit - WIP WIP
This commit is contained in:
81
modules/mongointerface.js
Normal file
81
modules/mongointerface.js
Normal file
@@ -0,0 +1,81 @@
|
||||
// all functions to get data from mongodb
|
||||
|
||||
const {MongoClient} = require('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
|
||||
const COLLECTION = 'spritzschema'
|
||||
|
||||
const doMongo = async function(cmd, options) {
|
||||
let erg = {err: null}
|
||||
const client = new MongoClient(MONGO_URL, { useUnifiedTopology: true })
|
||||
try {
|
||||
await client.connect()
|
||||
if (cmd === 'getdata') {
|
||||
erg = await getAPIdataOne(client, options)
|
||||
} else if (cmd === 'putdata') {
|
||||
erg = await putAPIdataOne(client, options)
|
||||
} else if (cmd === 'deldata') {
|
||||
erg = await delAPIdataOne(client, options)
|
||||
} 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 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
|
||||
}
|
||||
exports.doMongo = doMongo
|
||||
Reference in New Issue
Block a user