First commit - WIP WIP

This commit is contained in:
rxf
2023-04-03 20:57:42 +02:00
commit 1dec10d12d
23 changed files with 2220 additions and 0 deletions

81
modules/mongointerface.js Normal file
View 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