UNPKG

hoover-washer-status-check

Version:
38 lines (37 loc) 1.56 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const mysql_1 = __importDefault(require("mysql")); const config_1 = __importDefault(require("../config")); const debug_1 = require("../debug"); let connection = null; const jsToMysqlTypeMap = { string: "VARCHAR(255) NOT NULL DEFAULT ''", number: 'INT(8) NOT NULL DEFAULT 0', boolean: 'TINYINT(1) NOT NULL DEFAULT 0', }; const getConnection = () => { if (connection === null) { connection = mysql_1.default.createConnection(config_1.default.mysql); connection.connect(); } return connection; }; exports.logCurrentStatus = async (status) => { const columnDefinitions = Object.keys(status).map((key) => { const columnName = key; const columnType = typeof status[columnName]; const columnDefinition = jsToMysqlTypeMap.hasOwnProperty(columnType) ? jsToMysqlTypeMap[columnType] : jsToMysqlTypeMap.string; return `${columnName} ${columnDefinition}`; }); columnDefinitions.push('id int primary key auto_increment'); columnDefinitions.push('createdAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP'); const sql = `CREATE TABLE IF NOT EXISTS hoover_status (${columnDefinitions.join(', ')})`; debug_1.debug.extend('mysql')('SQL', sql); getConnection().query(sql); getConnection().query('INSERT INTO hoover_status SET ?', status); };