anthtrigger
Version:
Trigger events via http service
95 lines (72 loc) • 2.21 kB
text/coffeescript
Thenjs = require 'thenjs'
zipUtil = require './zipUtil'
scriptModel = require '../script/ScriptModel'
scriptLogsModel = require '../scriptLogs/logsModel'
eventLogsModel = require '../events/EventModel'
exec = require('child_process').exec
exports.exportScriptAsZipBuffer = (critial={})->
Thenjs (cont)->
scriptModel.find critial, (err, result)-> cont(err, result)
.then (cont, list)->
zipBuf = zipUtil.getZipBuffer(list)
cont(null, zipBuf)
.fail (cont, err)->
cont(err)
exports.exportScriptAsZipToDisk = (critial={}, zipFileName)->
Thenjs (cont)->
scriptModel.find critial, (err, result)-> cont(err, result)
.then (cont, list)->
zipUtil.writeZipFile(list, zipFileName)
cont(null)
.fail (cont, err)->
cont(err)
exports.removeScriptLogs = (days)->
d = new Date()
d.setDate d.getDate() - days
Thenjs (cont)->
scriptLogsModel.remove {
startAt: { $lt: d }
}, (err, result)->
cont(err, result)
exports.removeEventLogs = (days)->
d = new Date()
d.setDate d.getDate() - days
Thenjs (cont)->
eventLogsModel.remove {
timeAt: { $lt: d }
}, (err, result)->
console.log ">>", result
cont(err, result)
exports.dumpDatabase = (dbaddr, bkDir)->
Thenjs (cont)->
cmd = [
'mongodump'
'--host', dbaddr.hostname
'--port', dbaddr.port
'-d', dbaddr.dbname
]
cmd.push('-u', dbaddr.username) if dbaddr.username
cmd.push('-p', dbaddr.password) if dbaddr.password
cmd.push('-o', bkDir)
cmdStr = cmd.join(' ')
exec cmdStr, (error, stdout, stderr)->
console.error error, stderr if error
cont(error, stdout, stderr)
return
exports.restoreDatabase = (dbaddr, file)->
Thenjs (cont)->
cmd = [
'mongorestore'
'--host', dbaddr.hostname
'--port', dbaddr.port
'-d', dbaddr.dbname
'--drop'
]
cmd.push('-u', dbaddr.username) if dbaddr.username
cmd.push('-p', dbaddr.password) if dbaddr.password
cmd.push(file + '/' + dbaddr.dbname)
cmdStr = cmd.join(' ')
exec cmdStr, (error, stdout, stderr)->
console.error error, stderr if error
cont(error, stdout, stderr)
return