70 lines
2.1 KiB
JavaScript
70 lines
2.1 KiB
JavaScript
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) { // Needs testing
|
|
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) { // Needs testing
|
|
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) { // Needs testing
|
|
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
|
|
} |