import { sqlQuoteIdent as q } from "../../utils/sql-safe"; import createTable from "./create-table"; import insertDBManagerTable from "./insert-db-manager-table"; import recordSchemaChange from "./record-schema-change"; import removeDBManagerTable from "./remove-db-manager-table"; import syncIndexes from "./sync-indexes"; import updateTable from "./update-table"; /** * Sync a single table (rename, create or update, then indexes) */ export default function handleDBSchemaTable(params) { const { db, table, existing_tables } = params; let tableExists = existing_tables.includes(table.tableName); // Handle table rename if (table.tableNameOld && table.tableNameOld !== table.tableName && existing_tables.includes(table.tableNameOld)) { recordSchemaChange(params, { description: `Rename table "${table.tableNameOld}" -> "${table.tableName}"`, }); db.run(`ALTER TABLE ${q(table.tableNameOld)} RENAME TO ${q(table.tableName)}`); insertDBManagerTable({ db, table_name: table.tableName }); removeDBManagerTable({ db, table_name: table.tableNameOld }); tableExists = true; } if (!tableExists) { createTable(params); insertDBManagerTable({ db, table_name: table.tableName }); } else { updateTable(params); } syncIndexes(params); }