@deessejs/cli 0.1.0 → 0.3.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.
Files changed (43) hide show
  1. package/dist/commands/db-generate.d.ts +17 -0
  2. package/dist/commands/db-generate.d.ts.map +1 -0
  3. package/dist/commands/db-generate.js +67 -0
  4. package/dist/commands/db-generate.js.map +1 -0
  5. package/dist/commands/db-introspect.d.ts +16 -0
  6. package/dist/commands/db-introspect.d.ts.map +1 -0
  7. package/dist/commands/db-introspect.js +82 -0
  8. package/dist/commands/db-introspect.js.map +1 -0
  9. package/dist/commands/db-migrate.d.ts +16 -0
  10. package/dist/commands/db-migrate.d.ts.map +1 -0
  11. package/dist/commands/db-migrate.js +77 -0
  12. package/dist/commands/db-migrate.js.map +1 -0
  13. package/dist/commands/db-push.d.ts +18 -0
  14. package/dist/commands/db-push.d.ts.map +1 -0
  15. package/dist/commands/db-push.js +69 -0
  16. package/dist/commands/db-push.js.map +1 -0
  17. package/dist/commands/db-studio.d.ts +16 -0
  18. package/dist/commands/db-studio.d.ts.map +1 -0
  19. package/dist/commands/db-studio.js +72 -0
  20. package/dist/commands/db-studio.js.map +1 -0
  21. package/dist/commands/db.d.ts +17 -0
  22. package/dist/commands/db.d.ts.map +1 -0
  23. package/dist/commands/db.js +153 -0
  24. package/dist/commands/db.js.map +1 -0
  25. package/dist/index.js +45 -18
  26. package/dist/index.js.map +1 -1
  27. package/dist/utils/config.d.ts +15 -0
  28. package/dist/utils/config.d.ts.map +1 -0
  29. package/dist/utils/config.js +47 -0
  30. package/dist/utils/config.js.map +1 -0
  31. package/dist/utils/dialect.d.ts +23 -0
  32. package/dist/utils/dialect.d.ts.map +1 -0
  33. package/dist/utils/dialect.js +82 -0
  34. package/dist/utils/dialect.js.map +1 -0
  35. package/dist/utils/schema-generator.d.ts +25 -0
  36. package/dist/utils/schema-generator.d.ts.map +1 -0
  37. package/dist/utils/schema-generator.js +157 -0
  38. package/dist/utils/schema-generator.js.map +1 -0
  39. package/dist/utils/schema-loader.d.ts +16 -0
  40. package/dist/utils/schema-loader.d.ts.map +1 -0
  41. package/dist/utils/schema-loader.js +46 -0
  42. package/dist/utils/schema-loader.js.map +1 -0
  43. package/package.json +9 -2
