Skip to content

Commit

Permalink
feat(global): add mongo dump/restore (easy for dev team) ✨
Browse files Browse the repository at this point in the history
  • Loading branch information
PierreBrisorgueil committed Jun 21, 2020
1 parent f4ce695 commit 2cffc39
Show file tree
Hide file tree
Showing 13 changed files with 99 additions and 7 deletions.
3 changes: 3 additions & 0 deletions README.md
Expand Up @@ -92,6 +92,9 @@ npm i
* test Coverage : `npm run test:coverage`
* seed development= `npm run seed:dev`
* seed Production = `npm run seed:prod`
* seed Dump Mongo (Dev Team sample) = `npm run seed:mongodump` **be careful to not upload sample in public repo**
* seed Restore Mongo (Dev Team sample) = `npm run seed:mongorestore` **create or update data based on _id, no purge**
* seed Drop Mongo = `npm run seed:mongodrop`
* generate SSL certs : `npm run generate:sslCerts`
* lint : `npm run lint`
* commit : `npm run commit`
Expand Down
7 changes: 4 additions & 3 deletions gulpfile.js
Expand Up @@ -9,7 +9,6 @@ const path = require('path');
const jestCli = require('jest-cli');
const inquirer = require('inquirer');


const plugins = gulpLoadPlugins();
const defaultAssets = require('./config/assets');

Expand Down Expand Up @@ -43,7 +42,6 @@ const nodemon = (done) => {
};
exports.nodemon = nodemon;


// Nodemon (task without verbosity or debugging)
const nodemonDebug = (done) => {
plugins.nodemon({
Expand Down Expand Up @@ -92,7 +90,6 @@ const jestWatch = (done) => {
};
exports.jestWatch = jestWatch;


// Jest UT
const jestCoverage = (done) => {
jestCli.runCLI(
Expand Down Expand Up @@ -199,6 +196,10 @@ exports.testCoverage = testCoverage;
const seed = gulp.series(dropDB, seedMongoose);
exports.seed = seed;

// Run Mongoose drop
const drop = gulp.series(dropDB);
exports.drop = drop;

// Run project in development mode
const dev = gulp.series(lint, gulp.parallel(nodemon, watch));
exports.default = dev;
Expand Down
20 changes: 20 additions & 0 deletions modules/tasks/repositories/tasks.repository.js
Expand Up @@ -58,3 +58,23 @@ exports.delete = (task) => Task.deleteOne({ _id: task.id }).exec();
exports.deleteMany = (filter) => {
if (filter) return Task.deleteMany(filter).exec();
};

/**
* @desc Function to import list of tasks in db
* @param {[Object]} tasks
* @param {[String]} filters
* @return {Object} locations
*/
exports.import = (tasks, filters) => Task.bulkWrite(tasks.map((task) => {
const filter = {};
filters.forEach((value) => {
filter[value] = task[value];
});
return {
updateOne: {
filter,
update: task,
upsert: true,
},
};
}));
11 changes: 11 additions & 0 deletions modules/tasks/services/tasks.data.service.js
Expand Up @@ -22,3 +22,14 @@ exports.delete = async (user) => {
const result = await TasksRepository.deleteMany({ user: user._id });
return Promise.resolve(result);
};

/**
* @desc Function to ask repository to import a list of tasks
* @param {[Object]} tasks
* @param {[String]} filters
* @return {Promise} tasks
*/
exports.import = (tasks, filters) => {
const result = TasksRepository.import(tasks, filters);
return result;
};
20 changes: 20 additions & 0 deletions modules/users/repositories/user.repository.js
Expand Up @@ -53,3 +53,23 @@ exports.delete = async (user) => {
if (user.email) return User.deleteOne({ email: user.email }).exec();
return null;
};

/**
* @desc Function to import list of users in db
* @param {[Object]} users
* @param {[String]} filters
* @return {Object} locations
*/
exports.import = (users, filters) => User.bulkWrite(users.map((user) => {
const filter = {};
filters.forEach((value) => {
filter[value] = user[value];
});
return {
updateOne: {
filter,
update: user,
upsert: true,
},
};
}));
15 changes: 15 additions & 0 deletions modules/users/services/users.data.service.js
@@ -0,0 +1,15 @@
/**
* Module dependencies
*/
const UserRepository = require('../repositories/user.repository');

/**
* @desc Function to ask repository to import a list of users
* @param {[Object]} users
* @param {[String]} filters
* @return {Promise} users
*/
exports.import = (users, filters) => {
const result = UserRepository.import(users, filters);
return result;
};
24 changes: 21 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions package.json
Expand Up @@ -33,6 +33,9 @@
"test:coveralls": "cross-env NODE_ENV=test gulp testCoverage && cat ./coverage/lcov.info | coveralls",
"seed:dev": "cross-env NODE_ENV=development gulp seed",
"seed:prod": "cross-env NODE_ENV=production gulp seed",
"seed:mongodump": "./scripts/data/mongoDump.sh",
"seed:mongorestore": "node ./scripts/data/mongoRestore.js",
"seed:mongodrop": "gulp drop",
"generate:sllCerts": "scripts/generate-ssl-certs.sh",
"lint": "gulp lint",
"snyk-protect": "snyk protect",
Expand Down Expand Up @@ -92,6 +95,7 @@
"devDependencies": {
"@commitlint/cli": "^8.3.5",
"@commitlint/config-conventional": "^8.3.4",
"bson": "^4.0.4",
"commitizen": "^4.1.2",
"coveralls": "~3.1.0",
"eslint": "^7.2.0",
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
Expand Up @@ -2,7 +2,7 @@ const nodemailer = require('nodemailer');
const mongoose = require('mongoose');
const chalk = require('chalk');
const config = require('../config/config');
const mg = require('../lib/services/mongoose');
const mg = require('../../lib/services/mongoose');

const transporter = nodemailer.createTransport(config.mailer.options);
const link = 'reset link here'; // PUT reset link here
Expand Down
File renamed without changes.

0 comments on commit 2cffc39

Please sign in to comment.