duckerd 0.1.4 → 0.2.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.
@@ -1,14 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createERD = void 0;
4
- const duckdb_async_1 = require("duckdb-async");
4
+ const node_api_1 = require("@duckdb/node-api");
5
5
  const metadata_1 = require("../lib/metadata");
6
6
  const createERD = async (databasePath) => {
7
- const db = await duckdb_async_1.Database.create(databasePath);
8
- const conn = await db.connect();
9
- const metadata = await (0, metadata_1.getMetadata)(conn);
10
- await db.close();
11
- const mermaidCode = (0, metadata_1.generateMermaidCodeForAllDBs)(metadata);
12
- return mermaidCode;
7
+ const instance = await node_api_1.DuckDBInstance.create(databasePath);
8
+ const conn = await instance.connect();
9
+ try {
10
+ const metadata = await (0, metadata_1.getMetadata)(conn);
11
+ return (0, metadata_1.generateMermaidCodeForAllDBs)(metadata);
12
+ }
13
+ finally {
14
+ conn.closeSync();
15
+ instance.closeSync();
16
+ }
13
17
  };
14
18
  exports.createERD = createERD;
@@ -15,14 +15,18 @@ const indexesMetadataQuery = `SELECT database_name as databaseName, schema_name
15
15
  const contraintsMetadataQuery = `SELECT database_name as databaseName, schema_name as schemaName, table_name as tableName, unnest(constraint_column_names) as columnName, constraint_type as constraintType, constraint_text as sql FROM duckdb_constraints() ORDER BY database_name, schema_name, table_name`;
16
16
  // Constraints metadata query
17
17
  const sequencesMetadataQuery = `SELECT database_name as databaseName, schema_name as schemaName, sequence_name as name, temporary as isTemporary, start_value as startValue, last_value as lastValue, min_value as minValue, max_value as maxValue, increment_by as incrementBy, sql FROM duckdb_sequences() ORDER BY database_name, schema_name, sequence_name`;
18
+ const queryAll = async (conn, sql) => {
19
+ const reader = await conn.runAndReadAll(sql);
20
+ return reader.getRowObjectsJson();
21
+ };
18
22
  const getMetadata = async (conn) => {
19
- const databaseRaw = await conn.all(databaseMetadataQuery);
20
- const schemas = await conn.all(schemaMetadataQuery);
21
- const tables = await conn.all(tablesMetadataQuery);
22
- const columns = await conn.all(columnsMetadataQuery);
23
- const indexes = await conn.all(indexesMetadataQuery);
24
- const constraints = await conn.all(contraintsMetadataQuery);
25
- const sequences = await conn.all(sequencesMetadataQuery);
23
+ const databaseRaw = await queryAll(conn, databaseMetadataQuery);
24
+ const schemas = await queryAll(conn, schemaMetadataQuery);
25
+ const tables = await queryAll(conn, tablesMetadataQuery);
26
+ const columns = await queryAll(conn, columnsMetadataQuery);
27
+ const indexes = await queryAll(conn, indexesMetadataQuery);
28
+ const constraints = await queryAll(conn, contraintsMetadataQuery);
29
+ const sequences = await queryAll(conn, sequencesMetadataQuery);
26
30
  const databases = databaseRaw.map(database => ({
27
31
  name: database.databaseName,
28
32
  schemas: [...new Set(schemas.filter(schema => database.databaseName === schema.databaseName).map(schema => ({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "duckerd",
3
- "version": "0.1.4",
3
+ "version": "0.2.0",
4
4
  "description": "A CLI tool for generating ERD diagrams from DuckDB databases",
5
5
  "author": "TobiLG <tobilg@gmail.com>",
6
6
  "repository": {
@@ -20,16 +20,16 @@
20
20
  "start": "ts-node src/index.ts"
21
21
  },
22
22
  "engines": {
23
- "node": "^18.19 || >=20.0"
23
+ "node": ">=22.0"
24
24
  },
25
25
  "keywords": ["duckdb", "erd", "diagram", "cli"],
26
26
  "dependencies": {
27
- "commander": "^13.1.0",
28
- "duckdb-async": "^1.2.0"
27
+ "@duckdb/node-api": "^1.5.2-r.1",
28
+ "commander": "^14.0.3"
29
29
  },
30
30
  "devDependencies": {
31
- "@types/node": "^18.11.9",
31
+ "@types/node": "^22",
32
32
  "ts-node": "^10.9.2",
33
- "typescript": "^5.8.2"
33
+ "typescript": "^6.0.3"
34
34
  }
35
35
  }