@@ -0,0 +1,153 @@
1
+ /**
2
+ * db command dispatcher
3
+ *
4
+ * Handles all db:* subcommands:
5
+ * - db:generate Generate migrations from schema changes
6
+ * - db:migrate Apply pending migrations to database
7
+ * - 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
+ */
11
+ import { dbGenerate } from './db-generate.js';
12
+ import { dbMigrate } from './db-migrate.js';
13
+ import { dbPush } from './db-push.js';
14
+ import { dbStudio } from './db-studio.js';
15
+ import { dbIntrospect } from './db-introspect.js';
16
+ export async function runDbCommand(options) {
17
+ const { subcommand, args } = options;
18
+ switch (subcommand) {
19
+ case 'generate': {
20
+ const opts = parseDbGenerateArgs(args);
21
+ await dbGenerate(opts);
22
+ break;
23
+ }
24
+ case 'migrate': {
25
+ const opts = parseDbMigrateArgs(args);
26
+ await dbMigrate(opts);
27
+ break;
28
+ }
29
+ case 'push': {
30
+ const opts = parseDbPushArgs(args);
31
+ await dbPush(opts);
32
+ break;
33
+ }
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
+ default:
45
+ throw new Error(`Unknown db command: ${subcommand}\n` +
46
+ `Valid commands: generate, migrate, push, studio, introspect`);
47
+ }
48
+ }
49
+ // Argument parsers for each subcommand
50
+ function parseDbGenerateArgs(args) {
51
+ const opts = {};
52
+ for (let i = 0; i < args.length; i++) {
53
+ if (args[i] === '--cwd' && i + 1 < args.length) {
54
+ opts.cwd = args[++i];
55
+ }
56
+ }
57
+ return opts;
58
+ }
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
+ function parseDbPushArgs(args) {
72
+ const opts = {};
73
+ for (let i = 0; i < args.length; i++) {
74
+ if (args[i] === '--cwd' && i + 1 < args.length) {
75
+ opts.cwd = args[++i];
76
+ }
77
+ else if (args[i] === '--force' || args[i] === '-f') {
78
+ opts.force = true;
79
+ }
80
+ }
81
+ return opts;
82
+ }
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
+ export function showDbHelp() {
111
+ console.warn(`
112
+ Deesse DB Commands
113
+
114
+ Usage: npx deesse db:<command> [options]
115
+
116
+ Commands:
117
+ db:generate Generate migrations from schema changes
118
+ db:migrate Apply pending migrations to database
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
122
+
123
+ Options:
124
+
125
+ db:generate
126
+ --cwd <path> Set working directory
127
+
128
+ db:migrate
129
+ --cwd <path> Set working directory
130
+ --dry-run Show what would be migrated without executing
131
+
132
+ db:push
133
+ --cwd <path> Set working directory
134
+ --force, -f Force push without confirmation
135
+
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
+ Examples:
146
+ npx deesse db:generate
147
+ npx deesse db:migrate --dry-run
148
+ npx deesse db:push --force
149
+ npx deesse db:studio --port 5000
150
+ npx deesse db:introspect --force
151
+ `);
152
+ }
153
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import * as p from '@clack/prompts';
3
3
  import { readFileSync } from 'node:fs';
4
4
  import { execSync } from 'node:child_process';
