nanodb-orm 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 Damilola Alao
3
+ Copyright (c) 2024 Easy-Deploy-Dev
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -236,6 +236,64 @@ await db.migrations.validate(); // Validate schema vs DB
236
236
  await db.migrations.checkTables(); // { users: true, posts: true }
237
237
  ```
238
238
 
239
+ ### Data-Preserving Auto Migrations
240
+
241
+ nanodb-orm automatically migrates your schema while **preserving existing data**. When you change your schema (add/remove columns, change types), the migration:
242
+
243
+ 1. Creates a temporary table with the new schema
244
+ 2. Copies data from matching columns
245
+ 3. Drops the old table
246
+ 4. Renames the temp table
247
+
248
+ ```typescript
249
+ const db = await createDatabase({
250
+ tables: { users, posts },
251
+ migrationConfig: {
252
+ autoMigrate: true, // Enable automatic migrations (default: true)
253
+ preserveData: true, // Preserve existing data during migration (default: true)
254
+ dropTables: false, // Allow destructive drop & recreate (default: false)
255
+ },
256
+ });
257
+ ```
258
+
259
+ #### Migration Config Options
260
+
261
+ | Option | Default | Description |
262
+ |--------|---------|-------------|
263
+ | `autoMigrate` | `true` | Master switch - enables/disables automatic schema changes |
264
+ | `preserveData` | `true` | Copy existing data to new schema during migration |
265
+ | `dropTables` | `false` | Allow destructive operations (bypasses data preservation) |
266
+
267
+ #### How Column Changes Work
268
+
269
+ ```
270
+ Adding a column:
271
+ OLD: (id, name) → NEW: (id, name, email)
272
+ ✅ All rows preserved, 'email' starts as NULL/default
273
+
274
+ Removing a column:
275
+ OLD: (id, name, oldField) → NEW: (id, name)
276
+ ⚠️ Rows preserved, but 'oldField' data is LOST
277
+
278
+ Renaming a column:
279
+ OLD: (id, username) → NEW: (id, name)
280
+ ⚠️ Treated as remove + add, 'username' data is LOST
281
+ ```
282
+
283
+ #### Manual Migration
284
+
285
+ ```typescript
286
+ import { migrateTablePreservingData } from 'nanodb-orm';
287
+
288
+ const result = await migrateTablePreservingData(
289
+ 'users',
290
+ 'CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)',
291
+ ['id', 'name'], // old columns
292
+ ['id', 'name', 'email'] // new columns
293
+ );
294
+ // { rowsMigrated: 150, columnsPreserved: ['id', 'name'] }
295
+ ```
296
+
239
297
  ### `transaction(fn)` / `batch(statements)`
240
298
 
241
299
  Execute operations atomically. Uses Drizzle's native transaction when available (better for Turso).
@@ -673,4 +731,4 @@ await db.insert(users).values([{ id: 1 }]);
673
731
 
674
732
  ## License
675
733
 
676
- MIT © Damilola Alao
734
+ MIT © Easy-Deploy-Dev
@@ -5,6 +5,6 @@ export { DatabaseSync } from './sync';
5
5
  export { DatabaseMigrations } from './migrations';
6
6
  export { DatabaseSeeds } from './seeds';
7
7
  export { SchemaIntrospection } from './schema-introspection';
8
- export { transaction, recreateTable } from './transactions';
8
+ export { transaction, recreateTable, migrateTablePreservingData } from './transactions';
9
9
  export { logger } from './logger';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * Database utilities
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.logger = exports.recreateTable = exports.transaction = exports.SchemaIntrospection = exports.DatabaseSeeds = exports.DatabaseMigrations = exports.DatabaseSync = void 0;
6
+ exports.logger = exports.migrateTablePreservingData = exports.recreateTable = exports.transaction = exports.SchemaIntrospection = exports.DatabaseSeeds = exports.DatabaseMigrations = exports.DatabaseSync = void 0;
7
7
  var sync_1 = require("./sync");
8
8
  Object.defineProperty(exports, "DatabaseSync", { enumerable: true, get: function () { return sync_1.DatabaseSync; } });
9
9
  var migrations_1 = require("./migrations");
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "SchemaIntrospection", { enumerable: true, get: f
15
15
  var transactions_1 = require("./transactions");
16
16
  Object.defineProperty(exports, "transaction", { enumerable: true, get: function () { return transactions_1.transaction; } });
17
17
  Object.defineProperty(exports, "recreateTable", { enumerable: true, get: function () { return transactions_1.recreateTable; } });
18
+ Object.defineProperty(exports, "migrateTablePreservingData", { enumerable: true, get: function () { return transactions_1.migrateTablePreservingData; } });
18
19
  var logger_1 = require("./logger");
19
20
  Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_1.logger; } });
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,+BAAsC;AAA7B,oGAAA,YAAY,OAAA;AACrB,2CAAkD;AAAzC,gHAAA,kBAAkB,OAAA;AAC3B,iCAAwC;AAA/B,sGAAA,aAAa,OAAA;AACtB,+DAA6D;AAApD,2HAAA,mBAAmB,OAAA;AAC5B,+CAA4D;AAAnD,2GAAA,WAAW,OAAA;AAAE,6GAAA,aAAa,OAAA;AACnC,mCAAkC;AAAzB,gGAAA,MAAM,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,+BAAsC;AAA7B,oGAAA,YAAY,OAAA;AACrB,2CAAkD;AAAzC,gHAAA,kBAAkB,OAAA;AAC3B,iCAAwC;AAA/B,sGAAA,aAAa,OAAA;AACtB,+DAA6D;AAApD,2HAAA,mBAAmB,OAAA;AAC5B,+CAAwF;AAA/E,2GAAA,WAAW,OAAA;AAAE,6GAAA,aAAa,OAAA;AAAE,0HAAA,0BAA0B,OAAA;AAC/D,mCAAkC;AAAzB,gGAAA,MAAM,OAAA"}
@@ -102,24 +102,58 @@ async function ensureTable(name, table, db) {
102
102
  return;
103
103
  }
104
104
  const actualCols = await getActualColumns(name, db);
105
- const schemaMatches = columnsMatch(expectedCols, actualCols);
105
+ // First do a quick column name check
106
+ const colNamesMatch = columnsMatch(expectedCols, actualCols);
107
+ // If column names match, do a detailed schema comparison
108
+ let schemaMatches = colNamesMatch;
109
+ let mismatchReason;
110
+ if (colNamesMatch) {
111
+ const detailed = await schemasMatch(name, table, db);
112
+ schemaMatches = detailed.match;
113
+ mismatchReason = detailed.reason;
114
+ }
115
+ else {
116
+ mismatchReason = `Column names differ: expected [${expectedCols.join(', ')}], got [${actualCols.join(', ')}]`;
117
+ }
106
118
  if (schemaMatches) {
107
119
  logger_1.logger.debug(`Table ${name} is up to date`);
108
120
  return;
109
121
  }
122
+ logger_1.logger.info(`Schema mismatch for ${name}: ${mismatchReason}`);
110
123
  if (!config.autoMigrate) {
111
124
  logger_1.logger.warn(`Table ${name} needs update but auto-migrate is disabled`);
112
125
  return;
113
126
  }
127
+ // Schema mismatch detected - perform migration
114
128
  const hasData = await tableHasData(name, db);
115
- if (hasData && config.preserveData && !config.dropTables) {
116
- logger_1.logger.warn(`Table ${name} has data, skipping update (set dropTables: true to force)`);
117
- return;
129
+ if (hasData && config.preserveData) {
130
+ // Data exists and we want to preserve it - use data-preserving migration
131
+ logger_1.logger.info(`Migrating table ${name} while preserving data...`);
132
+ const result = await (0, transactions_1.migrateTablePreservingData)(name, generateCreateSql(name, table), actualCols, expectedCols);
133
+ if (!result.success) {
134
+ throw result.error;
135
+ }
136
+ const { rowsMigrated, columnsPreserved } = result.result;
137
+ logger_1.logger.info(`Migration complete: ${rowsMigrated} rows preserved, columns: ${columnsPreserved.join(', ')}`);
138
+ // Log columns that were added/removed
139
+ const addedCols = expectedCols.filter(c => !actualCols.includes(c));
140
+ const removedCols = actualCols.filter(c => !expectedCols.includes(c));
141
+ if (addedCols.length > 0) {
142
+ logger_1.logger.info(`Added columns: ${addedCols.join(', ')}`);
143
+ }
144
+ if (removedCols.length > 0) {
145
+ logger_1.logger.warn(`Removed columns (data lost): ${removedCols.join(', ')}`);
146
+ }
147
+ }
148
+ else if (!hasData || config.dropTables) {
149
+ // No data or dropTables is explicitly allowed - just recreate
150
+ logger_1.logger.info(`Recreating empty table: ${name}`);
151
+ await db.run(drizzle_orm_1.sql.raw(`DROP TABLE IF EXISTS "${name}"`));
152
+ await db.run(drizzle_orm_1.sql.raw(generateCreateSql(name, table)));
118
153
  }
119
- logger_1.logger.info(`Recreating table: ${name}`);
120
- const result = await (0, transactions_1.recreateTable)(name, generateCreateSql(name, table));
121
- if (!result.success) {
122
- throw result.error;
154
+ else {
155
+ // This shouldn't happen with the new logic, but keep as safety net
156
+ logger_1.logger.warn(`Table ${name} schema differs but migration skipped`);
123
157
  }
124
158
  }
125
159
  async function tableExists(name, db) {
@@ -153,6 +187,24 @@ async function getActualColumns(name, db) {
153
187
  return [];
154
188
  }
155
189
  }
190
+ async function getActualColumnDetails(name, db) {
191
+ try {
192
+ const result = await db.run((0, drizzle_orm_1.sql) `PRAGMA table_info(${drizzle_orm_1.sql.identifier(name)})`);
193
+ return result.rows?.map((r) => {
194
+ const row = r;
195
+ return {
196
+ name: row.name,
197
+ type: row.type.toUpperCase(),
198
+ notNull: row.notnull === 1,
199
+ defaultValue: row.dflt_value,
200
+ isPrimaryKey: row.pk === 1,
201
+ };
202
+ }) ?? [];
203
+ }
204
+ catch {
205
+ return [];
206
+ }
207
+ }
156
208
  function getColumnNames(table) {
157
209
  const cols = extractColumns(table);
158
210
  return Object.keys(cols);
@@ -214,6 +266,60 @@ function columnsMatch(expected, actual) {
214
266
  const sortedActual = [...actual].sort();
215
267
  return sortedExpected.every((col, i) => col === sortedActual[i]);
216
268
  }
269
+ /**
270
+ * More detailed schema comparison that checks column types and constraints.
271
+ * Returns true if schemas match, false if migration is needed.
272
+ */
273
+ async function schemasMatch(tableName, table, db) {
274
+ const expectedCols = extractColumns(table);
275
+ const actualCols = await getActualColumnDetails(tableName, db);
276
+ // Check column count first
277
+ const expectedNames = Object.keys(expectedCols);
278
+ const actualNames = actualCols.map(c => c.name);
279
+ if (expectedNames.length !== actualNames.length) {
280
+ return {
281
+ match: false,
282
+ reason: `Column count differs: expected ${expectedNames.length}, got ${actualNames.length}`
283
+ };
284
+ }
285
+ // Check if all expected columns exist with correct types
286
+ for (const [colName, expected] of Object.entries(expectedCols)) {
287
+ const actual = actualCols.find(c => c.name === colName);
288
+ if (!actual) {
289
+ return { match: false, reason: `Missing column: ${colName}` };
290
+ }
291
+ // Check type (normalize to SQLite types)
292
+ const expectedType = expected.dataType.toUpperCase();
293
+ const actualType = actual.type.toUpperCase();
294
+ if (expectedType !== actualType) {
295
+ return {
296
+ match: false,
297
+ reason: `Column ${colName} type differs: expected ${expectedType}, got ${actualType}`
298
+ };
299
+ }
300
+ // Check NOT NULL constraint
301
+ if (expected.isNotNull !== actual.notNull && !expected.isPrimary) {
302
+ return {
303
+ match: false,
304
+ reason: `Column ${colName} NOT NULL differs: expected ${expected.isNotNull}, got ${actual.notNull}`
305
+ };
306
+ }
307
+ // Check primary key
308
+ if (expected.isPrimary !== actual.isPrimaryKey) {
309
+ return {
310
+ match: false,
311
+ reason: `Column ${colName} PRIMARY KEY differs: expected ${expected.isPrimary}, got ${actual.isPrimaryKey}`
312
+ };
313
+ }
314
+ }
315
+ // Check for extra columns in database that aren't in schema
316
+ for (const actual of actualCols) {
317
+ if (!expectedCols[actual.name]) {
318
+ return { match: false, reason: `Extra column in database: ${actual.name}` };
319
+ }
320
+ }
321
+ return { match: true };
322
+ }
217
323
  function generateCreateSql(tableName, table) {
218
324
  const cols = extractColumns(table);
219
325
  const columnDefs = [];
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../utils/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../utils/migrations.ts"],"names":[],"mappings":"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"}
@@ -69,4 +69,31 @@ export declare function batch(statements: SQL[]): Promise<TransactionResult<Quer
69
69
  * ```
