UNPKG

sql-query

Version:

NodeJS SQL query builder

61 lines (50 loc) 1.43 kB
var helpers = require("../Helpers"); exports.DataTypes = { isSQLITE: true, id: 'INTEGER PRIMARY KEY AUTOINCREMENT', int: 'INTEGER', float: 'FLOAT(12,2)', bool: 'TINYINT(1)', text: 'TEXT' }; exports.escape = function (query, args) { return helpers.escapeQuery(exports, query, args); } exports.escapeId = require("./mysql").escapeId; exports.escapeVal = function (val, timeZone) { if (val === undefined || val === null || typeof val === "symbol") { return 'NULL'; } if (Array.isArray(val)) { if (val.length === 1 && Array.isArray(val[0])) { return "(" + val[0].map(exports.escapeVal.bind(this)) + ")"; } return "(" + val.map(exports.escapeVal.bind(this)).join(", ") + ")"; } if (val instanceof Date) { return "'" + helpers.dateToString(val, timeZone || "local", { dialect: 'sqlite' }) + "'"; } if (Buffer.isBuffer(val)) { return "X'" + val.toString("hex") + "'"; } switch (typeof val) { case "number": if (!isFinite(val)) { val = val.toString(); break; } return val; case "boolean": return val ? 1 : 0; case "function": return val(exports); case "string": break; default: val = JSON.stringify(val); } // No need to escape backslashes with default PostgreSQL 9.1+ config. // Google 'postgresql standard_conforming_strings' for details. return "'" + val.replace(/\'/g, "''") + "'"; }; exports.defaultValuesStmt = "DEFAULT VALUES";