@deessejs/cli 0.6.2 → 0.6.3
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/dist/commands/db-migrate.d.ts +6 -4
- package/dist/commands/db-migrate.d.ts.map +1 -1
- package/dist/commands/db-migrate.js +58 -17
- package/dist/commands/db-migrate.js.map +1 -1
- package/dist/commands/db.d.ts +1 -0
- package/dist/commands/db.d.ts.map +1 -1
- package/dist/commands/db.js +27 -1
- package/dist/commands/db.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* db:migrate command
|
|
3
3
|
*
|
|
4
|
-
* Verifies schema
|
|
4
|
+
* Verifies schema and config exist, then delegates to drizzle-kit CLI.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Requirements:
|
|
7
|
+
* - src/db/schema.ts: Your Drizzle tables
|
|
8
|
+
* - drizzle.config.ts: Standard drizzle-kit config with schema and dbCredentials
|
|
9
|
+
* - .env: Should contain DATABASE_URL
|
|
8
10
|
*/
|
|
9
11
|
export interface DbMigrateOptions {
|
|
10
12
|
cwd?: string;
|
|
11
13
|
dryRun?: boolean;
|
|
12
14
|
}
|
|
13
|
-
export declare function dbMigrate(
|
|
15
|
+
export declare function dbMigrate(options?: DbMigrateOptions): Promise<void>;
|
|
14
16
|
//# sourceMappingURL=db-migrate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-migrate.d.ts","sourceRoot":"","sources":["../../src/commands/db-migrate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"db-migrate.d.ts","sourceRoot":"","sources":["../../src/commands/db-migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiE7E"}
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* db:migrate command
|
|
3
3
|
*
|
|
4
|
-
* Verifies schema
|
|
4
|
+
* Verifies schema and config exist, then delegates to drizzle-kit CLI.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Requirements:
|
|
7
|
+
* - src/db/schema.ts: Your Drizzle tables
|
|
8
|
+
* - drizzle.config.ts: Standard drizzle-kit config with schema and dbCredentials
|
|
9
|
+
* - .env: Should contain DATABASE_URL
|
|
8
10
|
*/
|
|
11
|
+
import { spawn } from 'node:child_process';
|
|
9
12
|
import { verifySchemaPath, SCHEMA_PATH } from '../utils/schema-loader.js';
|
|
10
|
-
|
|
13
|
+
import * as fs from 'node:fs/promises';
|
|
14
|
+
import * as path from 'node:path';
|
|
15
|
+
import * as dotenv from 'dotenv';
|
|
16
|
+
const DRIZZLE_CONFIG_PATH = './drizzle.config.ts';
|
|
17
|
+
export async function dbMigrate(options = {}) {
|
|
18
|
+
const { cwd = process.cwd(), dryRun = false } = options;
|
|
11
19
|
// Verify schema file exists
|
|
12
20
|
try {
|
|
13
21
|
await verifySchemaPath();
|
|
@@ -16,18 +24,51 @@ export async function dbMigrate(_options = {}) {
|
|
|
16
24
|
throw new Error(`db:migrate requires ${SCHEMA_PATH} to exist.\n` +
|
|
17
25
|
`Please create this file and export your Drizzle tables.`);
|
|
18
26
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
`
|
|
27
|
+
// Verify drizzle.config.ts exists
|
|
28
|
+
const drizzleConfigPath = path.join(cwd, DRIZZLE_CONFIG_PATH);
|
|
29
|
+
try {
|
|
30
|
+
await fs.access(drizzleConfigPath);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
throw new Error(`db:migrate requires ${DRIZZLE_CONFIG_PATH} to exist.\n` +
|
|
34
|
+
`Please create this file with your drizzle-kit configuration.\n\n` +
|
|
35
|
+
`Example:\n` +
|
|
36
|
+
`import { defineConfig } from 'drizzle-kit';\n` +
|
|
37
|
+
`export default defineConfig({\n` +
|
|
38
|
+
` schema: './src/db/schema.ts',\n` +
|
|
39
|
+
` out: './src/db/migrations',\n` +
|
|
40
|
+
` dialect: 'postgresql',\n` +
|
|
41
|
+
` dbCredentials: {\n` +
|
|
42
|
+
` url: process.env.DATABASE_URL!,\n` +
|
|
43
|
+
` },\n` +
|
|
44
|
+
`});`);
|
|
45
|
+
}
|
|
46
|
+
console.warn('Applying migrations with drizzle-kit...');
|
|
47
|
+
// Load .env file
|
|
48
|
+
dotenv.config();
|
|
49
|
+
// Build command
|
|
50
|
+
const cmd = dryRun ? 'npx drizzle-kit migrate --dry' : 'npx drizzle-kit migrate';
|
|
51
|
+
// Use spawn with shell:true so .env is inherited
|
|
52
|
+
return new Promise((resolve, reject) => {
|
|
53
|
+
const child = spawn(cmd, {
|
|
54
|
+
cwd,
|
|
55
|
+
stdio: 'inherit',
|
|
56
|
+
shell: true,
|
|
57
|
+
});
|
|
58
|
+
child.on('close', (code) => {
|
|
59
|
+
if (code === 0) {
|
|
60
|
+
resolve();
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
reject(new Error(`Command failed: npx drizzle-kit migrate${dryRun ? ' --dry' : ''}`));
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
child.on('error', (error) => {
|
|
67
|
+
if (error.code === 'ENOENT') {
|
|
68
|
+
reject(new Error('drizzle-kit not found. Please install it: npm install drizzle-kit'));
|
|
69
|
+
}
|
|
70
|
+
reject(error);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
32
73
|
}
|
|
33
74
|
//# sourceMappingURL=db-migrate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-migrate.js","sourceRoot":"","sources":["../../src/commands/db-migrate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"db-migrate.js","sourceRoot":"","sources":["../../src/commands/db-migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAOlD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,UAA4B,EAAE;IAC5D,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAExD,4BAA4B;IAC5B,IAAI,CAAC;QACH,MAAM,gBAAgB,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,uBAAuB,WAAW,cAAc;YAChD,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,uBAAuB,mBAAmB,cAAc;YACxD,kEAAkE;YAClE,YAAY;YACZ,+CAA+C;YAC/C,iCAAiC;YACjC,mCAAmC;YACnC,iCAAiC;YACjC,4BAA4B;YAC5B,sBAAsB;YACtB,uCAAuC;YACvC,QAAQ;YACR,KAAK,CACN,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IAExD,iBAAiB;IACjB,MAAM,CAAC,MAAM,EAAE,CAAC;IAEhB,gBAAgB;IAChB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,yBAAyB,CAAC;IAEjF,iDAAiD;IACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE;YACvB,GAAG;YACH,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,0CAA0C,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACxF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,MAAM,CAAC,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC,CAAC;YACzF,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/commands/db.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B3E;AA0CD,wBAAgB,UAAU,IAAI,IAAI,CA+BjC"}
|
package/dist/commands/db.js
CHANGED
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
* Handles all db:* subcommands:
|
|
5
5
|
* - db:generate Generate migrations from schema changes
|
|
6
6
|
* - db:push Push schema changes directly (dev only)
|
|
7
|
+
* - db:migrate Apply pending migrations to database
|
|
7
8
|
*/
|
|
8
9
|
import { dbGenerate } from './db-generate.js';
|
|
9
10
|
import { dbPush } from './db-push.js';
|
|
11
|
+
import { dbMigrate } from './db-migrate.js';
|
|
10
12
|
export async function runDbCommand(options) {
|
|
11
13
|
const { subcommand, args } = options;
|
|
12
14
|
switch (subcommand) {
|
|
@@ -20,9 +22,14 @@ export async function runDbCommand(options) {
|
|
|
20
22
|
await dbPush(opts);
|
|
21
23
|
break;
|
|
22
24
|
}
|
|
25
|
+
case 'migrate': {
|
|
26
|
+
const opts = parseDbMigrateArgs(args);
|
|
27
|
+
await dbMigrate(opts);
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
23
30
|
default:
|
|
24
31
|
throw new Error(`Unknown db command: ${subcommand}\n` +
|
|
25
|
-
`Valid commands: generate, push`);
|
|
32
|
+
`Valid commands: generate, push, migrate`);
|
|
26
33
|
}
|
|
27
34
|
}
|
|
28
35
|
function parseDbGenerateArgs(args) {
|
|
@@ -46,6 +53,18 @@ function parseDbPushArgs(args) {
|
|
|
46
53
|
}
|
|
47
54
|
return opts;
|
|
48
55
|
}
|
|
56
|
+
function parseDbMigrateArgs(args) {
|
|
57
|
+
const opts = {};
|
|
58
|
+
for (let i = 0; i < args.length; i++) {
|
|
59
|
+
if (args[i] === '--cwd' && i + 1 < args.length) {
|
|
60
|
+
opts.cwd = args[++i];
|
|
61
|
+
}
|
|
62
|
+
else if (args[i] === '--dry-run') {
|
|
63
|
+
opts.dryRun = true;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return opts;
|
|
67
|
+
}
|
|
49
68
|
export function showDbHelp() {
|
|
50
69
|
console.warn(`
|
|
51
70
|
Deesse DB Commands
|
|
@@ -55,6 +74,7 @@ Usage: npx deesse db:<command> [options]
|
|
|
55
74
|
Commands:
|
|
56
75
|
db:generate Generate migrations from schema changes
|
|
57
76
|
db:push Push schema changes directly to database
|
|
77
|
+
db:migrate Apply pending migrations to database
|
|
58
78
|
|
|
59
79
|
Options:
|
|
60
80
|
|
|
@@ -65,10 +85,16 @@ Options:
|
|
|
65
85
|
--cwd <path> Set working directory
|
|
66
86
|
--force, -f Force push without confirmation
|
|
67
87
|
|
|
88
|
+
db:migrate
|
|
89
|
+
--cwd <path> Set working directory
|
|
90
|
+
--dry-run Show what would be migrated without executing
|
|
91
|
+
|
|
68
92
|
Examples:
|
|
69
93
|
npx deesse db:generate
|
|
70
94
|
npx deesse db:push
|
|
71
95
|
npx deesse db:push --force
|
|
96
|
+
npx deesse db:migrate
|
|
97
|
+
npx deesse db:migrate --dry-run
|
|
72
98
|
`);
|
|
73
99
|
}
|
|
74
100
|
//# sourceMappingURL=db.js.map
|
package/dist/commands/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"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"}
|