1
0
Fork 0
dbmonitor/dbmonitor.coffee

55 lines
2.1 KiB
CoffeeScript

database = require './config/database.coffee'
application = require './config/application.coffee'
moment = require 'moment'
fs = require 'fs'
sockets = []
db = require('mysql-native').createTCPClient(database.host, database.port)
db.auth database.database, database.username, database.password
db.auto_prepare = true
checkDate = moment('0000-01-01 00:00:00', 'YYYY-MM-DD HH:mm:ss')
query = "SELECT " + application.timestamp_column + " FROM `print_jobs` ORDER BY " + application.timestamp_column + " DESC LIMIT 1"
db.query(query).addListener 'row', (start) ->
checkDate = moment(start[application.timestamp_column], 'YYYY-MM-DD HH:mm:ss')
getDatabaseUpdates = () ->
query = "SELECT " + application.timestamp_column + "," + application.columns.join(',') + " FROM " + application.table + " WHERE " + application.where + " AND " + application.timestamp_column + " > '" + checkDate.format('YYYY-MM-DD HH:mm:ss') + "'"
db.query(query).addListener 'row', (job) ->
jobDate = moment(job[application.timestamp_column], 'YYYY-MM-DD HH:mm:ss')
checkDate = jobDate if jobDate > checkDate
updateClient job
updateClient = (job) ->
for client in sockets
client.emit 'update', job
http = require('http').createServer((req, res) ->
if req.url == '/'
res.writeHead 200, {'Content-Type': 'text/html'}
res.end fs.readFileSync('public/index.html')
else if req.url == '/css/style.css'
res.writeHead 200, {'Content-Type': 'text/css'}
res.end fs.readFileSync('public/css/style.css')
else if req.url == '/js/jquery.mustache.js'
res.writeHead 200, {'Content-Type': 'text/javascript'}
res.end fs.readFileSync('public/js/jquery.mustache.js')
else if req.url == '/templates/views.html'
res.writeHead 200, {'Content-Type': 'text/html'}
res.end fs.readFileSync('public/templates/views.html')
else
res.writeHead 404, {"Content-Type": "text/plain"}
res.end "404 Not Found\n"
).listen application.port
io = require('socket.io').listen(http)
io.set('log level', 1);
io.sockets.on 'connection', (socket) ->
sockets.push socket
setInterval () ->
getDatabaseUpdates()
, 1000 * application.updateTime