5
+ import { runDbCommand, showDbHelp } from './commands/db.js';
5
6
  const getVersion = () => {
6
7
  try {
7
8
  const packageJson = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf-8'));
@@ -12,22 +13,24 @@ const getVersion = () => {
12
13
  }
13
14
  };
14
15
  const showHelp = () => {
15
- console.log(`
16
- DeesseJS CLI v${getVersion()}
17
-
18
- Usage: npx deesse <command>
19
-
20
- Commands:
21
- help Show this help message
22
- init Initialize a new DeesseJS project in current directory
23
-
24
- Examples:
25
- npx deesse help
26
- npx deesse init
27
-
28
- More commands coming soon!
29
-
30
- For more information, visit: https://github.com/nesalia-inc/deessejs
16
+ console.warn(`
17
+ DeesseJS CLI v${getVersion()}
18
+
19
+ Usage: npx deesse <command>
20
+
21
+ Commands:
22
+ help Show this help message
23
+ init Initialize a new DeesseJS project in current directory
24
+ db Database management commands (db:generate, db:push, etc.)
25
+
26
+ Examples:
27
+ npx deesse help
28
+ npx deesse init
29
+ npx deesse db:generate
30
+ npx deesse db:push --force
31
+ npx deesse db:studio
32
+
33
+ For more information, visit: https://github.com/nesalia-inc/deessejs
31
34
  `);
32
35
  };
33
36
  const runInit = async () => {
@@ -56,6 +59,30 @@ const runInit = async () => {
56
59
  async function main() {
57
60
  const args = process.argv.slice(2);
58
61
  const command = args[0] || 'help';
62
+ // Handle db:* commands
63
+ if (command.startsWith('db:')) {
64
+ const subcommand = command.slice(3); // Remove 'db:' prefix
65
+ if (!subcommand) {
66
+ showDbHelp();
67
+ return;
68
+ }
69
+ // Special case: 'db help' or 'db --help'
70
+ if (subcommand === 'help' || subcommand === '--help' || subcommand === '-h') {
71
+ showDbHelp();
72
+ return;
73
+ }
74
+ try {
75
+ await runDbCommand({
76
+ subcommand,
77
+ args: args.slice(1), // Pass all args including the subcommand
78
+ });
79
+ }
80
+ catch (error) {
81
+ console.error(`Error: ${error.message}`);
82
+ process.exit(1);
83
+ }
84
+ return;
85
+ }
59
86
  switch (command) {
60
87
  case 'help':
61
88
  case '--help':
@@ -66,8 +93,8 @@ async function main() {
66
93
  await runInit();
67
94
  break;
68
95
  default:
69
- console.log(`Unknown command: ${command}`);
70
- console.log('Run "npx deesse help" for usage information.');
96
+ console.error(`Unknown command: ${command}`);
97
+ console.error('Run "npx deesse help" for usage information.');
71
98
  process.exit(1);
72
99
  }
73
100
  }
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;AAE9C,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,GAAG,CAAC;gBACE,UAAU,EAAE;;;;;;;;;;;;;;;GAezB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;IACzB,IAAI,CAAC;QACH,CAAC,CAAC,KAAK,CAAC,iBAAiB,UAAU,EAAE,EAAE,CAAC,CAAC;QAEzC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;YAC9B,OAAO,EAAE,6DAA6D;SACvE,CAAC,CAAC;QAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,CAAC,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,+CAA+C;QAC/C,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAChE,QAAQ,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAEjE,CAAC,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;QACzC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IAElC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,QAAQ,EAAE,CAAC;YACX,MAAM;QAER,KAAK,MAAM;YACT,MAAM,OAAO,EAAE,CAAC;YAChB,MAAM;QAER;YACE,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Config loader utility
3
+ *
4
+ * Dynamically imports the user's deesse.config.ts to get the database instance.
5
+ */
6
+ export interface DeesseConfig {
7
+ database: unknown;
8
+ }
9
+ export interface LoadedConfig {
10
+ config: DeesseConfig;
11
+ configPath: string;
12
+ }
13
+ export declare function loadConfig(): Promise<LoadedConfig>;
14
+ export declare function verifyConfigPath(): Promise<string>;
15
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,wBAAsB,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,CAoCxD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAaxD"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Config loader utility
3
+ *
4
+ * Dynamically imports the user's deesse.config.ts to get the database instance.
5
+ */
6
+ import * as path from 'node:path';
7
+ import * as url from 'node:url';
8
+ const CONFIG_PATH = './src/deesse.config.ts';
9
+ export async function loadConfig() {
10
+ const configPath = path.resolve(process.cwd(), CONFIG_PATH);
11
+ // Try to load the config file
12
+ let configModule;
13
+ try {
14
+ configModule = await import(url.pathToFileURL(configPath).href);
15
+ }
16
+ catch (error) {
17
+ if (error.code === 'ENOENT') {
18
+ throw new Error(`Config file not found: ${CONFIG_PATH}\n` +
19
+ `Please create this file with your database configuration.`);
20
+ }
21
+ throw error;
22
+ }
23
+ // Handle both named export and default export patterns
24
+ const config = configModule.config ?? configModule.default?.config;
25
+ if (!config) {
26
+ throw new Error(`Config file ${CONFIG_PATH} does not export a 'config' object.\n` +
27
+ `Please ensure your config file contains: export const config = defineConfig({ ... })`);
28
+ }
29
+ if (!config.database) {
30
+ throw new Error(`Config does not have a 'database' property.\n` +
31
+ `Please add a database configuration using drizzle().`);
32
+ }
33
+ return { config, configPath };
34
+ }
35
+ export async function verifyConfigPath() {
36
+ const { stat } = await import('node:fs/promises');
37
+ const configPath = path.resolve(process.cwd(), CONFIG_PATH);
38
+ try {
39
+ await stat(configPath);
40
+ return configPath;
41
+ }
42
+ catch {
43
+ throw new Error(`Config file not found: ${CONFIG_PATH}\n` +
44
+ `Please create this file with your database configuration.`);
45
+ }
46
+ }
47
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAWhC,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAE5D,8BAA8B;IAC9B,IAAI,YAA4E,CAAC;IAEjF,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,IAAI;gBACzC,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,uDAAuD;IACvD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;IAEnE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,eAAe,WAAW,uCAAuC;YACjE,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,+CAA+C;YAC/C,sDAAsD,CACvD,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,0BAA0B,WAAW,IAAI;YACzC,2DAA2D,CAC5D,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Dialect detection utility
3
+ *
4
+ * Detects the database dialect from a Drizzle database instance.
5
+ * Supports PostgreSQL, MySQL, and SQLite.
6
+ */
7
+ export type Dialect = 'postgresql' | 'mysql' | 'sqlite';
8
+ /**
9
+ * Detect the database dialect from a Drizzle database instance
10
+ */
11
+ export declare function detectDialect(db: unknown): Dialect;
12
+ /**
13
+ * Get connection credentials from a database instance
14
+ */
15
+ export interface ConnectionCredentials {
16
+ host: string;
17
+ port: number;
18
+ user: string;
19
+ password: string;
20
+ database: string;
21
+ }
22
+ export declare function getConnectionCredentials(db: unknown): ConnectionCredentials;
23
+ //# sourceMappingURL=dialect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialect.d.ts","sourceRoot":"","sources":["../../src/utils/dialect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExD;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CA6ClD;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,OAAO,GAAG,qBAAqB,CA6C3E"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Dialect detection utility
3
+ *
4
+ * Detects the database dialect from a Drizzle database instance.
5
+ * Supports PostgreSQL, MySQL, and SQLite.
6
+ */
7
+ /**
8
+ * Detect the database dialect from a Drizzle database instance
9
+ */
10
+ export function detectDialect(db) {
11
+ if (!db || typeof db !== 'object') {
12
+ throw new Error('Invalid database instance');
13
+ }
14
+ const dbObj = db;
15
+ const client = dbObj['$client'];
16
+ if (!client) {
17
+ throw new Error('Invalid database instance: no $client');
18
+ }
19
+ // For pg Pool - has query method
20
+ if (client['query'] !== undefined &&
21
+ typeof client['query'] === 'function') {
22
+ return 'postgresql';
23
+ }
24
+ // For postgres-js client - has options
25
+ if (client['options'] !== undefined) {
26
+ return 'postgresql';
27
+ }
28
+ // For mysql2 - has connection
29
+ if (client['connection'] !== undefined &&
30
+ client['query'] === undefined) {
31
+ return 'mysql';
32
+ }
33
+ // For SQLite (better-sqlite3 or libsql)
34
+ if (client['name'] === 'sqlite' ||
35
+ client['open'] !== undefined) {
36
+ return 'sqlite';
37
+ }
38
+ // Default to PostgreSQL as it's the most common
39
+ return 'postgresql';
40
+ }
41
+ export function getConnectionCredentials(db) {
42
+ const dbObj = db;
43
+ const client = dbObj['$client'];
44
+ if (!client) {
45
+ throw new Error('Cannot extract connection credentials: database instance has no $client');
46
+ }
47
+ // For pg Pool - has connectionParameters
48
+ if (client['connectionParameters']) {
49
+ const params = client['connectionParameters'];
50
+ return {
51
+ host: String(params['host'] ?? 'localhost'),
52
+ port: Number(params['port'] ?? 5432),
53
+ user: String(params['user'] ?? 'postgres'),
54
+ password: String(params['password'] ?? ''),
55
+ database: String(params['database'] ?? 'postgres'),
56
+ };
57
+ }
58
+ // For postgres-js
59
+ if (client['options']) {
60
+ const options = client['options'];
61
+ return {
62
+ host: String(options['host'] ?? 'localhost'),
63
+ port: Number(options['port'] ?? 5432),
64
+ user: String(options['user'] ?? 'postgres'),
65
+ password: String(options['password'] ?? ''),
66
+ database: String(options['database'] ?? 'postgres'),
67
+ };
68
+ }
69
+ // For mysql2
70
+ if (client['connection']) {
71
+ const conn = client['connection'];
72
+ return {
73
+ host: String(conn['host'] ?? 'localhost'),
74
+ port: Number(conn['port'] ?? 3306),
75
+ user: String(conn['user'] ?? 'root'),
76
+ password: String(conn['password'] ?? ''),
77
+ database: String(conn['database'] ?? 'mysql'),
78
+ };
79
+ }
80
+ throw new Error('Cannot determine connection credentials from database client');
81
+ }
82
+ //# sourceMappingURL=dialect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialect.js","sourceRoot":"","sources":["../../src/utils/dialect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Schema generator utility
3
+ *
4
+ * Converts introspected database schema JSON to TypeScript code.
5
+ * This is used by db:introspect to generate a schema.ts file.
6
+ */
7
+ import type { Dialect } from './dialect.js';
8
+ interface IntrospectedTable {
9
+ name: string;
10
+ schema?: string;
11
+ columns: Array<{
12
+ name: string;
13
+ type: string;
14
+ isNullable: boolean;
15
+ isArray?: boolean;
16
+ default?: string | null;
17
+ primaryKey?: boolean;
18
+ unique?: boolean;
19
+ }>;
20
+ }
21
+ export declare function generateSchema(schema: {
22
+ tables?: IntrospectedTable[];
23
+ }, dialect: Dialect): string;
24
+ export {};
25
+ //# sourceMappingURL=schema-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-generator.d.ts","sourceRoot":"","sources":["../../src/utils/schema-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;CACJ;AA6JD,wBAAgB,cAAc,CAC5B,MAAM,EAAE;IAAE,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAA;CAAE,EACxC,OAAO,EAAE,OAAO,GACf,MAAM,CAiCR"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Schema generator utility
3
+ *
4
+ * Converts introspected database schema JSON to TypeScript code.
5
+ * This is used by db:introspect to generate a schema.ts file.
6
+ */
7
+ // Mapping of PostgreSQL column types to Drizzle column types
8
+ const PG_TYPE_TO_DRIZZLE = {
9
+ // Numeric types
10
+ 'integer': 'integer',
11
+ 'bigint': 'bigint',
12
+ 'smallint': 'smallint',
13
+ 'numeric': 'numeric',
14
+ 'decimal': 'decimal',
15
+ 'real': 'real',
16
+ 'double precision': 'doublePrecision',
17
+ 'serial': 'serial',
18
+ 'bigserial': 'bigserial',
19
+ 'smallserial': 'smallserial',
20
+ // Character types
21
+ 'character varying': 'varchar',
22
+ 'varchar': 'varchar',
23
+ 'character': 'char',
24
+ 'char': 'char',
25
+ 'text': 'text',
26
+ // Date/time types
27
+ 'timestamp': 'timestamp',
28
+ 'timestamp without time zone': 'timestamp',
29
+ 'timestamp with time zone': 'timestamp',
30
+ 'date': 'date',
31
+ 'time': 'time',
32
+ 'time without time zone': 'time',
33
+ 'time with time zone': 'time',
34
+ 'interval': 'interval',
35
+ // Boolean
36
+ 'boolean': 'boolean',
37
+ // UUID
38
+ 'uuid': 'uuid',
39
+ // JSON types
40
+ 'json': 'json',
41
+ 'jsonb': 'jsonb',
42
+ // Binary
43
+ 'bytea': 'bytea',
44
+ // Array types (simplified)
45
+ 'array': 'array',
46
+ // Network types
47
+ 'inet': 'inet',
48
+ 'cidr': 'cidr',
49
+ 'macaddr': 'macaddr',
50
+ 'macaddr8': 'macaddr8',
51
+ // Other
52
+ 'money': 'money',
53
+ 'bit': 'bit',
54
+ 'bit varying': 'varbit',
55
+ 'xml': 'xml',
56
+ 'point': 'point',
57
+ 'line': 'line',
58
+ 'lseg': 'lseg',
59
+ 'box': 'box',
60
+ 'path': 'path',
61
+ 'polygon': 'polygon',
62
+ 'circle': 'circle',
63
+ };
64
+ function mapColumnType(pgType, isArray) {
65
+ let drizzleType = PG_TYPE_TO_DRIZZLE[pgType.toLowerCase()];
66
+ if (!drizzleType) {
67
+ // For unknown types, use a placeholder or the original type
68
+ console.warn(`Unknown PostgreSQL type: ${pgType}, using 'text' as fallback`);
69
+ drizzleType = 'text';
70
+ }
71
+ if (isArray) {
72
+ return `(${drizzleType}())`;
73
+ }
74
+ return drizzleType;
75
+ }
76
+ function generateColumn(column) {
77
+ const { name, type, isNullable, isArray, default: defaultValue, primaryKey, unique } = column;
78
+ const columnName = name.includes(' ') || name.includes('-')
79
+ ? `"${name}"`
80
+ : `'${name}'`;
81
+ let line = ` ${name.includes(' ') || name.includes('-') ? `"${name}"` : name}: ${mapColumnType(type, isArray ?? false)}(${columnName})`;
82
+ if (!isNullable) {
83
+ line += '.notNull()';
84
+ }
85
+ if (defaultValue !== undefined && defaultValue !== null) {
86
+ // Handle different default value formats
87
+ if (defaultValue === 'now()' || defaultValue === 'CURRENT_TIMESTAMP') {
88
+ line += '.defaultNow()';
89
+ }
90
+ else if (defaultValue === 'true' || defaultValue === 'false') {
91
+ line += `.default(${defaultValue})`;
92
+ }
93
+ else if (!isNaN(Number(defaultValue))) {
94
+ line += `.default(${defaultValue})`;
95
+ }
96
+ else {
97
+ line += `.default('${String(defaultValue).replace(/'/g, "\\'")}')`;
98
+ }
99
+ }
100
+ if (primaryKey) {
101
+ line += '.primaryKey()';
102
+ }
103
+ if (unique && !primaryKey) {
104
+ line += '.unique()';
105
+ }
106
+ return line;
107
+ }
108
+ function generateTable(table) {
109
+ const lines = [];
110
+ // Determine table reference based on dialect
111
+ const tableRef = 'pgTable';
112
+ const importStatement = "import { pgTable } from 'drizzle-orm/pg-core';";
113
+ lines.push(importStatement);
114
+ lines.push('');
115
+ const tableName = table.name.includes(' ') || table.name.includes('-')
116
+ ? `"${table.name}"`
117
+ : `'${table.name}'`;
118
+ lines.push(`export const ${table.name} = ${tableRef}(${tableName}, {`);
119
+ lines.push(' columns: {');
120
+ for (const column of table.columns) {
121
+ lines.push(generateColumn(column) + ',');
122
+ }
123
+ lines.push(' },');
124
+ lines.push('});');
125
+ return lines.join('\n');
126
+ }
127
+ export function generateSchema(schema, dialect) {
128
+ const lines = [];
129
+ // Add header
130
+ lines.push('/**');
131
+ lines.push(' * Auto-generated schema file');
132
+ lines.push(` * Dialect: ${dialect}`);
133
+ lines.push(` * Generated at: ${new Date().toISOString()}`);
134
+ lines.push(' */');
135
+ lines.push('');
136
+ // Add import
137
+ if (dialect === 'postgresql') {
138
+ lines.push("import { pgTable, text, integer, timestamp, boolean, uuid, jsonb, varchar } from 'drizzle-orm/pg-core';");
139
+ }
140
+ else if (dialect === 'mysql') {
141
+ lines.push("import { mysqlTable, text, int, timestamp, boolean, varchar } from 'drizzle-orm/mysql-core';");
142
+ }
143
+ else {
144
+ lines.push("import { sqliteTable, text, integer, real } from 'drizzle-orm/sqlite-core';");
145
+ }
146
+ lines.push('');
147
+ // Generate tables
148
+ const tables = schema.tables ?? [];
149
+ for (let i = 0; i < tables.length; i++) {
150
+ lines.push(generateTable(tables[i]));
151
+ if (i < tables.length - 1) {
152
+ lines.push('');
153
+ }
154
+ }
155
+ return lines.join('\n');
156
+ }
157
+ //# sourceMappingURL=schema-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-generator.js","sourceRoot":"","sources":["../../src/utils/schema-generator.ts"],"names":[],"mappings":"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"}