Skip to content

Instantly share code, notes, and snippets.

View c4x1's full-sized avatar
๐ŸŒ€
home->work->home->work;

CSpornov c4x1

๐ŸŒ€
home->work->home->work;
  • Russian
View GitHub Profile
import mongoose from 'mongoose';
import mongoosePaginate from 'mongoose-paginate';
import uniqueValidator from 'mongoose-unique-validator';
import createdAt from '../../core/lib/mongoose-plugins/created-at';
import updatedAt from '../../core/lib/mongoose-plugins/updated-at';
import createdBy from '../../core/lib/mongoose-plugins/created-by';
import active from '../../core/lib/mongoose-plugins/active';
import password from '../../core/lib/mongoose-plugins/password';
import fullName from '../../core/lib/mongoose-plugins/full-name';
import models from '../lib/mongo'
let { Article } = models
export default {
addArticle: (data) => Article.create(data),
getArticle: (articleId) => Article.findOne({ _id: articleId }),
getAllArticles: () => Article.find(),
import mongoose from 'mongoose'
var Schema = mongoose.Schema
var options = { discriminatorKey: 'type', timestamps: true}; // TODO Quantum : delete role field in result queries
var AuthorSchema = new Schema (
{
authorName : String,
posts: [{type: Schema.Types.ObjectId, ref: 'Post'}],
readers: [{type: Schema.Types.ObjectId, ref: 'User'}]
server.expose({
killMe : that.close.bind(this),
profileCPU : profile.bind(this, 'cpu'),
profileMEM : profile.bind(this, 'mem'),
prepare : God.prepare,
getMonitorData : God.getMonitorData,
getSystemData : God.getSystemData,
startProcessId : God.startProcessId,
stopProcessId : God.stopProcessId,
module.exports = function ClusterMode(God) {
/**
* Watch folder for changes and restart
* @method watch
* @param {Object} pm2_env pm2 app environnement
* @return MemberExpression
*/
God.watch = {};
God.watch._watchers = {};
var pm2 = require('../..');
pm2.delete('all', function(err) {
if (err) {
console.error(err);
return pm2.disconnect();
}
pm2.start('http.js', function(err, app) {
if (err) {
if (cluster.isMaster) {
const worker = cluster.fork();
let timeout;
worker.on('listening', (address) => {
worker.send('shutdown');
worker.disconnect();
timeout = setTimeout(() => {
worker.kill();
}, 2000);
@c4x1
c4x1 / 1564417403.js
Created July 29, 2019 16:23
Created with Copy to Gist
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;
const run = funcs => new Promise((resolve) => {
if (cluster.isMaster) {
let funcsIndex = 0;
const funcCount = funcs.length;
const finishedFuncs = new Array(Math.max(funcCount, numCPUs)).fill(false);
const { workers } = cluster;
const messageHandler = (message) => {
@c4x1
c4x1 / 1564417281.js
Created July 29, 2019 16:21
Created with Copy to Gist
'use strict';
/**
* @file task-manager main
* @module task-manager
* @subpackage lib
* @version 1.3.0
* @author hex7c0 <hex7c0@gmail.com>
* @copyright hex7c0 2014
* @license GPLv3
*/
@c4x1
c4x1 / 1564416546.js
Last active July 29, 2019 16:09
Switching from cluster module to PM2 & RabbitMQ
var cluster = require('cluster');
const numCPUs = require('os').cpus().length;
module.exports.create = function (options, callback) {
if (cluster.isMaster) {
// fork child process for notif/sms/email worker
global.smsWorker = require('child_process').fork('./smsWorker');
global.emailWorker = require('child_process').fork('./emailWorker');
global.notifiWorker = require('child_process').fork('./notifWorker');