@deessejs/cli 0.3.2 → 0.5.0
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-generate.d.ts +8 -5
- package/dist/commands/db-generate.d.ts.map +1 -1
- package/dist/commands/db-generate.js +54 -25
- package/dist/commands/db-generate.js.map +1 -1
- package/dist/commands/db-push.d.ts +7 -4
- package/dist/commands/db-push.d.ts.map +1 -1
- package/dist/commands/db-push.js +55 -18
- package/dist/commands/db-push.js.map +1 -1
- package/dist/commands/db-studio.js +1 -1
- package/dist/commands/db.d.ts +0 -3
- package/dist/commands/db.d.ts.map +1 -1
- package/dist/commands/db.js +3 -82
- package/dist/commands/db.js.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* db:generate command
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Generates migrations from schema changes using drizzle-kit's programmatic API.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Flow:
|
|
7
|
+
* 1. Load schema from ./src/db/schema.ts
|
|
8
|
+
* 2. Get current schema snapshot using generateDrizzleJson
|
|
9
|
+
* 3. Get previous snapshot from ./src/db/meta/_snapshot.json (if exists)
|
|
10
|
+
* 4. Generate migration SQL using generateMigration
|
|
11
|
+
* 5. Save new snapshot and migration files
|
|
9
12
|
*/
|
|
10
13
|
export interface DbGenerateOptions {
|
|
11
14
|
cwd?: string;
|
|
12
15
|
}
|
|
13
|
-
export declare function dbGenerate(
|
|
16
|
+
export declare function dbGenerate(options?: DbGenerateOptions): Promise<void>;
|
|
14
17
|
//# sourceMappingURL=db-generate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-generate.d.ts","sourceRoot":"","sources":["../../src/commands/db-generate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"db-generate.d.ts","sourceRoot":"","sources":["../../src/commands/db-generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAeH,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE/E"}
|
|
@@ -1,14 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* db:generate command
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Generates migrations from schema changes using drizzle-kit's programmatic API.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Flow:
|
|
7
|
+
* 1. Load schema from ./src/db/schema.ts
|
|
8
|
+
* 2. Get current schema snapshot using generateDrizzleJson
|
|
9
|
+
* 3. Get previous snapshot from ./src/db/meta/_snapshot.json (if exists)
|
|
10
|
+
* 4. Generate migration SQL using generateMigration
|
|
11
|
+
* 5. Save new snapshot and migration files
|
|
9
12
|
*/
|
|
10
|
-
import
|
|
11
|
-
|
|
13
|
+
import * as fs from 'node:fs/promises';
|
|
14
|
+
import * as path from 'node:path';
|
|
15
|
+
import { createRequire } from 'node:module';
|
|
16
|
+
import { loadSchema, verifySchemaPath } from '../utils/schema-loader.js';
|
|
17
|
+
const require = createRequire(import.meta.url);
|
|
18
|
+
const { generateDrizzleJson, generateMigration } = require('drizzle-kit/api');
|
|
19
|
+
const SCHEMA_PATH = './src/db/schema.ts';
|
|
20
|
+
const MIGRATIONS_DIR = './src/db/migrations';
|
|
21
|
+
const SNAPSHOT_DIR = './src/db/meta';
|
|
22
|
+
const SNAPSHOT_FILE = '_snapshot.json';
|
|
23
|
+
export async function dbGenerate(options = {}) {
|
|
24
|
+
const cwd = options.cwd ?? process.cwd();
|
|
12
25
|
// Verify schema file exists
|
|
13
26
|
try {
|
|
14
27
|
await verifySchemaPath();
|
|
@@ -17,24 +30,40 @@ export async function dbGenerate(_options = {}) {
|
|
|
17
30
|
throw new Error(`db:generate requires ${SCHEMA_PATH} to exist.\n` +
|
|
18
31
|
`Please create this file and export your Drizzle tables.`);
|
|
19
32
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
// Ensure migrations directory exists
|
|
34
|
+
await fs.mkdir(path.join(cwd, MIGRATIONS_DIR), { recursive: true });
|
|
35
|
+
// Ensure snapshot directory exists
|
|
36
|
+
await fs.mkdir(path.join(cwd, SNAPSHOT_DIR), { recursive: true });
|
|
37
|
+
// Load the schema
|
|
38
|
+
const { schema } = await loadSchema();
|
|
39
|
+
// Generate current schema snapshot
|
|
40
|
+
const currentSchema = generateDrizzleJson(schema);
|
|
41
|
+
// Load previous snapshot (if exists)
|
|
42
|
+
let prevSchema = null;
|
|
43
|
+
const snapshotPath = path.join(cwd, SNAPSHOT_DIR, SNAPSHOT_FILE);
|
|
44
|
+
try {
|
|
45
|
+
const snapshotContent = await fs.readFile(snapshotPath, 'utf-8');
|
|
46
|
+
prevSchema = JSON.parse(snapshotContent);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// No previous snapshot - this is the first migration
|
|
50
|
+
console.warn('No previous snapshot found. This will be the first migration.');
|
|
51
|
+
}
|
|
52
|
+
// Generate migration SQL
|
|
53
|
+
const migrationSql = await generateMigration(prevSchema ?? undefined, currentSchema);
|
|
54
|
+
if (!migrationSql || migrationSql.length === 0) {
|
|
55
|
+
console.warn('No changes detected. No migration to generate.');
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Generate migration file name based on timestamp
|
|
59
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
|
|
60
|
+
const migrationName = `${timestamp}_migration.sql`;
|
|
61
|
+
const migrationPath = path.join(cwd, MIGRATIONS_DIR, migrationName);
|
|
62
|
+
// Save migration file
|
|
63
|
+
await fs.writeFile(migrationPath, migrationSql.join('\n\n'));
|
|
64
|
+
// Save new snapshot
|
|
65
|
+
await fs.writeFile(snapshotPath, JSON.stringify(currentSchema, null, 2));
|
|
66
|
+
console.warn(`Generated migration: ${migrationName}`);
|
|
67
|
+
console.warn(`Migration saved to: ${MIGRATIONS_DIR}/${migrationName}`);
|
|
39
68
|
}
|
|
40
69
|
//# sourceMappingURL=db-generate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-generate.js","sourceRoot":"","sources":["../../src/commands/db-generate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"db-generate.js","sourceRoot":"","sources":["../../src/commands/db-generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* db:push command
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Pushes schema changes directly to the database using drizzle-kit's pushSchema.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Flow:
|
|
7
|
+
* 1. Load schema from ./src/db/schema.ts
|
|
8
|
+
* 2. Load config to get database instance
|
|
9
|
+
* 3. Call pushSchema with the schema
|
|
10
|
+
* 4. Show warnings and apply
|
|
8
11
|
*/
|
|
9
12
|
export interface DbPushOptions {
|
|
10
13
|
force?: boolean;
|
|
11
14
|
cwd?: string;
|
|
12
15
|
}
|
|
13
|
-
export declare function dbPush(
|
|
16
|
+
export declare function dbPush(options?: DbPushOptions): Promise<void>;
|
|
14
17
|
//# sourceMappingURL=db-push.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-push.d.ts","sourceRoot":"","sources":["../../src/commands/db-push.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"db-push.d.ts","sourceRoot":"","sources":["../../src/commands/db-push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DvE"}
|
package/dist/commands/db-push.js
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* db:push command
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Pushes schema changes directly to the database using drizzle-kit's pushSchema.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Flow:
|
|
7
|
+
* 1. Load schema from ./src/db/schema.ts
|
|
8
|
+
* 2. Load config to get database instance
|
|
9
|
+
* 3. Call pushSchema with the schema
|
|
10
|
+
* 4. Show warnings and apply
|
|
8
11
|
*/
|
|
9
|
-
import {
|
|
10
|
-
|
|
12
|
+
import { createRequire } from 'node:module';
|
|
13
|
+
import { verifySchemaPath, SCHEMA_PATH, loadSchema } from '../utils/schema-loader.js';
|
|
14
|
+
import { loadConfig } from '../utils/config.js';
|
|
15
|
+
import * as p from '@clack/prompts';
|
|
16
|
+
const require = createRequire(import.meta.url);
|
|
17
|
+
const { pushSchema } = require('drizzle-kit/api');
|
|
18
|
+
export async function dbPush(options = {}) {
|
|
19
|
+
const { force = false } = options;
|
|
11
20
|
// Verify schema file exists
|
|
12
21
|
try {
|
|
13
22
|
await verifySchemaPath();
|
|
@@ -16,18 +25,46 @@ export async function dbPush(_options = {}) {
|
|
|
16
25
|
throw new Error(`db:push requires ${SCHEMA_PATH} to exist.\n` +
|
|
17
26
|
`Please create this file and export your Drizzle tables.`);
|
|
18
27
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
// Load config to get database instance
|
|
29
|
+
const { config } = await loadConfig();
|
|
30
|
+
const db = config.database;
|
|
31
|
+
if (!db) {
|
|
32
|
+
throw new Error('Config does not have a database instance');
|
|
33
|
+
}
|
|
34
|
+
// Load the schema
|
|
35
|
+
const { schema } = await loadSchema();
|
|
36
|
+
// Push schema to database
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
+
const result = await pushSchema(schema, db);
|
|
39
|
+
// Check for data loss
|
|
40
|
+
if (result.hasDataLoss && !force) {
|
|
41
|
+
p.note('The following changes may cause data loss:', 'Warning');
|
|
42
|
+
for (const warning of result.warnings) {
|
|
43
|
+
console.warn(` - ${warning}`);
|
|
44
|
+
}
|
|
45
|
+
console.warn('');
|
|
46
|
+
const confirm = await p.confirm({
|
|
47
|
+
message: 'Do you want to apply these changes anyway?',
|
|
48
|
+
initialValue: false,
|
|
49
|
+
});
|
|
50
|
+
if (p.isCancel(confirm) || !confirm) {
|
|
51
|
+
p.cancel('Push cancelled.');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else if (result.warnings.length > 0) {
|
|
56
|
+
p.note(result.warnings.join('\n'), 'Warnings');
|
|
57
|
+
}
|
|
58
|
+
// Show statements that will be executed
|
|
59
|
+
if (result.statementsToExecute.length > 0) {
|
|
60
|
+
console.warn('The following SQL will be executed:');
|
|
61
|
+
for (const stmt of result.statementsToExecute) {
|
|
62
|
+
console.warn(` ${stmt}`);
|
|
63
|
+
}
|
|
64
|
+
console.warn('');
|
|
65
|
+
}
|
|
66
|
+
// Apply the changes
|
|
67
|
+
await result.apply();
|
|
68
|
+
console.warn(`Successfully pushed ${result.statementsToExecute.length} changes to the database.`);
|
|
32
69
|
}
|
|
33
70
|
//# sourceMappingURL=db-push.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-push.js","sourceRoot":"","sources":["../../src/commands/db-push.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"db-push.js","sourceRoot":"","sources":["../../src/commands/db-push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAOlD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,UAAyB,EAAE;IACtD,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAElC,4BAA4B;IAC5B,IAAI,CAAC;QACH,MAAM,gBAAgB,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,oBAAoB,WAAW,cAAc;YAC7C,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;IACtC,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE3B,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,kBAAkB;IAClB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,EAAE,CAAC;IAEtC,0BAA0B;IAC1B,8DAA8D;IAC9D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,EAAS,CAAC,CAAC;IAEnD,sBAAsB;IACtB,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE,CAAC;QACjC,CAAC,CAAC,IAAI,CAAC,4CAA4C,EAAE,SAAS,CAAC,CAAC;QAChE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEjB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;YAC9B,OAAO,EAAE,4CAA4C;YACrD,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,wCAAwC;IACxC,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,oBAAoB;IACpB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAErB,OAAO,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,mBAAmB,CAAC,MAAM,2BAA2B,CAAC,CAAC;AACpG,CAAC"}
|
|
@@ -43,7 +43,7 @@ Or with custom host/port:
|
|
|
43
43
|
|
|
44
44
|
npx drizzle-kit studio --host ${host} --port ${port}
|
|
45
45
|
|
|
46
|
-
Note:
|
|
46
|
+
Note: Drizzle Studio requires a drizzle.config.ts file. See 'deesse db:generate' for setup.
|
|
47
47
|
`);
|
|
48
48
|
}
|
|
49
49
|
//# sourceMappingURL=db-studio.js.map
|
package/dist/commands/db.d.ts
CHANGED
|
@@ -3,10 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Handles all db:* subcommands:
|
|
5
5
|
* - db:generate Generate migrations from schema changes
|
|
6
|
-
* - db:migrate Apply pending migrations to database
|
|
7
6
|
* - db:push Push schema changes directly (dev only)
|
|
8
|
-
* - db:studio Open Drizzle Studio (database browser)
|
|
9
|
-
* - db:introspect Introspect database and generate schema
|
|
10
7
|
*/
|
|
11
8
|
export interface DbCommandOptions {
|
|
12
9
|
subcommand: string;
|
|
@@ -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;;;;;;GAMG;AAKH,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,CAsB3E;AA4BD,wBAAgB,UAAU,IAAI,IAAI,CAwBjC"}
|
package/dist/commands/db.js
CHANGED
|
@@ -3,16 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Handles all db:* subcommands:
|
|
5
5
|
* - db:generate Generate migrations from schema changes
|
|
6
|
-
* - db:migrate Apply pending migrations to database
|
|
7
6
|
* - db:push Push schema changes directly (dev only)
|
|
8
|
-
* - db:studio Open Drizzle Studio (database browser)
|
|
9
|
-
* - db:introspect Introspect database and generate schema
|
|
10
7
|
*/
|
|
11
8
|
import { dbGenerate } from './db-generate.js';
|
|
12
|
-
import { dbMigrate } from './db-migrate.js';
|
|
13
9
|
import { dbPush } from './db-push.js';
|
|
14
|
-
import { dbStudio } from './db-studio.js';
|
|
15
|
-
import { dbIntrospect } from './db-introspect.js';
|
|
16
10
|
export async function runDbCommand(options) {
|
|
17
11
|
const { subcommand, args } = options;
|
|
18
12
|
switch (subcommand) {
|
|
@@ -21,32 +15,16 @@ export async function runDbCommand(options) {
|
|
|
21
15
|
await dbGenerate(opts);
|
|
22
16
|
break;
|
|
23
17
|
}
|
|
24
|
-
case 'migrate': {
|
|
25
|
-
const opts = parseDbMigrateArgs(args);
|
|
26
|
-
await dbMigrate(opts);
|
|
27
|
-
break;
|
|
28
|
-
}
|
|
29
18
|
case 'push': {
|
|
30
19
|
const opts = parseDbPushArgs(args);
|
|
31
20
|
await dbPush(opts);
|
|
32
21
|
break;
|
|
33
22
|
}
|
|
34
|
-
case 'studio': {
|
|
35
|
-
const opts = parseDbStudioArgs(args);
|
|
36
|
-
await dbStudio(opts);
|
|
37
|
-
break;
|
|
38
|
-
}
|
|
39
|
-
case 'introspect': {
|
|
40
|
-
const opts = parseDbIntrospectArgs(args);
|
|
41
|
-
await dbIntrospect(opts);
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
23
|
default:
|
|
45
24
|
throw new Error(`Unknown db command: ${subcommand}\n` +
|
|
46
|
-
`Valid commands: generate,
|
|
25
|
+
`Valid commands: generate, push`);
|
|
47
26
|
}
|
|
48
27
|
}
|
|
49
|
-
// Argument parsers for each subcommand
|
|
50
28
|
function parseDbGenerateArgs(args) {
|
|
51
29
|
const opts = {};
|
|
52
30
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -56,18 +34,6 @@ function parseDbGenerateArgs(args) {
|
|
|
56
34
|
}
|
|
57
35
|
return opts;
|
|
58
36
|
}
|
|
59
|
-
function parseDbMigrateArgs(args) {
|
|
60
|
-
const opts = {};
|
|
61
|
-
for (let i = 0; i < args.length; i++) {
|
|
62
|
-
if (args[i] === '--cwd' && i + 1 < args.length) {
|
|
63
|
-
opts.cwd = args[++i];
|
|
64
|
-
}
|
|
65
|
-
else if (args[i] === '--dry-run') {
|
|
66
|
-
opts.dryRun = true;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return opts;
|
|
70
|
-
}
|
|
71
37
|
function parseDbPushArgs(args) {
|
|
72
38
|
const opts = {};
|
|
73
39
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -80,33 +46,6 @@ function parseDbPushArgs(args) {
|
|
|
80
46
|
}
|
|
81
47
|
return opts;
|
|
82
48
|
}
|
|
83
|
-
function parseDbStudioArgs(args) {
|
|
84
|
-
const opts = {};
|
|
85
|
-
for (let i = 0; i < args.length; i++) {
|
|
86
|
-
if (args[i] === '--cwd' && i + 1 < args.length) {
|
|
87
|
-
opts.cwd = args[++i];
|
|
88
|
-
}
|
|
89
|
-
else if (args[i] === '--port' && i + 1 < args.length) {
|
|
90
|
-
opts.port = parseInt(args[++i], 10);
|
|
91
|
-
}
|
|
92
|
-
else if (args[i] === '--host' && i + 1 < args.length) {
|
|
93
|
-
opts.host = args[++i];
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return opts;
|
|
97
|
-
}
|
|
98
|
-
function parseDbIntrospectArgs(args) {
|
|
99
|
-
const opts = {};
|
|
100
|
-
for (let i = 0; i < args.length; i++) {
|
|
101
|
-
if (args[i] === '--cwd' && i + 1 < args.length) {
|
|
102
|
-
opts.cwd = args[++i];
|
|
103
|
-
}
|
|
104
|
-
else if (args[i] === '--force' || args[i] === '-f') {
|
|
105
|
-
opts.force = true;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return opts;
|
|
109
|
-
}
|
|
110
49
|
export function showDbHelp() {
|
|
111
50
|
console.warn(`
|
|
112
51
|
Deesse DB Commands
|
|
@@ -115,39 +54,21 @@ Usage: npx deesse db:<command> [options]
|
|
|
115
54
|
|
|
116
55
|
Commands:
|
|
117
56
|
db:generate Generate migrations from schema changes
|
|
118
|
-
db:
|
|
119
|
-
db:push Push schema changes directly (dev only)
|
|
120
|
-
db:studio Open Drizzle Studio (database browser)
|
|
121
|
-
db:introspect Introspect database and generate schema
|
|
57
|
+
db:push Push schema changes directly to database
|
|
122
58
|
|
|
123
59
|
Options:
|
|
124
60
|
|
|
125
61
|
db:generate
|
|
126
62
|
--cwd <path> Set working directory
|
|
127
63
|
|
|
128
|
-
db:migrate
|
|
129
|
-
--cwd <path> Set working directory
|
|
130
|
-
--dry-run Show what would be migrated without executing
|
|
131
|
-
|
|
132
64
|
db:push
|
|
133
65
|
--cwd <path> Set working directory
|
|
134
66
|
--force, -f Force push without confirmation
|
|
135
67
|
|
|
136
|
-
db:studio
|
|
137
|
-
--cwd <path> Set working directory
|
|
138
|
-
--port <port> Set studio port (default: 4983)
|
|
139
|
-
--host <host> Set studio host (default: 127.0.0.1)
|
|
140
|
-
|
|
141
|
-
db:introspect
|
|
142
|
-
--cwd <path> Set working directory
|
|
143
|
-
--force, -f Overwrite existing schema file
|
|
144
|
-
|
|
145
68
|
Examples:
|
|
146
69
|
npx deesse db:generate
|
|
147
|
-
npx deesse db:
|
|
70
|
+
npx deesse db:push
|
|
148
71
|
npx deesse db:push --force
|
|
149
|
-
npx deesse db:studio --port 5000
|
|
150
|
-
npx deesse db:introspect --force
|
|
151
72
|
`);
|
|
152
73
|
}
|
|
153
74
|
//# 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":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAOtC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAyB;IAC1D,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAErC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM;QACR,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CACb,uBAAuB,UAAU,IAAI;gBACrC,gCAAgC,CACjC,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAc;IACzC,MAAM,IAAI,GAAqB,EAAE,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,IAAc;IACrC,MAAM,IAAI,GAAsC,EAAE,CAAC;IAEnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACrD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;CAsBd,CAAC,CAAC;AACH,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,UAAU,GAAG,GAAG,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CACnE,CAAC;QACF,OAAO,WAAW,CAAC,OAAO,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,GAAG,EAAE;IACpB,OAAO,CAAC,IAAI,CAAC;gBACC,UAAU,EAAE
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deessejs/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "DeesseJS CLI for managing DeesseJS projects",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
"author": "DeesseJS",
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@clack/prompts": "^0.8.2"
|
|
27
|
+
"@clack/prompts": "^0.8.2",
|
|
28
|
+
"drizzle-kit": "^0.30.0"
|
|
28
29
|
},
|
|
29
30
|
"devDependencies": {
|
|
30
31
|
"@types/node": "^22.10.6",
|