From 44435cf18d6d872471e2120fca518b4c6e359cb6 Mon Sep 17 00:00:00 2001 From: Francesco Esposito <33671357+frsposito@users.noreply.github.com> Date: Thu, 22 Aug 2019 17:31:05 +0200 Subject: [PATCH] Add db --- src/db/index.js | 71 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/db/index.js diff --git a/src/db/index.js b/src/db/index.js new file mode 100644 index 0000000..b9eb597 --- /dev/null +++ b/src/db/index.js @@ -0,0 +1,71 @@ +import mongoose from 'mongoose'; + +import UserModel from './user.model'; +import logger from '../logger'; +import config from '../config'; + + +const options = { + useNewUrlParser: true, + user: config.database.user, + pass: config.database.password, +}; + +mongoose.connect(config.database.host, options); +mongoose.set('useFindAndModify', false); + +const db = mongoose.connection; + +db.on('error', (err) => logger.error(err)); +db.once('open', () => logger.info('Database connected')); + + +export const initUser = (id) => ( + new Promise((resolve, reject) => { + UserModel.findOneAndUpdate({ id }, { id }, { upsert: true }, (err, doc) => { + if (err) { + logger.error(err); + reject(err); + } + + resolve(doc); + }); + }) +); + + +export const setCity = (userId, cityId) => { + const document = { + city: { + id: cityId, + }, + }; + + return new Promise((resolve, reject) => { + UserModel.findOneAndUpdate({ id: userId }, document, { new: true }, (err, doc) => { + if (err) { + logger.error(err); + reject(err); + } + + resolve(doc); + }); + }); +}; + + +export const findAssociedCity = (id) => ( + new Promise((resolve, reject) => { + UserModel.findOne({ id }, (err, doc) => { + if (err) { + logger.error(err); + reject(err); + } + + resolve(doc.city.id); + }); + }) +); + + +export { UserModel };