backend/src/services/dbAccess.services.js

60 lines
1.8 KiB
JavaScript
Raw Normal View History

const log = require('../utils/log.utils'); // Log Helper
const dbUser = process.env.OWL_DB_USER || "owl"
const dbPass = process.env.OWL_DB_PASS || "twittwoo"
const dbName = process.env.OWL_DB_NAME || "owlboard"
const dbPort = process.env.OWL_DB_PORT || 27017
const dbHost = process.env.OWL_DB_HOST || "localhost"
const uri = `mongodb://${dbUser}:${dbPass}@${dbHost}:${dbPort}`;
const { MongoClient } = require('mongodb');
const client = new MongoClient(uri);
const db = client.db(dbName);
async function query(collection, query){
await client.connect();
log.out(`dbAccess.query: Connecting to collection: '${collection}'`, "info")
var qcoll = db.collection(collection);
var qcursor = qcoll.find(query)
qcursor.project({_id: 0})
log.out(`dbAccess.query: Running Query: ${JSON.stringify(query)}`, "info")
increment(collection)
return (await qcursor.toArray());
}
async function increment(target) {
log.out(`dbAccess.increment: Incrementing counter for: ${target}`, "info")
await client.connect();
let col = db.collection("meta");
let update = {}
update[target] = 1
col.updateOne({target: "counters"}, {$inc:update})
return;
}
async function addUser(uuid, domain) {
log.out(`dbAccess.addUser: Adding user to database`)
let doc = {uuid: uuid, domain: domain, atime: new Date}
await client.connect();
let col = db.collection("users");
res = col.insertOne(doc);
return res;
}
async function userAtime(uuid) {
log.out(`dbAccess.userAtime: Updating access time for user`)
let q = {uuid: uuid};
let n = {$set: {uuid: uuid, atime: new Date}};
await client.connect();
let col = db.collection("users");
res = col.updateOne(q, n, {upsert: true})
return res;
}
module.exports = {
query,
increment,
addUser,
userAtime
}