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 +1 -1
- package/README.md +59 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/migrations.js +114 -8
- package/dist/utils/migrations.js.map +1 -1
- package/dist/utils/transactions.d.ts +27 -0
- package/dist/utils/transactions.d.ts.map +1 -1
- package/dist/utils/transactions.js +71 -0
- package/dist/utils/transactions.js.map +1 -1
- package/package.json +2 -2
package/LICENSE
CHANGED
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 ©
|
|
734
|
+
MIT © Easy-Deploy-Dev
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/utils/index.js
CHANGED
|
@@ -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
|
package/dist/utils/index.js.map
CHANGED
|
@@ -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,+
|
|
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"}
|
package/dist/utils/migrations.js
CHANGED
|
@@ -102,24 +102,58 @@ async function ensureTable(name, table, db) {
|
|
|
102
102
|
return;
|
|
103
103
|
}
|
|
104
104
|
const actualCols = await getActualColumns(name, db);
|
|
105
|
-
|
|
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
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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":";;AAiEA,kCAkDC;AAiBD,sBAUC;AAeD,sCASC;
|
|
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.
|
|
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": "
|
|
35
|
+
"author": "Easy-Deploy-Dev",
|
|
36
36
|
"license": "MIT",
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@libsql/client": "^0.15.14",
|