Files
spritzschema/modules/mongointerface.js
rxf b0ee6043fa klick on selectes dates unselects it
.dockerignore added
mongo adapted to newest version
package.json: all debedencies updated
2026-01-18 10:19:10 +01:00

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)
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
}