70
70
  */
71
71
  export declare function recreateTable(tableName: string, createSql: string): Promise<TransactionResult<void>>;
72
+ /**
73
+ * Migrate a table schema while preserving existing data.
74
+ * Uses SQLite's recommended pattern:
75
+ * 1. Create new table with temp name
76
+ * 2. Copy data (matching columns only)
77
+ * 3. Drop old table
78
+ * 4. Rename temp to original
79
+ *
80
+ * @param tableName - Name of the table to migrate
81
+ * @param newCreateSql - CREATE TABLE statement for new schema
82
+ * @param oldColumns - Column names in the existing table
83
+ * @param newColumns - Column names in the new schema
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * const result = await migrateTablePreservingData(
88
+ * 'users',
89
+ * 'CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)',
90
+ * ['id', 'name'], // old columns
91
+ * ['id', 'name', 'email'] // new columns
92
+ * );
93
+ * ```
94
+ */
95
+ export declare function migrateTablePreservingData(tableName: string, newCreateSql: string, oldColumns: string[], newColumns: string[]): Promise<TransactionResult<{
96
+ rowsMigrated: number;
97
+ columnsPreserved: string[];
98
+ }>>;
72
99
  //# sourceMappingURL=transactions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../utils/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAM5C,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAChD;AAkBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,SAAS,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,GAC/C,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAgD/B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,KAAK,CACzB,UAAU,EAAE,GAAG,EAAE,GAChB,OAAO,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,CAQ3C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAMlC"}
