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 addRegReq(uuid) { log.out(`dbAccess.addRegReq: Adding registration request`) let doc = {uuid: uuid, time: new Date} await client.connect(); let col = db.collection("registrations"); 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, addRegReq }