99 lines
2.8 KiB
JavaScript
99 lines
2.8 KiB
JavaScript
// 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, { useUnifiedTopology: true })
|
|
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 {
|
|
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
|
|
}
|
|
|