1
+ {"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../../utils/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAM5C,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAChD;AAkBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,SAAS,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,GAC/C,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAgD/B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,KAAK,CACzB,UAAU,EAAE,GAAG,EAAE,GAChB,OAAO,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAC,CAQ3C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAMlC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,0BAA0B,CAC9C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,iBAAiB,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAAC,CA+DlF"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.transaction = transaction;
4
4
  exports.batch = batch;
5
5
  exports.recreateTable = recreateTable;
6
+ exports.migrateTablePreservingData = migrateTablePreservingData;
6
7
  const drizzle_orm_1 = require("drizzle-orm");
7
8
  const connection_1 = require("../core/connection");
8
9
  const logger_1 = require("./logger");
@@ -122,4 +123,74 @@ async function recreateTable(tableName, createSql) {
122
123
  logger_1.logger.info(`Recreated table: ${tableName}`);
123
124
  });
124
125
  }
126
+ /**
127
+ * Migrate a table schema while preserving existing data.
128
+ * Uses SQLite's recommended pattern:
129
+ * 1. Create new table with temp name
130
+ * 2. Copy data (matching columns only)
131
+ * 3. Drop old table
132
+ * 4. Rename temp to original
133
+ *
134
+ * @param tableName - Name of the table to migrate
135
+ * @param newCreateSql - CREATE TABLE statement for new schema
136
+ * @param oldColumns - Column names in the existing table
137
+ * @param newColumns - Column names in the new schema
138
+ *
139
+ * @example
140
+ * ```ts
141
+ * const result = await migrateTablePreservingData(
142
+ * 'users',
143
+ * 'CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)',
144
+ * ['id', 'name'], // old columns
145
+ * ['id', 'name', 'email'] // new columns
146
+ * );
147
+ * ```
148
+ */
149
+ async function migrateTablePreservingData(tableName, newCreateSql, oldColumns, newColumns) {
150
+ return transaction(async (tx) => {
151
+ const tempTableName = `__migrate_${tableName}_${Date.now()}`;
152
+ // Disable foreign key checks during migration (SQLite requirement)
153
+ await tx.run(drizzle_orm_1.sql.raw('PRAGMA foreign_keys = OFF'));
154
+ try {
155
+ // Find columns that exist in both old and new schema
156
+ const columnsToPreserve = oldColumns.filter(col => newColumns.includes(col));
157
+ if (columnsToPreserve.length === 0) {
158
+ // No matching columns - just recreate (data will be lost but that's expected)
159
+ await tx.run(drizzle_orm_1.sql.raw(`DROP TABLE IF EXISTS "${tableName}"`));
160
+ await tx.run(drizzle_orm_1.sql.raw(newCreateSql));
161
+ logger_1.logger.warn(`No matching columns for ${tableName}, table recreated empty`);
162
+ await tx.run(drizzle_orm_1.sql.raw('PRAGMA foreign_keys = ON'));
163
+ return { rowsMigrated: 0, columnsPreserved: [] };
164
+ }
165
+ // Step 1: Create new table with temp name
166
+ const tempCreateSql = newCreateSql.replace(new RegExp(`"${tableName}"`, 'i'), `"${tempTableName}"`).replace(new RegExp(`\\b${tableName}\\b`, 'i'), `"${tempTableName}"`);
167
+ await tx.run(drizzle_orm_1.sql.raw(tempCreateSql));
168
+ logger_1.logger.debug(`Created temp table: ${tempTableName}`);
169
+ // Step 2: Copy data from old table to new table (matching columns only)
170
+ const columnList = columnsToPreserve.map(c => `"${c}"`).join(', ');
171
+ const copyResult = await tx.run(drizzle_orm_1.sql.raw(`INSERT INTO "${tempTableName}" (${columnList}) SELECT ${columnList} FROM "${tableName}"`));
172
+ const rowsMigrated = copyResult.changes ?? 0;
173
+ logger_1.logger.debug(`Copied ${rowsMigrated} rows to temp table`);
174
+ // Step 3: Drop old table
175
+ await tx.run(drizzle_orm_1.sql.raw(`DROP TABLE "${tableName}"`));
176
+ logger_1.logger.debug(`Dropped old table: ${tableName}`);
177
+ // Step 4: Rename temp table to original name
178
+ await tx.run(drizzle_orm_1.sql.raw(`ALTER TABLE "${tempTableName}" RENAME TO "${tableName}"`));
179
+ logger_1.logger.info(`Migrated table ${tableName}: ${rowsMigrated} rows preserved, columns: ${columnsToPreserve.join(', ')}`);
180
+ // Re-enable foreign keys and verify integrity
181
+ await tx.run(drizzle_orm_1.sql.raw('PRAGMA foreign_keys = ON'));
182
+ // Check foreign key integrity after migration
183
+ const fkCheck = await tx.run(drizzle_orm_1.sql.raw('PRAGMA foreign_key_check'));
184
+ if (fkCheck.rows && fkCheck.rows.length > 0) {
185
+ logger_1.logger.warn(`Foreign key violations detected after migrating ${tableName}:`, fkCheck.rows);
186
+ }
187
+ return { rowsMigrated, columnsPreserved: columnsToPreserve };
188
+ }
189
+ catch (error) {
190
+ // Re-enable foreign keys even on error
191
+ await tx.run(drizzle_orm_1.sql.raw('PRAGMA foreign_keys = ON'));
192
+ throw error;
193
+ }
194
+ });
195
+ }
125
196
  //# sourceMappingURL=transactions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../utils/transactions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../utils/transactions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nanodb-orm",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "Lightweight ORM wrapper for Drizzle with auto-migrations, schema introspection, and CLI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -32,7 +32,7 @@
32
32
  "cli",
33
33
  "studio"
34
34
  ],
35
- "author": "Damilola Alao",
35
+ "author": "Easy-Deploy-Dev",
36
36
  "license": "MIT",
37
37
  "dependencies": {
38
38
  "@libsql/client": "^0.15.14",