UNPKG

sqlite-gui-node

Version:
93 lines (92 loc) 4.04 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const databaseFunctions_1 = __importDefault(require("./databaseFunctions")); const helpers_1 = require("./helpers"); function generateInsertSQL(db, tableName, data) { return __awaiter(this, void 0, void 0, function* () { // Extract field names and escape values (optional for TEXT and BLOB) const columns = []; const values = []; yield Promise.all(data.map((item) => __awaiter(this, void 0, void 0, function* () { const hasDefault = yield databaseFunctions_1.default.checkColumnHasDefault(db, tableName, item.type.toUpperCase(), item.field); if ((0, helpers_1.isEmpty)(item.value) && hasDefault.bool) return; columns.push((0, helpers_1.quoteColumn)(item.field)); values.push((0, helpers_1.quoteValue)(item)); }))); // Form the SQL statement const sql = `INSERT INTO ${tableName} (${columns.join(", ")}) VALUES (${values.join(", ")});`; return sql; }); } function generateUpdateSQL(tableName, data, id, id_label) { // Extract field names and values with proper handling const setClauses = data .map((item) => `${(0, helpers_1.quoteColumn)(item.field)} = ${(0, helpers_1.quoteValue)(item)}`) .join(", "); // Form the SQL statement const sql = `UPDATE ${(0, helpers_1.quoteColumn)(tableName)} SET ${setClauses} WHERE ${id_label} = ${typeof id === "string" ? `'${id}'` : id};`; return sql; } function generateCreateTableSQL(tableName, data) { // Map through data to generate column definitions const fk_array = []; const columnDefinitions = data .map((item) => { let columnType; if (item.fk !== "No") { fk_array.push(item.fk); } switch (item.type) { case "TEXT": columnType = "TEXT"; break; case "INTEGER": columnType = "INTEGER"; break; case "REAL": columnType = "REAL"; break; case "DATE": columnType = "DATETIME DEFAULT CURRENT_TIMESTAMP"; break; default: throw new Error(`Unknown type: ${item.type}`); } let columnDefinition = `${(0, helpers_1.quoteColumn)(item.name)} ${columnType}`; if (item.pk) { columnDefinition += ` ${item.pk}`; // Include primary key constraint } if (item.default !== null && item.default !== undefined) { columnDefinition += ` DEFAULT ${item.default}`; // Include default value } return columnDefinition; }) .join(", "); // Form the SQL statement let sql; if (fk_array.length !== 0) { sql = `CREATE TABLE IF NOT EXISTS ${(0, helpers_1.quoteColumn)(tableName)} (${columnDefinitions} ${"," + fk_array.join(",")});`; } else { sql = `CREATE TABLE IF NOT EXISTS ${(0, helpers_1.quoteColumn)(tableName)} (${columnDefinitions});`; } return sql; } exports.default = { generateInsertSQL, generateUpdateSQL, generateCreateTableSQL, };