neoorm 0.9.6 → 0.9.8
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/bin/neoorm.d.ts.map +1 -1
- package/dist/bin/neoorm.js +83 -141
- package/dist/bin/neoorm.js.map +1 -1
- package/dist/codegen/column-ts.d.ts.map +1 -1
- package/dist/codegen/column-ts.js +5 -2
- package/dist/codegen/column-ts.js.map +1 -1
- package/dist/codegen/diff-manifest.js +1 -1
- package/dist/codegen/diff-manifest.js.map +1 -1
- package/dist/codegen/emit-includes.d.ts.map +1 -1
- package/dist/codegen/emit-includes.js +11 -8
- package/dist/codegen/emit-includes.js.map +1 -1
- package/dist/codegen/emit-models.d.ts.map +1 -1
- package/dist/codegen/emit-models.js +9 -8
- package/dist/codegen/emit-models.js.map +1 -1
- package/dist/codegen/emit-query-types.d.ts.map +1 -1
- package/dist/codegen/emit-query-types.js +53 -16
- package/dist/codegen/emit-query-types.js.map +1 -1
- package/dist/codegen/generate.d.ts +1 -0
- package/dist/codegen/generate.d.ts.map +1 -1
- package/dist/codegen/generate.js +8 -1
- package/dist/codegen/generate.js.map +1 -1
- package/dist/codegen/manifest-relations.d.ts.map +1 -1
- package/dist/codegen/manifest-relations.js +2 -1
- package/dist/codegen/manifest-relations.js.map +1 -1
- package/dist/codegen/schema-to-manifest.d.ts.map +1 -1
- package/dist/codegen/schema-to-manifest.js +174 -8
- package/dist/codegen/schema-to-manifest.js.map +1 -1
- package/dist/codegen/ts-syntax.d.ts +12 -0
- package/dist/codegen/ts-syntax.d.ts.map +1 -0
- package/dist/codegen/ts-syntax.js +24 -0
- package/dist/codegen/ts-syntax.js.map +1 -0
- package/dist/codegen/validation/emit-elysia.d.ts.map +1 -1
- package/dist/codegen/validation/emit-elysia.js +5 -4
- package/dist/codegen/validation/emit-elysia.js.map +1 -1
- package/dist/codegen/validation/emit-typebox.d.ts.map +1 -1
- package/dist/codegen/validation/emit-typebox.js +5 -4
- package/dist/codegen/validation/emit-typebox.js.map +1 -1
- package/dist/codegen/validation/emit-zod.d.ts.map +1 -1
- package/dist/codegen/validation/emit-zod.js +5 -4
- package/dist/codegen/validation/emit-zod.js.map +1 -1
- package/dist/codegen/validation/from-manifest.d.ts.map +1 -1
- package/dist/codegen/validation/from-manifest.js +37 -10
- package/dist/codegen/validation/from-manifest.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -1
- package/dist/config.js.map +1 -1
- package/dist/dialect/mariadb.test.js +28 -1
- package/dist/dialect/mariadb.test.js.map +1 -1
- package/dist/dialect/mysql-family.js +6 -6
- package/dist/dialect/mysql-family.js.map +1 -1
- package/dist/dialect/mysql.test.js +33 -1
- package/dist/dialect/mysql.test.js.map +1 -1
- package/dist/dialect/postgres.js +1 -1
- package/dist/dialect/postgres.js.map +1 -1
- package/dist/dialect/sqlite.js +1 -1
- package/dist/dialect/sqlite.js.map +1 -1
- package/dist/dialect/sqlite.test.js +9 -0
- package/dist/dialect/sqlite.test.js.map +1 -1
- package/dist/dialect/types.d.ts +1 -1
- package/dist/dialect/types.d.ts.map +1 -1
- package/dist/init/prompt.d.ts.map +1 -1
- package/dist/init/prompt.js +14 -3
- package/dist/init/prompt.js.map +1 -1
- package/dist/init/scaffold.d.ts.map +1 -1
- package/dist/init/scaffold.js +31 -4
- package/dist/init/scaffold.js.map +1 -1
- package/dist/init/templates.d.ts +5 -0
- package/dist/init/templates.d.ts.map +1 -1
- package/dist/init/templates.js +33 -6
- package/dist/init/templates.js.map +1 -1
- package/dist/init/validate.d.ts +3 -1
- package/dist/init/validate.d.ts.map +1 -1
- package/dist/init/validate.js +61 -4
- package/dist/init/validate.js.map +1 -1
- package/dist/introspect/mysql/to-manifest.d.ts.map +1 -1
- package/dist/introspect/mysql/to-manifest.js +2 -1
- package/dist/introspect/mysql/to-manifest.js.map +1 -1
- package/dist/introspect/pull.d.ts +5 -0
- package/dist/introspect/pull.d.ts.map +1 -1
- package/dist/introspect/pull.js +186 -35
- package/dist/introspect/pull.js.map +1 -1
- package/dist/introspect/sqlite/to-manifest.d.ts.map +1 -1
- package/dist/introspect/sqlite/to-manifest.js +2 -1
- package/dist/introspect/sqlite/to-manifest.js.map +1 -1
- package/dist/introspect/table-map.d.ts +9 -0
- package/dist/introspect/table-map.d.ts.map +1 -0
- package/dist/introspect/table-map.js +21 -0
- package/dist/introspect/table-map.js.map +1 -0
- package/dist/introspect/to-manifest.d.ts.map +1 -1
- package/dist/introspect/to-manifest.js +2 -1
- package/dist/introspect/to-manifest.js.map +1 -1
- package/dist/migrate/dev-workflow.d.ts +36 -0
- package/dist/migrate/dev-workflow.d.ts.map +1 -0
- package/dist/migrate/dev-workflow.js +96 -0
- package/dist/migrate/dev-workflow.js.map +1 -0
- package/dist/migrate/runner.d.ts +4 -1
- package/dist/migrate/runner.d.ts.map +1 -1
- package/dist/migrate/runner.js +140 -29
- package/dist/migrate/runner.js.map +1 -1
- package/dist/runtime/client.d.ts.map +1 -1
- package/dist/runtime/client.js +2 -0
- package/dist/runtime/client.js.map +1 -1
- package/dist/runtime/client.test.js +43 -0
- package/dist/runtime/client.test.js.map +1 -1
- package/dist/runtime/driver-sqlite.test.js +186 -0
- package/dist/runtime/driver-sqlite.test.js.map +1 -1
- package/dist/runtime/driver.d.ts +8 -0
- package/dist/runtime/driver.d.ts.map +1 -1
- package/dist/runtime/driver.js +76 -125
- package/dist/runtime/driver.js.map +1 -1
- package/dist/runtime/error-codes.d.ts +3 -0
- package/dist/runtime/error-codes.d.ts.map +1 -1
- package/dist/runtime/error-codes.js +3 -0
- package/dist/runtime/error-codes.js.map +1 -1
- package/dist/runtime/error-hints.d.ts.map +1 -1
- package/dist/runtime/error-hints.js +19 -15
- package/dist/runtime/error-hints.js.map +1 -1
- package/dist/runtime/errors.d.ts +6 -0
- package/dist/runtime/errors.d.ts.map +1 -1
- package/dist/runtime/errors.js +60 -21
- package/dist/runtime/errors.js.map +1 -1
- package/dist/runtime/executor.d.ts.map +1 -1
- package/dist/runtime/executor.js +16 -17
- package/dist/runtime/executor.js.map +1 -1
- package/dist/runtime/mariadb-driver.d.ts.map +1 -1
- package/dist/runtime/mariadb-driver.js +12 -15
- package/dist/runtime/mariadb-driver.js.map +1 -1
- package/dist/runtime/mysql-driver.d.ts.map +1 -1
- package/dist/runtime/mysql-driver.js +17 -16
- package/dist/runtime/mysql-driver.js.map +1 -1
- package/dist/runtime/mysql-family-pool.test.js +107 -1
- package/dist/runtime/mysql-family-pool.test.js.map +1 -1
- package/dist/runtime/mysql-placeholders.d.ts.map +1 -1
- package/dist/runtime/mysql-placeholders.js +12 -0
- package/dist/runtime/mysql-placeholders.js.map +1 -1
- package/dist/runtime/mysql-placeholders.test.js +15 -0
- package/dist/runtime/mysql-placeholders.test.js.map +1 -1
- package/dist/runtime/pg-rollback.test.js +42 -0
- package/dist/runtime/pg-rollback.test.js.map +1 -1
- package/dist/runtime/query/compile-where.d.ts.map +1 -1
- package/dist/runtime/query/compile-where.js +26 -1
- package/dist/runtime/query/compile-where.js.map +1 -1
- package/dist/runtime/query/find-or-create.test.js +19 -0
- package/dist/runtime/query/find-or-create.test.js.map +1 -1
- package/dist/runtime/query/table-index.d.ts +1 -1
- package/dist/runtime/query/table-index.d.ts.map +1 -1
- package/dist/runtime/query/table-index.js +2 -1
- package/dist/runtime/query/table-index.js.map +1 -1
- package/dist/runtime/query/update.d.ts.map +1 -1
- package/dist/runtime/query/update.js +9 -1
- package/dist/runtime/query/update.js.map +1 -1
- package/dist/runtime/query/upsert.d.ts.map +1 -1
- package/dist/runtime/query/upsert.js +12 -3
- package/dist/runtime/query/upsert.js.map +1 -1
- package/dist/runtime/regex-guard.d.ts +28 -0
- package/dist/runtime/regex-guard.d.ts.map +1 -0
- package/dist/runtime/regex-guard.js +124 -0
- package/dist/runtime/regex-guard.js.map +1 -0
- package/dist/runtime/regex-guard.test.d.ts +2 -0
- package/dist/runtime/regex-guard.test.d.ts.map +1 -0
- package/dist/runtime/regex-guard.test.js +63 -0
- package/dist/runtime/regex-guard.test.js.map +1 -0
- package/dist/runtime/sqlite-open.d.ts +5 -0
- package/dist/runtime/sqlite-open.d.ts.map +1 -1
- package/dist/runtime/sqlite-open.js +30 -7
- package/dist/runtime/sqlite-open.js.map +1 -1
- package/dist/runtime/sqlite-open.test.d.ts +2 -0
- package/dist/runtime/sqlite-open.test.d.ts.map +1 -0
- package/dist/runtime/sqlite-open.test.js +66 -0
- package/dist/runtime/sqlite-open.test.js.map +1 -0
- package/dist/runtime/transaction.d.ts +16 -0
- package/dist/runtime/transaction.d.ts.map +1 -1
- package/dist/runtime/transaction.js +50 -0
- package/dist/runtime/transaction.js.map +1 -1
- package/dist/runtime/transaction.test.js +50 -1
- package/dist/runtime/transaction.test.js.map +1 -1
- package/dist/schema/index.d.ts +1 -1
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/relation-types.d.ts +22 -1
- package/dist/schema/relation-types.d.ts.map +1 -1
- package/dist/sql/split-statements.d.ts +15 -0
- package/dist/sql/split-statements.d.ts.map +1 -0
- package/dist/sql/split-statements.js +132 -0
- package/dist/sql/split-statements.js.map +1 -0
- package/dist/studio/server.d.ts.map +1 -1
- package/dist/studio/server.js +1 -0
- package/dist/studio/server.js.map +1 -1
- package/dist/utils/case.js +1 -1
- package/dist/utils/case.js.map +1 -1
- package/dist/utils/dotenv.d.ts +5 -0
- package/dist/utils/dotenv.d.ts.map +1 -1
- package/dist/utils/dotenv.js +100 -24
- package/dist/utils/dotenv.js.map +1 -1
- package/dist/utils/dotenv.test.js +73 -2
- package/dist/utils/dotenv.test.js.map +1 -1
- package/dist/utils/inflect.d.ts.map +1 -1
- package/dist/utils/inflect.js +12 -0
- package/dist/utils/inflect.js.map +1 -1
- package/dist/utils/load-ts.d.ts.map +1 -1
- package/dist/utils/load-ts.js +4 -3
- package/dist/utils/load-ts.js.map +1 -1
- package/dist/utils/load-ts.test.d.ts +2 -0
- package/dist/utils/load-ts.test.d.ts.map +1 -0
- package/dist/utils/load-ts.test.js +17 -0
- package/dist/utils/load-ts.test.js.map +1 -0
- package/docs/cli.md +3 -3
- package/docs/configuration.md +2 -2
- package/docs/getting-started.md +1 -1
- package/docs/mariadb.md +2 -1
- package/docs/migrate-dev-workflow.md +84 -0
- package/docs/migrations.md +6 -1
- package/docs/mysql.md +2 -1
- package/docs/sqlite.md +4 -2
- package/docs/transactions.md +1 -1
- package/llms-full.txt +106 -12
- package/package.json +1 -1
package/dist/init/validate.js
CHANGED
|
@@ -1,14 +1,50 @@
|
|
|
1
|
-
import { extname, resolve } from "node:path";
|
|
1
|
+
import { extname, isAbsolute, relative, resolve, sep } from "node:path";
|
|
2
|
+
import { foreignDatabaseScheme } from "../runtime/sqlite-open.js";
|
|
3
|
+
const CONFIG_FILE = "neoorm.config.ts";
|
|
4
|
+
const ENV_EXAMPLE_FILE = ".env.example";
|
|
5
|
+
function hasControlChar(value) {
|
|
6
|
+
for (let i = 0; i < value.length; i++) {
|
|
7
|
+
const code = value.charCodeAt(i);
|
|
8
|
+
if (code <= 0x1f || code === 0x7f)
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
/** True when `abs` is `cwd` or a descendant of it. */
|
|
14
|
+
export function isInsideProject(cwd, abs) {
|
|
15
|
+
const rel = relative(resolve(cwd), abs);
|
|
16
|
+
if (rel === "")
|
|
17
|
+
return true;
|
|
18
|
+
if (isAbsolute(rel))
|
|
19
|
+
return false;
|
|
20
|
+
return rel !== ".." && !rel.startsWith(`..${sep}`);
|
|
21
|
+
}
|
|
2
22
|
const SCHEMA_EXTENSIONS = new Set([".ts", ".mts", ".cts"]);
|
|
3
|
-
export function validateSchemaPath(value) {
|
|
23
|
+
export function validateSchemaPath(value, cwd) {
|
|
4
24
|
const trimmed = value.trim();
|
|
5
25
|
if (trimmed.length === 0) {
|
|
6
26
|
return "Schema path is required";
|
|
7
27
|
}
|
|
28
|
+
if (hasControlChar(trimmed)) {
|
|
29
|
+
return "Schema path cannot contain control characters";
|
|
30
|
+
}
|
|
8
31
|
const extension = extname(trimmed).toLowerCase();
|
|
9
32
|
if (!SCHEMA_EXTENSIONS.has(extension)) {
|
|
10
33
|
return "Schema path must end in .ts, .mts, or .cts";
|
|
11
34
|
}
|
|
35
|
+
if (cwd === undefined)
|
|
36
|
+
return undefined;
|
|
37
|
+
const abs = resolve(cwd, trimmed);
|
|
38
|
+
const root = resolve(cwd);
|
|
39
|
+
if (abs === root || !isInsideProject(root, abs)) {
|
|
40
|
+
return "Schema path must stay inside the project directory";
|
|
41
|
+
}
|
|
42
|
+
if (abs === resolve(root, CONFIG_FILE)) {
|
|
43
|
+
return "Schema path cannot be neoorm.config.ts";
|
|
44
|
+
}
|
|
45
|
+
if (abs === resolve(root, ENV_EXAMPLE_FILE)) {
|
|
46
|
+
return "Schema path cannot be .env.example";
|
|
47
|
+
}
|
|
12
48
|
return undefined;
|
|
13
49
|
}
|
|
14
50
|
export function validateOutDir(value, schemaPath, cwd) {
|
|
@@ -16,9 +52,23 @@ export function validateOutDir(value, schemaPath, cwd) {
|
|
|
16
52
|
if (trimmed.length === 0) {
|
|
17
53
|
return "Output directory is required";
|
|
18
54
|
}
|
|
19
|
-
if (
|
|
55
|
+
if (hasControlChar(trimmed)) {
|
|
56
|
+
return "Output directory cannot contain control characters";
|
|
57
|
+
}
|
|
58
|
+
const root = resolve(cwd);
|
|
59
|
+
const outPath = resolve(root, trimmed);
|
|
60
|
+
if (outPath === root) {
|
|
61
|
+
return "Output directory cannot be the project directory";
|
|
62
|
+
}
|
|
63
|
+
if (!isInsideProject(root, outPath)) {
|
|
64
|
+
return "Output directory must stay inside the project directory";
|
|
65
|
+
}
|
|
66
|
+
if (outPath === resolve(root, schemaPath.trim())) {
|
|
20
67
|
return "Output directory cannot be the same path as the schema file";
|
|
21
68
|
}
|
|
69
|
+
if (outPath === resolve(root, CONFIG_FILE)) {
|
|
70
|
+
return "Output directory cannot be neoorm.config.ts";
|
|
71
|
+
}
|
|
22
72
|
return undefined;
|
|
23
73
|
}
|
|
24
74
|
export function validateDatabaseUrl(value, provider) {
|
|
@@ -26,7 +76,14 @@ export function validateDatabaseUrl(value, provider) {
|
|
|
26
76
|
if (trimmed.length === 0) {
|
|
27
77
|
return "Database URL is required";
|
|
28
78
|
}
|
|
79
|
+
if (hasControlChar(trimmed)) {
|
|
80
|
+
return "Database URL cannot contain control characters";
|
|
81
|
+
}
|
|
29
82
|
if (provider === "sqlite") {
|
|
83
|
+
const scheme = foreignDatabaseScheme(trimmed);
|
|
84
|
+
if (scheme !== undefined) {
|
|
85
|
+
return `Database URL is a ${scheme} connection URL, not a SQLite path`;
|
|
86
|
+
}
|
|
30
87
|
return undefined;
|
|
31
88
|
}
|
|
32
89
|
if (!trimmed.includes("://")) {
|
|
@@ -35,7 +92,7 @@ export function validateDatabaseUrl(value, provider) {
|
|
|
35
92
|
return undefined;
|
|
36
93
|
}
|
|
37
94
|
export function assertInitAnswers(options) {
|
|
38
|
-
const schemaErrorMessage = validateSchemaPath(options.schemaPath);
|
|
95
|
+
const schemaErrorMessage = validateSchemaPath(options.schemaPath, options.cwd);
|
|
39
96
|
if (schemaErrorMessage) {
|
|
40
97
|
throw new Error(schemaErrorMessage);
|
|
41
98
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/init/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/init/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-manifest.d.ts","sourceRoot":"","sources":["../../../src/introspect/mysql/to-manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,QAAQ,EAMR,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"to-manifest.d.ts","sourceRoot":"","sources":["../../../src/introspect/mysql/to-manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,QAAQ,EAMR,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AA+K9D,wBAAsB,yBAAyB,CAC9C,MAAM,EAAE,cAAc,GACpB,OAAO,CAAC,QAAQ,CAAC,CAiBnB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { quoteMysqlIdentifier } from "../../dialect/mysql.js";
|
|
2
2
|
import { columnTsNameFromSqlName, tableAccessorFromSqlName, } from "../../utils/case.js";
|
|
3
3
|
import { groupForeignKeyRows, mapReferentialAction } from "../group-fks.js";
|
|
4
|
+
import { setIntrospectedTable } from "../table-map.js";
|
|
4
5
|
function mapDeleteRule(rule) {
|
|
5
6
|
return mapReferentialAction(rule);
|
|
6
7
|
}
|
|
@@ -124,7 +125,7 @@ export async function introspectMysqlToManifest(client) {
|
|
|
124
125
|
const tables = {};
|
|
125
126
|
for (const { table_name } of tableResult.rows) {
|
|
126
127
|
const table = await introspectMysqlTable(client, table_name);
|
|
127
|
-
tables
|
|
128
|
+
setIntrospectedTable(tables, table);
|
|
128
129
|
}
|
|
129
130
|
return { version: 1, tables, manyToMany: [] };
|
|
130
131
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-manifest.js","sourceRoot":"","sources":["../../../src/introspect/mysql/to-manifest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"to-manifest.js","sourceRoot":"","sources":["../../../src/introspect/mysql/to-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import type { Manifest } from "../dialect/types.js";
|
|
1
2
|
import type { DatabaseClient } from "../runtime/driver.js";
|
|
2
3
|
export declare function introspectPostgres(client: DatabaseClient, options?: {
|
|
3
4
|
schema?: string;
|
|
4
5
|
}): Promise<string>;
|
|
6
|
+
/** Emit a `neoorm/schema` TS source from an introspected manifest. Exported for tests. */
|
|
7
|
+
export declare function emitPostgresSchema(manifest: Manifest): string;
|
|
5
8
|
export declare function parseIndexWhere(whereSql: string, tsNameBySql: Map<string, string>): string | undefined;
|
|
6
9
|
export declare function introspectMysql(client: DatabaseClient): Promise<string>;
|
|
10
|
+
/** Emit a `neoorm/schema` TS source from a SQLite-introspected manifest. Exported for tests. */
|
|
11
|
+
export declare function emitSqliteSchema(manifest: Manifest): string;
|
|
7
12
|
export declare function introspectSqlite(client: DatabaseClient): Promise<string>;
|
|
8
13
|
//# sourceMappingURL=pull.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/introspect/pull.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/introspect/pull.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,QAAQ,EAGR,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA0N3D,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CA+D7D;AA+xBD,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,GAAG,SAAS,CAiBpB;AAqSD,wBAAsB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAG7E;AAED,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAyD3D;AAED,wBAAsB,gBAAgB,CACrC,MAAM,EAAE,cAAc,GACpB,OAAO,CAAC,MAAM,CAAC,CAGjB"}
|
package/dist/introspect/pull.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { tsMemberAccess, tsPropertyKey } from "../codegen/ts-syntax.js";
|
|
1
2
|
import { manifestIndexKeys } from "../dialect/shared.js";
|
|
2
3
|
import { escapeTsString, resolveSqlColumnName, toCamelCase, } from "../utils/case.js";
|
|
3
4
|
import { singularize } from "../utils/inflect.js";
|
|
@@ -7,11 +8,109 @@ import { introspectToManifest } from "./to-manifest.js";
|
|
|
7
8
|
function inferFkAs(tsName) {
|
|
8
9
|
return tsName.replace(/_(Id|id)$/, "").replace(/Id$/, "");
|
|
9
10
|
}
|
|
11
|
+
function pullNameTracker(manifest) {
|
|
12
|
+
const columnNames = new Map();
|
|
13
|
+
for (const table of Object.values(manifest.tables)) {
|
|
14
|
+
columnNames.set(table.accessor, new Set(table.columns.map((c) => c.tsName)));
|
|
15
|
+
}
|
|
16
|
+
return { assigned: new Map(), columnNames };
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Names the emitted schema already defines on a table: its column tsNames
|
|
20
|
+
* plus every relation name (forward, inverse) picked so far.
|
|
21
|
+
*/
|
|
22
|
+
function reservedNamesOnTable(tracker, accessor) {
|
|
23
|
+
const used = new Set(tracker.columnNames.get(accessor) ?? []);
|
|
24
|
+
const extra = tracker.assigned.get(accessor);
|
|
25
|
+
if (extra) {
|
|
26
|
+
for (const name of extra) {
|
|
27
|
+
used.add(name);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return used;
|
|
31
|
+
}
|
|
32
|
+
/** Reserve a relation name so later picks (and their suffixes) cannot reuse it. */
|
|
33
|
+
function reserveRelationName(tracker, accessor, name) {
|
|
34
|
+
let extra = tracker.assigned.get(accessor);
|
|
35
|
+
if (!extra) {
|
|
36
|
+
extra = new Set();
|
|
37
|
+
tracker.assigned.set(accessor, extra);
|
|
38
|
+
}
|
|
39
|
+
extra.add(name);
|
|
40
|
+
}
|
|
41
|
+
/** Deterministic unused variant of `base` in `used`: base, base2, base3, … */
|
|
42
|
+
function withSuffix(base, used) {
|
|
43
|
+
if (!used.has(base)) {
|
|
44
|
+
return base;
|
|
45
|
+
}
|
|
46
|
+
let index = 2;
|
|
47
|
+
while (used.has(`${base}${index}`)) {
|
|
48
|
+
index += 1;
|
|
49
|
+
}
|
|
50
|
+
return `${base}${index}`;
|
|
51
|
+
}
|
|
52
|
+
/** Accessor of an fk column's target table ("" when unresolved). */
|
|
53
|
+
function fkTargetAccessor(col, manifest) {
|
|
54
|
+
const targetRef = resolveFkAccessorTarget(col, manifest);
|
|
55
|
+
return targetRef.includes(".")
|
|
56
|
+
? targetRef.slice(0, targetRef.indexOf("."))
|
|
57
|
+
: targetRef;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Forward relation name an FK column is emitted with in a pulled schema:
|
|
61
|
+
* the stored/inferred name when it is free on the table. When the name is
|
|
62
|
+
* already defined — as the fk's own column, a sibling column, or a relation
|
|
63
|
+
* picked for an earlier fk — the fallback prefers the singular target table
|
|
64
|
+
* name (the `userId → user` convention) for an Id-less fk column, then
|
|
65
|
+
* suffixes the preferred name: `statusChangedBy2`, `statusChangedBy3`, …
|
|
66
|
+
*/
|
|
67
|
+
function pulledFkRelationName(col, table, manifest, tracker) {
|
|
68
|
+
const inferred = inferFkAs(col.tsName);
|
|
69
|
+
const stored = col.fkAs !== undefined && col.fkAs !== "" ? col.fkAs : inferred;
|
|
70
|
+
const used = reservedNamesOnTable(tracker, table.accessor);
|
|
71
|
+
let name = stored;
|
|
72
|
+
if (used.has(name)) {
|
|
73
|
+
let base = stored;
|
|
74
|
+
if (stored === col.tsName) {
|
|
75
|
+
const targetAccessor = fkTargetAccessor(col, manifest);
|
|
76
|
+
base =
|
|
77
|
+
targetAccessor !== ""
|
|
78
|
+
? singularize(targetAccessor)
|
|
79
|
+
: `${inferred}Relation`;
|
|
80
|
+
}
|
|
81
|
+
name = withSuffix(base, used);
|
|
82
|
+
}
|
|
83
|
+
reserveRelationName(tracker, table.accessor, name);
|
|
84
|
+
return name;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Inverse relation name for an fk into `targetAccessor`: the source table
|
|
88
|
+
* accessor (singularized for unique/one-to-one fks). The default name is
|
|
89
|
+
* always reserved on the target table — without reserving it, a second fk
|
|
90
|
+
* to the same target would emit a second relation under the same default
|
|
91
|
+
* inverse name, which generate rejects with `duplicate_inverse`.
|
|
92
|
+
*/
|
|
93
|
+
function pulledFkInverseName(col, sourceAccessor, targetAccessor, tracker) {
|
|
94
|
+
const defaultInverse = col.unique
|
|
95
|
+
? singularize(sourceAccessor)
|
|
96
|
+
: sourceAccessor;
|
|
97
|
+
const name = withSuffix(defaultInverse, reservedNamesOnTable(tracker, targetAccessor));
|
|
98
|
+
reserveRelationName(tracker, targetAccessor, name);
|
|
99
|
+
return name;
|
|
100
|
+
}
|
|
10
101
|
function tableHeader(accessor, sqlName) {
|
|
102
|
+
const key = tsPropertyKey(accessor);
|
|
11
103
|
if (sqlName === accessor) {
|
|
12
|
-
return ` ${
|
|
104
|
+
return ` ${key}: table({`;
|
|
13
105
|
}
|
|
14
|
-
return ` ${
|
|
106
|
+
return ` ${key}: table("${escapeTsString(sqlName)}", {`;
|
|
107
|
+
}
|
|
108
|
+
/** `t.col` or `t["raw sql"]` when the tsName lookup falls back to a SQL name. */
|
|
109
|
+
function tColumnRef(tsNameBySql, sqlName) {
|
|
110
|
+
return tsMemberAccess("t", tsNameBySql.get(sqlName) ?? sqlName);
|
|
111
|
+
}
|
|
112
|
+
function whereField(ts, expr) {
|
|
113
|
+
return `${tsPropertyKey(ts)}: ${expr}`;
|
|
15
114
|
}
|
|
16
115
|
const POSTGIS_KINDS = new Set(["geometry", "geography", "point"]);
|
|
17
116
|
const SCHEMA_IMPORT_ORDER = [
|
|
@@ -61,10 +160,12 @@ export async function introspectPostgres(client, options = {}) {
|
|
|
61
160
|
const manifest = await introspectToManifest(client, options);
|
|
62
161
|
return emitPostgresSchema(manifest);
|
|
63
162
|
}
|
|
64
|
-
|
|
163
|
+
/** Emit a `neoorm/schema` TS source from an introspected manifest. Exported for tests. */
|
|
164
|
+
export function emitPostgresSchema(manifest) {
|
|
65
165
|
const usedBuilders = new Set(["defineSchema", "table"]);
|
|
66
166
|
const pluginColumnImports = new Set();
|
|
67
167
|
let needsPostgisSideEffect = false;
|
|
168
|
+
const tracker = pullNameTracker(manifest);
|
|
68
169
|
const tableBlocks = [];
|
|
69
170
|
for (const table of Object.values(manifest.tables)) {
|
|
70
171
|
const columnNaming = inferColumnNaming(table.columns.map((col) => col.sqlName));
|
|
@@ -77,9 +178,9 @@ function emitPostgresSchema(manifest) {
|
|
|
77
178
|
needsPostgisSideEffect = true;
|
|
78
179
|
pluginColumnImports.add(col.kind);
|
|
79
180
|
}
|
|
80
|
-
blockLines.push(` ${emitPostgresColumn(col, table, manifest, columnNaming, usedBuilders)},`);
|
|
181
|
+
blockLines.push(` ${emitPostgresColumn(col, table, manifest, columnNaming, usedBuilders, tracker)},`);
|
|
81
182
|
}
|
|
82
|
-
const extras = emitTableExtras(table, tsNameBySql, usedBuilders, manifest);
|
|
183
|
+
const extras = emitTableExtras(table, tsNameBySql, usedBuilders, manifest, tracker);
|
|
83
184
|
blockLines.push(tableClose(columnNaming, extras));
|
|
84
185
|
tableBlocks.push(blockLines.join("\n"));
|
|
85
186
|
}
|
|
@@ -100,16 +201,16 @@ function emitPostgresSchema(manifest) {
|
|
|
100
201
|
lines.push(`});`, ``);
|
|
101
202
|
return lines.join("\n");
|
|
102
203
|
}
|
|
103
|
-
function emitPostgresColumn(col, table, manifest, columnNaming, usedBuilders) {
|
|
204
|
+
function emitPostgresColumn(col, table, manifest, columnNaming, usedBuilders, tracker) {
|
|
104
205
|
if (col.kind === "fk") {
|
|
105
206
|
usedBuilders.add("fk");
|
|
106
|
-
let def = `${col.tsName}: ${emitFkBuilder(col, table, manifest)}`;
|
|
207
|
+
let def = `${tsPropertyKey(col.tsName)}: ${emitFkBuilder(col, table, manifest, tracker)}`;
|
|
107
208
|
def += emitColumnModifiers(col, table, { skipNotNullIfPrimary: true });
|
|
108
209
|
return appendMapModifier(def, col.tsName, col.sqlName, columnNaming);
|
|
109
210
|
}
|
|
110
211
|
if (col.kind === "id") {
|
|
111
212
|
usedBuilders.add("id");
|
|
112
|
-
let def = `${col.tsName}: id()`;
|
|
213
|
+
let def = `${tsPropertyKey(col.tsName)}: id()`;
|
|
113
214
|
def += emitColumnModifiers(col, table, {
|
|
114
215
|
skipPrimary: true,
|
|
115
216
|
skipNotNull: true,
|
|
@@ -117,7 +218,7 @@ function emitPostgresColumn(col, table, manifest, columnNaming, usedBuilders) {
|
|
|
117
218
|
return appendMapModifier(def, col.tsName, col.sqlName, columnNaming);
|
|
118
219
|
}
|
|
119
220
|
const call = emitScalarBuilder(col, usedBuilders);
|
|
120
|
-
let def = `${col.tsName}: ${call}`;
|
|
221
|
+
let def = `${tsPropertyKey(col.tsName)}: ${call}`;
|
|
121
222
|
def += emitColumnModifiers(col, table, {
|
|
122
223
|
skipNotNullIfPrimary: true,
|
|
123
224
|
skipNotNull: col.kind === "serial",
|
|
@@ -174,18 +275,30 @@ function emitScalarBuilder(col, usedBuilders) {
|
|
|
174
275
|
usedBuilders.add(col.kind);
|
|
175
276
|
return `${col.kind}()`;
|
|
176
277
|
}
|
|
177
|
-
function emitFkBuilder(col, table, manifest) {
|
|
278
|
+
function emitFkBuilder(col, table, manifest, tracker) {
|
|
178
279
|
const targetRef = resolveFkAccessorTarget(col, manifest);
|
|
179
280
|
const relName = inferFkAs(col.tsName);
|
|
281
|
+
const relationName = pulledFkRelationName(col, table, manifest, tracker);
|
|
180
282
|
let def = `fk("${escapeTsString(targetRef)}")`;
|
|
181
|
-
if (
|
|
182
|
-
def += `.as("${escapeTsString(
|
|
283
|
+
if (relationName !== relName) {
|
|
284
|
+
def += `.as("${escapeTsString(relationName)}")`;
|
|
183
285
|
}
|
|
184
286
|
const defaultInverse = col.unique
|
|
185
287
|
? singularize(table.accessor)
|
|
186
288
|
: table.accessor;
|
|
187
289
|
if (col.fkInverse && col.fkInverse !== defaultInverse) {
|
|
188
290
|
def += `.inverse("${escapeTsString(col.fkInverse)}")`;
|
|
291
|
+
return def;
|
|
292
|
+
}
|
|
293
|
+
const targetAccessor = fkTargetAccessor(col, manifest);
|
|
294
|
+
if (manifest.tables[targetAccessor]) {
|
|
295
|
+
// Reserve the default inverse name on the target table and emit an
|
|
296
|
+
// explicit `.inverse()` when the default is taken there (e.g. a second
|
|
297
|
+
// fk to the same target, or a column carrying the accessor's name)
|
|
298
|
+
const inverseName = pulledFkInverseName(col, table.accessor, targetAccessor, tracker);
|
|
299
|
+
if (inverseName !== defaultInverse) {
|
|
300
|
+
def += `.inverse("${escapeTsString(inverseName)}")`;
|
|
301
|
+
}
|
|
189
302
|
}
|
|
190
303
|
return def;
|
|
191
304
|
}
|
|
@@ -734,7 +847,11 @@ function renderIndexPredicate(node) {
|
|
|
734
847
|
return `NOT: { ${inner} }`;
|
|
735
848
|
}
|
|
736
849
|
case "col":
|
|
737
|
-
return
|
|
850
|
+
return whereField(node.ts, node.expr);
|
|
851
|
+
default: {
|
|
852
|
+
const exhaustive = node;
|
|
853
|
+
return exhaustive;
|
|
854
|
+
}
|
|
738
855
|
}
|
|
739
856
|
}
|
|
740
857
|
/** Group an AND level into where-object bodies, merging same-column operators. */
|
|
@@ -746,7 +863,7 @@ function conjunctBodies(items) {
|
|
|
746
863
|
if (order.length === 0)
|
|
747
864
|
return;
|
|
748
865
|
bodies.push(order
|
|
749
|
-
.map((ts) =>
|
|
866
|
+
.map((ts) => whereField(ts, pending.get(ts)?.expr ?? ""))
|
|
750
867
|
.join(", "));
|
|
751
868
|
pending.clear();
|
|
752
869
|
order.length = 0;
|
|
@@ -795,7 +912,7 @@ export function parseIndexWhere(whereSql, tsNameBySql) {
|
|
|
795
912
|
if (!parsed)
|
|
796
913
|
return undefined;
|
|
797
914
|
if (parsed.kind === "col") {
|
|
798
|
-
return `.where({ ${parsed.ts
|
|
915
|
+
return `.where({ ${whereField(parsed.ts, parsed.expr)} })`;
|
|
799
916
|
}
|
|
800
917
|
if (parsed.kind === "and") {
|
|
801
918
|
const bodies = conjunctBodies(parsed.items);
|
|
@@ -811,7 +928,7 @@ export function parseIndexWhere(whereSql, tsNameBySql) {
|
|
|
811
928
|
return undefined;
|
|
812
929
|
return `.where({ ${rendered} })`;
|
|
813
930
|
}
|
|
814
|
-
function emitTableExtras(table, tsNameBySql, usedBuilders, manifest) {
|
|
931
|
+
function emitTableExtras(table, tsNameBySql, usedBuilders, manifest, tracker) {
|
|
815
932
|
const extras = [];
|
|
816
933
|
for (const index of table.indexes) {
|
|
817
934
|
const builder = index.unique ? "unique" : "index";
|
|
@@ -824,7 +941,7 @@ function emitTableExtras(table, tsNameBySql, usedBuilders, manifest) {
|
|
|
824
941
|
return `expr("${escapeTsString(key.expr)}")`;
|
|
825
942
|
}
|
|
826
943
|
const sqlName = key.sqlName ?? "";
|
|
827
|
-
return
|
|
944
|
+
return tColumnRef(tsNameBySql, sqlName);
|
|
828
945
|
})
|
|
829
946
|
.join(", ");
|
|
830
947
|
let extra = `${builder}(${cols})`;
|
|
@@ -856,7 +973,7 @@ function emitTableExtras(table, tsNameBySql, usedBuilders, manifest) {
|
|
|
856
973
|
if (table.primaryKey.length > 1) {
|
|
857
974
|
usedBuilders?.add("primaryKey");
|
|
858
975
|
extras.push(` primaryKey(${table.primaryKey
|
|
859
|
-
.map((sqlName) =>
|
|
976
|
+
.map((sqlName) => tColumnRef(tsNameBySql, sqlName))
|
|
860
977
|
.join(", ")}),`);
|
|
861
978
|
}
|
|
862
979
|
for (const fk of table.foreignKeys ?? []) {
|
|
@@ -865,7 +982,7 @@ function emitTableExtras(table, tsNameBySql, usedBuilders, manifest) {
|
|
|
865
982
|
? Object.values(manifest.tables).find((item) => item.sqlName === fk.targetTable)
|
|
866
983
|
: undefined;
|
|
867
984
|
const localCols = fk.columns
|
|
868
|
-
.map((sqlName) =>
|
|
985
|
+
.map((sqlName) => tColumnRef(tsNameBySql, sqlName))
|
|
869
986
|
.join(", ");
|
|
870
987
|
const targetCols = fk.targetColumns
|
|
871
988
|
.map((sqlName) => {
|
|
@@ -876,8 +993,27 @@ function emitTableExtras(table, tsNameBySql, usedBuilders, manifest) {
|
|
|
876
993
|
.join(", ");
|
|
877
994
|
const accessor = target?.accessor ?? fk.targetTable;
|
|
878
995
|
const firstLocal = tsNameBySql.get(fk.columns[0] ?? "") ?? "ref";
|
|
879
|
-
|
|
880
|
-
|
|
996
|
+
// Composite FK constraints are emitted as a `foreignKey()` extra whose
|
|
997
|
+
// relation name and inverse compete with column names and other picked
|
|
998
|
+
// relations on both tables — same resolver as column-level fks.
|
|
999
|
+
let asName = inferFkAs(firstLocal);
|
|
1000
|
+
let inverseName = table.accessor;
|
|
1001
|
+
if (tracker && manifest) {
|
|
1002
|
+
const usedOnSource = reservedNamesOnTable(tracker, table.accessor);
|
|
1003
|
+
if (usedOnSource.has(asName)) {
|
|
1004
|
+
const fallbackBase = asName === firstLocal && target?.accessor
|
|
1005
|
+
? singularize(target.accessor)
|
|
1006
|
+
: "";
|
|
1007
|
+
asName = withSuffix(fallbackBase !== "" ? fallbackBase : asName, usedOnSource);
|
|
1008
|
+
}
|
|
1009
|
+
reserveRelationName(tracker, table.accessor, asName);
|
|
1010
|
+
const targetKey = target?.accessor ?? fk.targetTable;
|
|
1011
|
+
if (targetKey) {
|
|
1012
|
+
inverseName = withSuffix(table.accessor, reservedNamesOnTable(tracker, targetKey));
|
|
1013
|
+
reserveRelationName(tracker, targetKey, inverseName);
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
let extra = `foreignKey(${localCols}).references("${escapeTsString(accessor)}", ${targetCols}).as("${escapeTsString(asName)}").inverse("${escapeTsString(inverseName)}")`;
|
|
881
1017
|
if (fk.onDelete && fk.onDelete !== "no action") {
|
|
882
1018
|
extra += `.onDelete("${escapeTsString(fk.onDelete)}")`;
|
|
883
1019
|
}
|
|
@@ -983,28 +1119,38 @@ function resolveFkAccessorTarget(col, manifest) {
|
|
|
983
1119
|
}
|
|
984
1120
|
return `${accessor}.${targetCol?.tsName ?? sqlColumn}`;
|
|
985
1121
|
}
|
|
986
|
-
function sqliteColumnDef(col, table, manifest) {
|
|
1122
|
+
function sqliteColumnDef(col, table, manifest, tracker) {
|
|
987
1123
|
if (col.kind === "fk" && col.fkTarget) {
|
|
988
1124
|
const targetRef = resolveFkAccessorTarget(col, manifest);
|
|
989
1125
|
const relName = inferFkAs(col.tsName);
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
1126
|
+
const relationName = pulledFkRelationName(col, table, manifest, tracker);
|
|
1127
|
+
let def = `fk("${escapeTsString(targetRef)}")`;
|
|
1128
|
+
if (relationName !== relName) {
|
|
1129
|
+
def += `.as("${escapeTsString(relationName)}")`;
|
|
993
1130
|
}
|
|
994
1131
|
const defaultInverse = col.unique
|
|
995
1132
|
? singularize(table.accessor)
|
|
996
1133
|
: table.accessor;
|
|
997
1134
|
if (col.fkInverse && col.fkInverse !== defaultInverse) {
|
|
998
|
-
def += `.inverse("${col.fkInverse}")`;
|
|
1135
|
+
def += `.inverse("${escapeTsString(col.fkInverse)}")`;
|
|
1136
|
+
}
|
|
1137
|
+
else {
|
|
1138
|
+
const targetAccessor = fkTargetAccessor(col, manifest);
|
|
1139
|
+
if (manifest.tables[targetAccessor]) {
|
|
1140
|
+
const inverseName = pulledFkInverseName(col, table.accessor, targetAccessor, tracker);
|
|
1141
|
+
if (inverseName !== defaultInverse) {
|
|
1142
|
+
def += `.inverse("${escapeTsString(inverseName)}")`;
|
|
1143
|
+
}
|
|
1144
|
+
}
|
|
999
1145
|
}
|
|
1000
1146
|
if (col.onDelete) {
|
|
1001
|
-
def += `.onDelete("${col.onDelete}")`;
|
|
1147
|
+
def += `.onDelete("${escapeTsString(col.onDelete)}")`;
|
|
1002
1148
|
}
|
|
1003
1149
|
if (col.onUpdate) {
|
|
1004
|
-
def += `.onUpdate("${col.onUpdate}")`;
|
|
1150
|
+
def += `.onUpdate("${escapeTsString(col.onUpdate)}")`;
|
|
1005
1151
|
}
|
|
1006
1152
|
if (col.deferrable) {
|
|
1007
|
-
def += `.deferrable("${col.deferrable}")`;
|
|
1153
|
+
def += `.deferrable("${escapeTsString(col.deferrable)}")`;
|
|
1008
1154
|
}
|
|
1009
1155
|
if (col.primary) {
|
|
1010
1156
|
def += ".primary()";
|
|
@@ -1012,9 +1158,9 @@ function sqliteColumnDef(col, table, manifest) {
|
|
|
1012
1158
|
else if (!col.nullable) {
|
|
1013
1159
|
def += ".notNull()";
|
|
1014
1160
|
}
|
|
1015
|
-
return `${col.tsName}: ${def},`;
|
|
1161
|
+
return `${tsPropertyKey(col.tsName)}: ${def},`;
|
|
1016
1162
|
}
|
|
1017
|
-
let def = `${col.tsName}: ${sqliteColumnBuilder(col)}()`;
|
|
1163
|
+
let def = `${tsPropertyKey(col.tsName)}: ${sqliteColumnBuilder(col)}()`;
|
|
1018
1164
|
if (col.kind !== "id" && col.primary && table.primaryKey.length === 1) {
|
|
1019
1165
|
def += ".primary()";
|
|
1020
1166
|
}
|
|
@@ -1033,16 +1179,17 @@ export async function introspectMysql(client) {
|
|
|
1033
1179
|
const manifest = await introspectMysqlToManifest(client);
|
|
1034
1180
|
return emitPostgresSchema(manifest);
|
|
1035
1181
|
}
|
|
1036
|
-
|
|
1037
|
-
|
|
1182
|
+
/** Emit a `neoorm/schema` TS source from a SQLite-introspected manifest. Exported for tests. */
|
|
1183
|
+
export function emitSqliteSchema(manifest) {
|
|
1184
|
+
const tracker = pullNameTracker(manifest);
|
|
1038
1185
|
const tableBlocks = [];
|
|
1039
1186
|
for (const table of Object.values(manifest.tables)) {
|
|
1040
1187
|
const tsNameBySql = new Map(table.columns.map((col) => [col.sqlName, col.tsName]));
|
|
1041
1188
|
const lines = [tableHeader(table.accessor, table.sqlName)];
|
|
1042
1189
|
for (const col of table.columns) {
|
|
1043
|
-
lines.push(` ${sqliteColumnDef(col, table, manifest)}`);
|
|
1190
|
+
lines.push(` ${sqliteColumnDef(col, table, manifest, tracker)}`);
|
|
1044
1191
|
}
|
|
1045
|
-
const extras = emitTableExtras(table, tsNameBySql, undefined, manifest);
|
|
1192
|
+
const extras = emitTableExtras(table, tsNameBySql, undefined, manifest, tracker);
|
|
1046
1193
|
if (extras.length > 0) {
|
|
1047
1194
|
lines.push(` }, (t) => [
|
|
1048
1195
|
${extras.join("\n")}
|
|
@@ -1079,6 +1226,10 @@ ${extras.join("\n")}
|
|
|
1079
1226
|
``,
|
|
1080
1227
|
].join("\n");
|
|
1081
1228
|
}
|
|
1229
|
+
export async function introspectSqlite(client) {
|
|
1230
|
+
const manifest = await introspectSqliteToManifest(client);
|
|
1231
|
+
return emitSqliteSchema(manifest);
|
|
1232
|
+
}
|
|
1082
1233
|
function inferColumnNaming(columnNames) {
|
|
1083
1234
|
const allCamelCase = columnNames.every((sqlName) => toCamelCase(sqlName) === sqlName);
|
|
1084
1235
|
const needsSnakeCaseMap = columnNames.some((sqlName) => sqlName !== resolveSqlColumnName(toCamelCase(sqlName), "snakeCase"));
|