kpiplus
Version:
KPI+
1 lines • 1.76 kB
JavaScript
global.mongoose=require("mongoose"),global.Schema=mongoose.Schema;var configs=require("../configs"),async=require("async");global.GCM_API_KEY="AIzaSyDhOzWmkfOVKRR9wCijzyyCJeBTdJllReY";var model=require("../models/app"),User=require("../models/user"),arrayFuncs=require("../libs/array-funcs"),fs=require("fs"),path=require("path"),underscore=require("underscore");process.on("message",function(e){mongoose.connect(configs.database.url).then(()=>{let r=e.id,n=e.user;model.findOne({_id:r}).lean().exec((e,a)=>{if(e||!a)return process.send({error:e||"Công ty này không tồn tại"});if(a.user_created!==n&&!a.participants.find(e=>e.email===n&&e.admin))return process.send({error:"Bạn không có quyền thực hiện tác vụ này"});let s={};s["app.js"]=a,async.parallel({user:e=>{let r=underscore.pluck(a.participants,"email");r.push(n),User.find({email:{$in:r}}).lean().exec((r,n)=>{if(r)return e(r);s["user.js"]=n,e()})},data:e=>{async.map(fs.readdirSync(path.dirname(__dirname)+"/models"),(e,n)=>{let a=require("../models/"+e);underscore.has(a.schema.paths,"id_app")?(console.log("backup",e),a.find({id_app:r}).lean().exec((r,a)=>{if(r)return n(r);s[e]=a,n()})):n()},(r,n)=>{e(r)})}},(e,r)=>{if(e)return process.send({error:e});let n=new Date;fs.existsSync(path.dirname(__dirname)+"/backup")||fs.mkdirSync(path.dirname(__dirname)+"/backup"),console.log("zip data...");var i=new require("node-zip")();try{i.file("backup.json",JSON.stringify(s));var o=i.generate({base64:!1,compression:"DEFLATE"});let r=a._id+"-"+n.getFullYear()+"-"+(n.getMonth()+1)+"-"+n.getMinutes()+".zip";console.log("write datazipped to file ",r),fs.writeFileSync(path.dirname(__dirname)+"/backup/"+r,o,"binary"),process.send({file:r})}catch(e){process.send({error:e})}})})})});