@datacapy/migrate 0.1.0 → 0.1.1

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/README.md CHANGED
@@ -1,10 +1,12 @@
1
1
  # @datacapy/migrate
2
2
 
3
+ Part of the [DataCapy monorepo](https://github.com/datacapy/datacapy).
4
+
3
5
  Database migration tool for @datacapy/om applications. Manage schema changes, data transformations, and database versioning across multiple datasources with transaction safety and rollback support.
4
6
 
5
7
  ## Features
6
8
 
7
- - **Multi-Datasource Support**: Migrate account-level databases, project-specific databases, or any custom datasource
9
+ - **Multi-Datasource Support**: Migrate main databases, workspace-specific databases, or any custom datasource
8
10
  - **Transaction Safety**: Each patch runs in a transaction with automatic rollback on failure
9
11
  - **Version Tracking**: Track applied migrations in a metadata table
10
12
  - **Dry Run Mode**: Preview changes without applying them
@@ -66,7 +68,7 @@ export default class AddUsersTable implements DatabasePatchInterface {
66
68
  ### 3. Run Migration
67
69
 
68
70
  ```bash
69
- # Migrate account-level database
71
+ # Migrate main database
70
72
  pnpm @datacapy/migrate --config ./migrate.config.js --datasource db
71
73
 
72
74
  # Preview changes first
@@ -87,7 +89,7 @@ pnpm @datacapy/migrate --config ./migrate.config.js --datasource db --verbose
87
89
  ### Required Options
88
90
 
89
91
  - `-c, --config <file>` - Path to migration config file
90
- - `--datasource <name>` - Target datasource name (e.g., 'db', 'project')
92
+ - `--datasource <name>` - Target datasource name (e.g., 'db', 'workspace')
91
93
 
92
94
  ### Optional Options
93
95
 
@@ -102,13 +104,13 @@ pnpm @datacapy/migrate --config ./migrate.config.js --datasource db --verbose
102
104
  ### Examples
103
105
 
104
106
  ```bash
105
- # Migrate account-level database
107
+ # Migrate main database
106
108
  pnpm @datacapy/migrate --config ./migrate.config.js --datasource db
107
109
 
108
- # Migrate specific project database (dynamic datasource)
110
+ # Migrate specific workspace database (dynamic datasource)
109
111
  pnpm @datacapy/migrate --config ./migrate.config.js \\
110
- --datasource project \\
111
- --context projectId=abc123
112
+ --datasource workspace \\
113
+ --context workspaceId=abc123
112
114
 
113
115
  # Dry run to preview changes
114
116
  pnpm @datacapy/migrate --config ./migrate.config.js --datasource db --dry-run
@@ -163,7 +165,7 @@ All patches must implement `DatabasePatchInterface`:
163
165
  export interface DatabasePatchInterface {
164
166
  version: string; // Format: YYYY-MM-DD_HHMM
165
167
  description: string; // Human-readable description
166
- dataSourceName: string; // Target datasource: 'db', 'project', etc.
168
+ dataSourceName: string; // Target datasource: 'db', 'workspace', etc.
167
169
  update(modelManager: ModelManager): Promise<void>;
168
170
  }
169
171
  ```
@@ -272,20 +274,20 @@ export default class SeedDefaultRoles implements DatabasePatchInterface {
272
274
  }
273
275
  ```
274
276
 
275
- #### Project-Specific Migration
277
+ #### Workspace-Specific Migration
276
278
 
277
279
  ```typescript
278
- export default class AddProjectStatus implements DatabasePatchInterface {
280
+ export default class AddWorkspaceStatus implements DatabasePatchInterface {
279
281
  version = "2024-02-08_1000";
280
282
  description = "Add status field to surveys";
281
- dataSourceName = "project"; // Targets dynamic project datasource
283
+ dataSourceName = "workspace"; // Targets dynamic workspace datasource
282
284
 
283
285
  async update(modelManager: ModelManager): Promise<void> {
284
- // Get project datasource (resolved via CLI --context)
285
- const projectDS = modelManager.getDataSource("project");
286
+ // Get workspace datasource (resolved via CLI --context)
287
+ const workspaceDS = modelManager.getDataSource("workspace");
286
288
 
287
- // Update all surveys in this project
288
- await projectDS.updateMany(
289
+ // Update all surveys in this workspace
290
+ await workspaceDS.updateMany(
289
291
  "surveys",
290
292
  {},
291
293
  {
@@ -300,33 +302,33 @@ export default class AddProjectStatus implements DatabasePatchInterface {
300
302
 
301
303
  @datacapy/migrate supports migrating multiple datasources independently:
302
304
 
303
- ### Account-Level Migrations
305
+ ### Main-Database Migrations
304
306
 
305
- Migrate the main account database:
307
+ Migrate the main database:
306
308
 
307
309
  ```bash
308
310
  pnpm @datacapy/migrate --config ./migrate.config.js --datasource db
309
311
  ```
310
312
 
311
- ### Project-Level Migrations
313
+ ### Workspace-Level Migrations
312
314
 
313
- Migrate a specific project's database:
315
+ Migrate a specific workspace's database:
314
316
 
315
317
  ```bash
316
318
  pnpm @datacapy/migrate --config ./migrate.config.js \\
317
- --datasource project \\
318
- --context projectId=abc123
319
+ --datasource workspace \\
320
+ --context workspaceId=abc123
319
321
  ```
320
322
 
321
- ### Migrating Multiple Projects
323
+ ### Migrating Multiple Workspaces
322
324
 
323
325
  ```bash
324
- # Get all project IDs, then migrate each
325
- for projectId in $(get-project-ids); do
326
- echo "Migrating project $projectId..."
326
+ # Get all workspace IDs, then migrate each
327
+ for workspaceId in $(get-workspace-ids); do
328
+ echo "Migrating workspace $workspaceId..."
327
329
  pnpm @datacapy/migrate --config ./migrate.config.js \\
328
- --datasource project \\
329
- --context projectId=$projectId
330
+ --datasource workspace \\
331
+ --context workspaceId=$workspaceId
330
332
  done
331
333
  ```
332
334
 
@@ -562,14 +564,14 @@ export default class SeedData implements DatabasePatchInterface {
562
564
 
563
565
  ### Migration Fails with "Datasource not found"
564
566
 
565
- **Problem:** Cannot find datasource 'project'
567
+ **Problem:** Cannot find datasource 'workspace'
566
568
 
567
569
  **Solution:** Dynamic datasources need context:
568
570
 
569
571
  ```bash
570
572
  pnpm @datacapy/migrate --config ./migrate.config.js \\
571
- --datasource project \\
572
- --context projectId=abc123
573
+ --datasource workspace \\
574
+ --context workspaceId=abc123
573
575
  ```
574
576
 
575
577
  ### Patch Throws "Duplicate key error"
@@ -83,13 +83,13 @@ USAGE:
83
83
 
84
84
  REQUIRED OPTIONS:
85
85
  -c, --config <file> Path to migration config file
86
- --datasource <name> Target datasource name (e.g., 'db', 'project')
86
+ --datasource <name> Target datasource name (e.g., 'db', 'workspace')
87
87
 
88
88
  OPTIONAL OPTIONS:
89
89
  --context <key=value> Context for dynamic datasources (can be specified multiple times)
90
- Example: --context projectId=abc123
90
+ Example: --context workspaceId=abc123
91
91
  --context-lookup <pattern> Lookup pattern for batch migrations across multiple contexts
92
- Example: --context-lookup "*" (migrate all projects)
92
+ Example: --context-lookup "*" (migrate all workspaces)
93
93
  Requires contextResolver to be configured
94
94
  -d, --patch-dir <dir> Patch directory (default: ./migrate)
95
95
  -t, --target <version> Target version to migrate to (default: latest)
@@ -100,14 +100,14 @@ OPTIONAL OPTIONS:
100
100
  --version Show package version
101
101
 
102
102
  EXAMPLES:
103
- # Migrate account-level database
103
+ # Migrate main database
104
104
  @datacapy/migrate --config ./migrate.config.js --datasource db
105
105
 
106
- # Migrate specific project database
107
- @datacapy/migrate --config ./migrate.config.js --datasource project --context projectId=abc123
106
+ # Migrate specific workspace database
107
+ @datacapy/migrate --config ./migrate.config.js --datasource workspace --context workspaceId=abc123
108
108
 
109
- # Migrate ALL project databases (batch migration)
110
- @datacapy/migrate --config ./migrate.config.js --datasource project --context-lookup "*"
109
+ # Migrate ALL workspace databases (batch migration)
110
+ @datacapy/migrate --config ./migrate.config.js --datasource workspace --context-lookup "*"
111
111
 
112
112
  # Dry run to preview changes
113
113
  @datacapy/migrate --config ./migrate.config.js --datasource db --dry-run
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- export { MigrationManager } from "./manager/migration-manager.js";
2
- export { VersionManager } from "./version/version-manager.js";
3
- export { MetaTable, MetaRecord } from "./meta/meta-table.js";
4
- export { PatchScanner } from "./scanner/patch-scanner.js";
5
- export { PatchExecutor } from "./executor/patch-executor.js";
6
- export { MigrationLogger } from "./logger/migration-logger.js";
7
- export { DatabasePatchInterface } from "./interface/database-patch.js";
8
- export { ContextResolver } from "./interface/context-resolver.js";
9
- export { MigrationConfig, MigrationConfigResolved, } from "./interface/migration-config.js";
10
- export { MigrationResult, PatchResult, PatchFile, } from "./interface/migration-result.js";
11
- export { CommandParser, CliArguments } from "./cli/command-parser.js";
12
- export { CliRunner } from "./cli/runner.js";
1
+ export { MigrationManager } from "./manager/migration-manager";
2
+ export { VersionManager } from "./version/version-manager";
3
+ export { MetaTable, MetaRecord } from "./meta/meta-table";
4
+ export { PatchScanner } from "./scanner/patch-scanner";
5
+ export { PatchExecutor } from "./executor/patch-executor";
6
+ export { MigrationLogger } from "./logger/migration-logger";
7
+ export { DatabasePatchInterface } from "./interface/database-patch";
8
+ export { ContextResolver } from "./interface/context-resolver";
9
+ export { MigrationConfig, MigrationConfigResolved, } from "./interface/migration-config";
10
+ export { MigrationResult, PatchResult, PatchFile, } from "./interface/migration-result";
11
+ export { CommandParser, CliArguments } from "./cli/command-parser";
12
+ export { CliRunner } from "./cli/runner";
13
13
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,20 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CliRunner = exports.CommandParser = exports.MigrationLogger = exports.PatchExecutor = exports.PatchScanner = exports.MetaTable = exports.VersionManager = exports.MigrationManager = void 0;
4
- var migration_manager_1 = require("./manager/migration-manager.js");
4
+ var migration_manager_1 = require("./manager/migration-manager");
5
5
  Object.defineProperty(exports, "MigrationManager", { enumerable: true, get: function () { return migration_manager_1.MigrationManager; } });
6
- var version_manager_1 = require("./version/version-manager.js");
6
+ var version_manager_1 = require("./version/version-manager");
7
7
  Object.defineProperty(exports, "VersionManager", { enumerable: true, get: function () { return version_manager_1.VersionManager; } });
8
- var meta_table_1 = require("./meta/meta-table.js");
8
+ var meta_table_1 = require("./meta/meta-table");
9
9
  Object.defineProperty(exports, "MetaTable", { enumerable: true, get: function () { return meta_table_1.MetaTable; } });
10
- var patch_scanner_1 = require("./scanner/patch-scanner.js");
10
+ var patch_scanner_1 = require("./scanner/patch-scanner");
11
11
  Object.defineProperty(exports, "PatchScanner", { enumerable: true, get: function () { return patch_scanner_1.PatchScanner; } });
12
- var patch_executor_1 = require("./executor/patch-executor.js");
12
+ var patch_executor_1 = require("./executor/patch-executor");
13
13
  Object.defineProperty(exports, "PatchExecutor", { enumerable: true, get: function () { return patch_executor_1.PatchExecutor; } });
14
- var migration_logger_1 = require("./logger/migration-logger.js");
14
+ var migration_logger_1 = require("./logger/migration-logger");
15
15
  Object.defineProperty(exports, "MigrationLogger", { enumerable: true, get: function () { return migration_logger_1.MigrationLogger; } });
16
- var command_parser_1 = require("./cli/command-parser.js");
16
+ var command_parser_1 = require("./cli/command-parser");
17
17
  Object.defineProperty(exports, "CommandParser", { enumerable: true, get: function () { return command_parser_1.CommandParser; } });
18
- var runner_1 = require("./cli/runner.js");
18
+ var runner_1 = require("./cli/runner");
19
19
  Object.defineProperty(exports, "CliRunner", { enumerable: true, get: function () { return runner_1.CliRunner; } });
20
20
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@datacapy/migrate",
3
3
  "type": "commonjs",
4
- "version": "0.1.0",
4
+ "version": "0.1.1",
5
5
  "description": "Datacapy migrate: database migration runner",
6
6
  "main": "./dist/index",
7
7
  "types": "./dist/index.d.ts",
@@ -21,16 +21,16 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "@datacapy/id": "0.1.0",
24
- "@datacapy/om": "0.1.0"
24
+ "@datacapy/om": "0.2.0"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/jest": "^30.0.0",
28
- "@types/node": "^25.9.8",
28
+ "@types/node": "^26.6.4",
29
29
  "jest": "^30.5.2",
30
30
  "prettier": "^3.9.9",
31
31
  "ts-jest": "^29.4.14",
32
32
  "ts-node": "^10.9.2",
33
- "tsc-alias": "1.9.5",
33
+ "tsc-alias": "1.9.1",
34
34
  "typescript": "^6.0.3"
35
35
  },
36
36
  "files": [