Newer
Older
import {port, parser} from './port.js'
import wss from './websocket.js'
import connection from './db.js'
import { parse } from 'path'
let status = {}
async function updateStatus(newStatus) {
if(newStatus.locked === status.locked && newStatus.catsInside === status.catsInside) return
if(newStatus.locked !== status.locked)
await connection.query(`INSERT INTO lock_log (date, action) VALUES ('${dateToMySQLDateTime()}', '${newStatus.locked ? 'locked' : 'unlocked'}')`)
if(newStatus.catsInside < status.catsInside)
await connection.query(`INSERT INTO cat_log (date, action, cats_inside) VALUES ('${dateToMySQLDateTime()}', 'left', ${newStatus.catsInside})`)
else
await connection.query(`INSERT INTO cat_log (date, action, cats_inside) VALUES ('${dateToMySQLDateTime()}', 'entered', ${newStatus.catsInside})`)
status = newStatus
}
parser.on('data', function returnStatus(data) {
wss.clients.forEach(client => {
if(client.currentStatus === data.toString()) return
console.log(`sending status to ${client.id}`)
client.send(data.toString())
client.currentStatus = data.toString()
})
const allowedMessages = ['lock', 'unlock', 'catEntered', 'catLeft', 'status']
wss.on('connection', async function connection(ws) {
ws.on('message', function incoming(buffer) {
const message = buffer.toString('utf8').trim()
if(allowedMessages.includes(message)) {
port.write(`${message}\n`)
port.flush()
}
});