hoover-washer-status-check
Version:
Hoover washer status check
38 lines (37 loc) • 1.56 kB
JavaScript
;
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);
};