UNPKG

kpiplus

Version:

KPI+

1 lines 2.28 kB
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"),JSZip=require("jszip");process.on("message",function(e){mongoose.connect(configs.database.url).then(()=>{let r=e.id,s=e.user,n=e.file;model.findOne({_id:r}).lean().exec((e,o)=>e||!o?process.send({error:e||"Công ty này không tồn tại"}):o.user_created===s||o.participants.find(e=>e.email===s&&e.admin)?void fs.readFile(n,(e,s)=>{if(e)return process.send({error:e});try{JSZip.loadAsync(s).then(function(e){return e.file("backup.json").async("string")}).then(e=>{if(!e)return process.send({error:"File lưu trữ không có dữ liệu"});e=JSON.parse(e),async.parallel({users:r=>{let s=e["user.js"];s?async.map(s,(e,r)=>{User.findOne({email:e.email},(s,n)=>{if(s)return r(s);if(n)r();else{console.log("add user",e.email),delete e._id,delete e.__v,new User(e).save((e,s)=>{r(e)})}})},(e,s)=>{console.log("users were restore successfull"),r(e)}):r()},app:s=>{appInfo=e["app.js"],appInfo?(delete appInfo._id,delete appInfo.__v,console.log("restore app info"),model.findOneAndUpdate({_id:r},appInfo,(e,r)=>{if(e)return s(e);console.log("app info was restore successfull"),s()})):s()},data:s=>{let n=underscore.keys(e).filter(e=>"user.js"!==e&&"app.js"!==e);async.map(n,(s,n)=>{let o=e[s];if(o){let e=require("../models/"+s);console.log("restore collection",s,o.length,"rows"),e.remove({id_app:r},l=>{if(l)return n(l);o=o.map(e=>(delete e._id,delete e.__v,e.id_app=r,e)),async.map(o,(r,s)=>{new e(r).save((e,r)=>{s(e)})},(e,r)=>{if(e)return n(e);console.log("restore collection",s,"successfull"),n()})})}else n()},(e,r)=>{if(e)return s(e);console.log("all collections was restore successful"),s()})}},(e,r)=>{if(e)return process.send({error:e});console.log("database was restore successful"),process.send({result:"Chương trình đã khôi phục dữ liệu thành công"})})})}catch(e){return process.send({error:e.message})}}):process.send({error:"Bạn không có quyền thực hiện tác vụ này"}))})});