typesql-cli 0.19.1 → 0.20.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/README.md +5 -0
- package/cli.js +66 -75
- package/cli.js.map +1 -1
- package/code-generator.d.ts +3 -2
- package/code-generator.d.ts.map +1 -1
- package/code-generator.js +29 -21
- package/code-generator.js.map +1 -1
- package/code-generator2.d.ts +5 -4
- package/code-generator2.d.ts.map +1 -1
- package/code-generator2.js +28 -26
- package/code-generator2.js.map +1 -1
- package/dialects/postgres.d.ts +1 -0
- package/dialects/postgres.d.ts.map +1 -1
- package/dialects/postgres.js +25 -8
- package/dialects/postgres.js.map +1 -1
- package/drivers/postgres.d.ts +2 -4
- package/drivers/postgres.d.ts.map +1 -1
- package/drivers/postgres.js +44 -55
- package/drivers/postgres.js.map +1 -1
- package/drivers/types.d.ts +4 -8
- package/drivers/types.d.ts.map +1 -1
- package/load-config.d.ts +6 -0
- package/load-config.d.ts.map +1 -1
- package/load-config.js +65 -1
- package/load-config.js.map +1 -1
- package/package.json +2 -1
- package/postgres-query-analyzer/describe.d.ts +2 -1
- package/postgres-query-analyzer/describe.d.ts.map +1 -1
- package/postgres-query-analyzer/describe.js +18 -23
- package/postgres-query-analyzer/describe.js.map +1 -1
- package/postgres-query-analyzer/traverse.d.ts +7 -3
- package/postgres-query-analyzer/traverse.d.ts.map +1 -1
- package/postgres-query-analyzer/traverse.js +242 -154
- package/postgres-query-analyzer/traverse.js.map +1 -1
- package/postgres-query-analyzer/types.d.ts +1 -0
- package/postgres-query-analyzer/types.d.ts.map +1 -1
- package/schema-info.d.ts +13 -5
- package/schema-info.d.ts.map +1 -1
- package/schema-info.js +26 -52
- package/schema-info.js.map +1 -1
- package/sqlite-query-analyzer/code-generator.d.ts +2 -2
- package/sqlite-query-analyzer/code-generator.d.ts.map +1 -1
- package/sqlite-query-analyzer/code-generator.js.map +1 -1
- package/sqlite-query-analyzer/types.d.ts +1 -1
- package/sqlite-query-analyzer/types.d.ts.map +1 -1
- package/ts-dynamic-query-descriptor.d.ts.map +1 -1
- package/ts-dynamic-query-descriptor.js +2 -1
- package/ts-dynamic-query-descriptor.js.map +1 -1
- package/types.d.ts +7 -0
- package/types.d.ts.map +1 -1
package/drivers/postgres.js
CHANGED
|
@@ -17,7 +17,6 @@ exports.loadDbSchema = loadDbSchema;
|
|
|
17
17
|
exports.loadEnumsMap = loadEnumsMap;
|
|
18
18
|
exports.loadEnums = loadEnums;
|
|
19
19
|
exports.loadCheckConstraints = loadCheckConstraints;
|
|
20
|
-
exports.mapToColumnSchema = mapToColumnSchema;
|
|
21
20
|
exports.createPostgresClient = createPostgresClient;
|
|
22
21
|
exports.loadForeignKeys = loadForeignKeys;
|
|
23
22
|
exports.loadUserFunctions = loadUserFunctions;
|
|
@@ -25,51 +24,52 @@ const postgres_1 = __importDefault(require("postgres"));
|
|
|
25
24
|
const neverthrow_1 = require("neverthrow");
|
|
26
25
|
const util_1 = require("../util");
|
|
27
26
|
const enum_parser_1 = require("../postgres-query-analyzer/enum-parser");
|
|
28
|
-
function loadDbSchema(sql) {
|
|
27
|
+
function loadDbSchema(sql, schemas = null) {
|
|
29
28
|
return neverthrow_1.ResultAsync.fromThrowable(() => __awaiter(this, void 0, void 0, function* () {
|
|
30
29
|
const result = yield sql `
|
|
31
|
-
SELECT
|
|
30
|
+
SELECT
|
|
32
31
|
t.table_schema,
|
|
33
32
|
t.table_name,
|
|
34
33
|
col.column_name,
|
|
35
|
-
CASE WHEN ty.typtype = 'e'
|
|
34
|
+
CASE WHEN ty.typtype = 'e' THEN 'enum()' ELSE ty.typname END AS type,
|
|
36
35
|
col.is_nullable,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
ELSE '' -- Otherwise, empty string
|
|
41
|
-
END AS column_key,
|
|
42
|
-
CASE
|
|
43
|
-
WHEN (
|
|
44
|
-
-- Check if the column is of type SERIAL
|
|
45
|
-
col.column_default LIKE 'nextval%'
|
|
46
|
-
OR
|
|
47
|
-
-- Check if the column is GENERATED ALWAYS AS IDENTITY
|
|
48
|
-
col.is_identity = 'YES'
|
|
49
|
-
) THEN true
|
|
50
|
-
ELSE false
|
|
51
|
-
END AS autoincrement,
|
|
36
|
+
COALESCE(agg.column_key, '') AS column_key,
|
|
37
|
+
COALESCE(
|
|
38
|
+
(col.column_default LIKE 'nextval%' OR col.is_identity = 'YES'), false) AS autoincrement,
|
|
52
39
|
col.column_default
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
40
|
+
FROM information_schema.tables t
|
|
41
|
+
JOIN pg_class c ON c.relname = t.table_name AND c.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = t.table_schema)
|
|
42
|
+
JOIN information_schema.columns col ON col.table_name = t.table_name AND col.table_schema = t.table_schema
|
|
43
|
+
JOIN pg_type ty ON ty.typname = col.udt_name
|
|
44
|
+
LEFT JOIN (
|
|
45
|
+
SELECT
|
|
46
|
+
con.conrelid AS conrelid,
|
|
47
|
+
att.attname AS column_name,
|
|
48
|
+
MAX(
|
|
49
|
+
CASE
|
|
50
|
+
WHEN con.contype = 'p' THEN 'PRI'
|
|
51
|
+
WHEN con.contype = 'u' THEN 'UNI'
|
|
52
|
+
ELSE ''
|
|
53
|
+
END
|
|
54
|
+
) AS column_key
|
|
55
|
+
FROM pg_constraint con
|
|
56
|
+
JOIN unnest(con.conkey) AS colnum ON true
|
|
57
|
+
JOIN pg_attribute att ON att.attrelid = con.conrelid AND att.attnum = colnum
|
|
58
|
+
WHERE con.contype IN ('p','u')
|
|
59
|
+
GROUP BY con.conrelid, att.attname
|
|
60
|
+
) AS agg
|
|
61
|
+
ON agg.conrelid = c.oid AND agg.column_name = col.column_name
|
|
62
|
+
WHERE 1 = 1
|
|
63
|
+
-- t.table_type = 'BASE TABLE' -- Only regular tables, excluding views
|
|
64
|
+
AND (
|
|
65
|
+
(${schemas}::text[] IS NULL AND t.table_schema NOT IN ('information_schema', 'pg_catalog', 'pg_toast') AND t.table_schema NOT LIKE 'pg_temp%')
|
|
66
|
+
OR
|
|
67
|
+
(${schemas}::text[] IS NOT NULL AND t.table_schema = ANY(${schemas}))
|
|
68
|
+
)
|
|
69
69
|
ORDER BY
|
|
70
70
|
t.table_schema, t.table_name, col.ordinal_position`;
|
|
71
71
|
return result.map((row) => {
|
|
72
|
-
const result = Object.assign({
|
|
72
|
+
const result = Object.assign({ schema: row.table_schema, table: row.table_name, column_name: row.column_name, type: row.type, is_nullable: row.is_nullable === 'YES', column_key: row.column_key, autoincrement: row.autoincrement }, (row.column_default && { column_default: true }));
|
|
73
73
|
return result;
|
|
74
74
|
});
|
|
75
75
|
}), err => convertPostgresErrorToTypeSQLError(err))();
|
|
@@ -133,21 +133,6 @@ function _loadCheckConstraints(sql) {
|
|
|
133
133
|
return result;
|
|
134
134
|
});
|
|
135
135
|
}
|
|
136
|
-
function mapToColumnSchema(col) {
|
|
137
|
-
var _a;
|
|
138
|
-
const columnSchema = {
|
|
139
|
-
column: col.column_name,
|
|
140
|
-
column_type: col.type,
|
|
141
|
-
columnKey: col.column_key,
|
|
142
|
-
notNull: !col.is_nullable,
|
|
143
|
-
schema: col.table_schema,
|
|
144
|
-
table: col.table_name,
|
|
145
|
-
hidden: 0,
|
|
146
|
-
autoincrement: col.autoincrement,
|
|
147
|
-
defaultValue: (_a = col.column_default) === null || _a === void 0 ? void 0 : _a.toString()
|
|
148
|
-
};
|
|
149
|
-
return columnSchema;
|
|
150
|
-
}
|
|
151
136
|
const postgresDescribe = (sql, sqlQuery) => {
|
|
152
137
|
return neverthrow_1.ResultAsync.fromThrowable(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
153
138
|
const describeResult = yield sql.unsafe(sqlQuery).describe();
|
|
@@ -207,10 +192,10 @@ function loadForeignKeys(sql) {
|
|
|
207
192
|
return result;
|
|
208
193
|
}), err => convertPostgresErrorToTypeSQLError(err))();
|
|
209
194
|
}
|
|
210
|
-
function loadUserFunctions(sql) {
|
|
211
|
-
return neverthrow_1.ResultAsync.fromThrowable(() => _loadUserFunctions(sql), err => convertPostgresErrorToTypeSQLError(err))();
|
|
195
|
+
function loadUserFunctions(sql, schemas = null) {
|
|
196
|
+
return neverthrow_1.ResultAsync.fromThrowable(() => _loadUserFunctions(sql, schemas), err => convertPostgresErrorToTypeSQLError(err))();
|
|
212
197
|
}
|
|
213
|
-
function _loadUserFunctions(sql) {
|
|
198
|
+
function _loadUserFunctions(sql, schemas) {
|
|
214
199
|
return sql `SELECT
|
|
215
200
|
n.nspname AS schema,
|
|
216
201
|
p.proname AS function_name,
|
|
@@ -222,7 +207,11 @@ function _loadUserFunctions(sql) {
|
|
|
222
207
|
FROM pg_proc p
|
|
223
208
|
JOIN pg_namespace n ON n.oid = p.pronamespace
|
|
224
209
|
JOIN pg_language l ON l.oid = p.prolang
|
|
225
|
-
WHERE
|
|
210
|
+
WHERE (
|
|
211
|
+
(${schemas}::text[] IS NULL AND n.nspname NOT IN ('information_schema', 'pg_catalog', 'pg_toast')) -- exclude system functions
|
|
212
|
+
OR
|
|
213
|
+
(${schemas}::text[] IS NOT NULL AND n.nspname = ANY(${schemas}::text[]))
|
|
214
|
+
)
|
|
226
215
|
AND p.prokind = 'f' -- 'f' = function, 'p' = procedure, 'a' = aggregate
|
|
227
216
|
-- and l.lanname = 'sql'
|
|
228
217
|
ORDER BY n.nspname, p.proname`;
|
package/drivers/postgres.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../../src/drivers/postgres.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../../src/drivers/postgres.ts"],"names":[],"mappings":"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"}
|
package/drivers/types.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { TaskEither } from 'fp-ts/lib/TaskEither';
|
|
2
|
-
import { CheckConstraintResult, EnumMap } from './postgres';
|
|
3
2
|
import { PostgresSimpleType } from '../sqlite-query-analyzer/types';
|
|
4
|
-
import {
|
|
3
|
+
import { PostgresSchemaInfo } from '../schema-info';
|
|
5
4
|
export type PostgresColumnSchema = {
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
schema: string;
|
|
6
|
+
table: string;
|
|
8
7
|
column_name: string;
|
|
9
8
|
type: PostgresSimpleType;
|
|
10
9
|
is_nullable: boolean;
|
|
@@ -20,10 +19,7 @@ export type DescribeQueryColumn = {
|
|
|
20
19
|
export type DescribeParameters = {
|
|
21
20
|
sql: string;
|
|
22
21
|
postgresDescribeResult: PostgresDescribe;
|
|
23
|
-
|
|
24
|
-
enumsTypes: EnumMap;
|
|
25
|
-
checkConstraints: CheckConstraintResult;
|
|
26
|
-
userFunctions: UserFunctionSchema[];
|
|
22
|
+
schemaInfo: PostgresSchemaInfo;
|
|
27
23
|
namedParameters: string[];
|
|
28
24
|
};
|
|
29
25
|
export type PostgresDescribe = {
|
package/drivers/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/drivers/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/drivers/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,kBAAkB,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAEf,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,sBAAsB,EAAE,gBAAgB,CAAC;IACzC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAC/B,CAAA;AACD,MAAM,MAAM,mBAAmB,GAAG,gBAAgB,GAAG;IACpD,kBAAkB,EAAE,OAAO,CAAC;CAC5B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAAA;CAAE,CAAA;AAEhF,MAAM,MAAM,MAAM,CAAC,UAAU,IAAI;IAChC,YAAY,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,UAAU,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;CAC/E,CAAA"}
|
package/load-config.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { TypeSqlConfig } from './types';
|
|
2
2
|
export declare function loadConfig(configPath: string): TypeSqlConfig;
|
|
3
3
|
export declare function resolveConfig(configPath: string, config: TypeSqlConfig): TypeSqlConfig;
|
|
4
|
+
export declare function resolveEnvVars(config: TypeSqlConfig): TypeSqlConfig;
|
|
5
|
+
export declare function resolveTsFilePath(sqlPath: string, sqlDir: string, outDir?: string): string;
|
|
6
|
+
type ExportMap = Map<string, string[]>;
|
|
7
|
+
export declare function buildExportMap(rootDir: string): ExportMap;
|
|
8
|
+
export declare function buildExportList(dir: string): string[];
|
|
9
|
+
export {};
|
|
4
10
|
//# sourceMappingURL=load-config.d.ts.map
|
package/load-config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../../src/load-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../../src/load-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAK5D;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,aAAa,CAYtF;AAGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAWnE;AAkBD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAQjF;AAED,KAAK,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AACvC,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAwBzD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAQrD"}
|
package/load-config.js
CHANGED
|
@@ -5,12 +5,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.loadConfig = loadConfig;
|
|
7
7
|
exports.resolveConfig = resolveConfig;
|
|
8
|
+
exports.resolveEnvVars = resolveEnvVars;
|
|
9
|
+
exports.resolveTsFilePath = resolveTsFilePath;
|
|
10
|
+
exports.buildExportMap = buildExportMap;
|
|
11
|
+
exports.buildExportList = buildExportList;
|
|
8
12
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
13
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
10
14
|
function loadConfig(configPath) {
|
|
11
15
|
const rawdata = node_fs_1.default.readFileSync(configPath, 'utf-8');
|
|
12
16
|
const config = JSON.parse(rawdata);
|
|
13
|
-
|
|
17
|
+
const substitutedConfig = resolveEnvVars(config);
|
|
18
|
+
return resolveConfig(configPath, substitutedConfig);
|
|
14
19
|
}
|
|
15
20
|
function resolveConfig(configPath, config) {
|
|
16
21
|
const configDir = node_path_1.default.dirname(node_path_1.default.resolve(configPath));
|
|
@@ -19,7 +24,66 @@ function resolveConfig(configPath, config) {
|
|
|
19
24
|
: config.databaseUri;
|
|
20
25
|
return Object.assign(Object.assign({}, config), { databaseUri: resolvedDatabaseUri, sqlDir: node_path_1.default.resolve(configDir, config.sqlDir) });
|
|
21
26
|
}
|
|
27
|
+
// Replaces ${ENV_VAR} with values from process.env
|
|
28
|
+
function resolveEnvVars(config) {
|
|
29
|
+
const newConfig = Object.assign(Object.assign({}, config), { databaseUri: resolveEnvVar(config.databaseUri) });
|
|
30
|
+
if (config.authToken != null) {
|
|
31
|
+
newConfig.authToken = resolveEnvVar(config.authToken);
|
|
32
|
+
}
|
|
33
|
+
return newConfig;
|
|
34
|
+
}
|
|
35
|
+
function resolveEnvVar(rawValue) {
|
|
36
|
+
return rawValue.replace(/\$\{([\w\d_]+)\}/g, (_, varName) => {
|
|
37
|
+
const envVal = process.env[varName];
|
|
38
|
+
if (envVal === undefined) {
|
|
39
|
+
console.warn(`Warning: Environment variable ${varName} is not defined.`);
|
|
40
|
+
}
|
|
41
|
+
return envVal !== null && envVal !== void 0 ? envVal : '';
|
|
42
|
+
});
|
|
43
|
+
}
|
|
22
44
|
function isRelativeFilePath(uri) {
|
|
23
45
|
return typeof uri === 'string' && !uri.includes('://') && !node_path_1.default.isAbsolute(uri);
|
|
24
46
|
}
|
|
47
|
+
function resolveTsFilePath(sqlPath, sqlDir, outDir) {
|
|
48
|
+
const outputBase = outDir || sqlDir;
|
|
49
|
+
const relativeDir = node_path_1.default.relative(sqlDir, node_path_1.default.dirname(sqlPath));
|
|
50
|
+
const fileNameWithoutExt = node_path_1.default.basename(sqlPath, '.sql');
|
|
51
|
+
const tsFileName = `${fileNameWithoutExt}.ts`;
|
|
52
|
+
const tsFilePath = node_path_1.default.join(outputBase, relativeDir, tsFileName);
|
|
53
|
+
return tsFilePath;
|
|
54
|
+
}
|
|
55
|
+
function buildExportMap(rootDir) {
|
|
56
|
+
const exportMap = new Map();
|
|
57
|
+
function walk(dir) {
|
|
58
|
+
const entries = node_fs_1.default.readdirSync(dir, { withFileTypes: true });
|
|
59
|
+
const tsFiles = [];
|
|
60
|
+
for (const entry of entries) {
|
|
61
|
+
const fullPath = node_path_1.default.join(dir, entry.name);
|
|
62
|
+
if (entry.isDirectory()) {
|
|
63
|
+
walk(fullPath);
|
|
64
|
+
}
|
|
65
|
+
else if (isExportableTsFile(entry)) {
|
|
66
|
+
tsFiles.push(entry.name);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (tsFiles.length > 0) {
|
|
70
|
+
exportMap.set(dir, tsFiles);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
walk(rootDir);
|
|
74
|
+
return exportMap;
|
|
75
|
+
}
|
|
76
|
+
function buildExportList(dir) {
|
|
77
|
+
const entries = node_fs_1.default.readdirSync(dir, { withFileTypes: true });
|
|
78
|
+
const exports = entries
|
|
79
|
+
.filter(isExportableTsFile)
|
|
80
|
+
.map((entry) => entry.name);
|
|
81
|
+
return exports;
|
|
82
|
+
}
|
|
83
|
+
function isExportableTsFile(entry) {
|
|
84
|
+
return entry.isFile() &&
|
|
85
|
+
entry.name.endsWith('.ts') &&
|
|
86
|
+
entry.name !== 'index.ts' &&
|
|
87
|
+
!entry.name.endsWith('.d.ts');
|
|
88
|
+
}
|
|
25
89
|
//# sourceMappingURL=load-config.js.map
|
package/load-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../src/load-config.ts"],"names":[],"mappings":";;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../src/load-config.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typesql-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"camelcase": "^8.0.0",
|
|
45
45
|
"chokidar": "^3.6.0",
|
|
46
46
|
"code-block-writer": "^13.0.3",
|
|
47
|
+
"dotenv": "^17.2.1",
|
|
47
48
|
"fp-ts": "^2.16.10",
|
|
48
49
|
"glob": "^11.0.3",
|
|
49
50
|
"libsql": "^0.4.7",
|
|
@@ -2,5 +2,6 @@ import { TypeSqlError } from '../types';
|
|
|
2
2
|
import { Sql } from 'postgres';
|
|
3
3
|
import { ResultAsync } from 'neverthrow';
|
|
4
4
|
import { PostgresSchemaDef } from './types';
|
|
5
|
-
|
|
5
|
+
import { PostgresSchemaInfo } from '../schema-info';
|
|
6
|
+
export declare function describeQuery(postgres: Sql, sql: string, namedParameters: string[], schemaInfo: PostgresSchemaInfo): ResultAsync<PostgresSchemaDef, TypeSqlError>;
|
|
6
7
|
//# sourceMappingURL=describe.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/describe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAc,WAAW,EAAO,MAAM,YAAY,CAAC;AAO1D,OAAO,EAA4C,iBAAiB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"describe.d.ts","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/describe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAc,WAAW,EAAO,MAAM,YAAY,CAAC;AAO1D,OAAO,EAA4C,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AA0GpD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,kBAAkB,GAAG,WAAW,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAWjK"}
|
|
@@ -11,7 +11,8 @@ const Either_1 = require("fp-ts/lib/Either");
|
|
|
11
11
|
const describe_query_1 = require("../describe-query");
|
|
12
12
|
const describe_dynamic_query_1 = require("../describe-dynamic-query");
|
|
13
13
|
function describeQueryRefine(describeParameters) {
|
|
14
|
-
const { sql,
|
|
14
|
+
const { sql, postgresDescribeResult, namedParameters, schemaInfo } = describeParameters;
|
|
15
|
+
const { columns: dbSchema, enumTypes, userFunctions, checkConstraints } = schemaInfo;
|
|
15
16
|
const generateNestedInfo = (0, describe_query_1.hasAnnotation)(sql, '@nested');
|
|
16
17
|
const generateDynamicQueryInfo = (0, describe_query_1.hasAnnotation)(sql, '@dynamicQuery');
|
|
17
18
|
const parseResult = (0, parser_1.safeParseSql)(sql, dbSchema, checkConstraints, userFunctions, { collectNestedInfo: generateNestedInfo, collectDynamicQueryInfo: generateDynamicQueryInfo });
|
|
@@ -29,13 +30,13 @@ function describeQueryRefine(describeParameters) {
|
|
|
29
30
|
sql: newSql,
|
|
30
31
|
queryType: traverseResult.queryType,
|
|
31
32
|
multipleRowsResult: traverseResult.multipleRowsResult,
|
|
32
|
-
columns: getColumnsForQuery(traverseResult, postgresDescribeResult,
|
|
33
|
+
columns: getColumnsForQuery(traverseResult, postgresDescribeResult, enumTypes, checkConstraints),
|
|
33
34
|
parameters: traverseResult.queryType === 'Update'
|
|
34
|
-
? getParamtersForWhere(traverseResult, postgresDescribeResult,
|
|
35
|
-
: getParamtersForQuery(traverseResult, postgresDescribeResult,
|
|
35
|
+
? getParamtersForWhere(traverseResult, postgresDescribeResult, enumTypes, paramNames)
|
|
36
|
+
: getParamtersForQuery(traverseResult, postgresDescribeResult, enumTypes, paramNames)
|
|
36
37
|
};
|
|
37
38
|
if (traverseResult.queryType === 'Update') {
|
|
38
|
-
descResult.data = getDataForQuery(traverseResult, postgresDescribeResult,
|
|
39
|
+
descResult.data = getDataForQuery(traverseResult, postgresDescribeResult, enumTypes, paramNames);
|
|
39
40
|
}
|
|
40
41
|
if (traverseResult.returning) {
|
|
41
42
|
descResult.returning = traverseResult.returning;
|
|
@@ -70,12 +71,12 @@ function createIndexToNameMap(names) {
|
|
|
70
71
|
return indexToName;
|
|
71
72
|
}
|
|
72
73
|
function mapToColumnInfo(col, posgresTypes, enumTypes, checkConstraints, colInfo) {
|
|
73
|
-
const constraintKey = `[${colInfo.
|
|
74
|
+
const constraintKey = `[${colInfo.schema}][${colInfo.table}][${colInfo.column_name}]`;
|
|
74
75
|
return {
|
|
75
76
|
name: col.name,
|
|
76
77
|
notNull: !colInfo.is_nullable,
|
|
77
78
|
type: createType(col.typeId, posgresTypes, enumTypes.get(col.typeId), checkConstraints[constraintKey], colInfo.jsonType),
|
|
78
|
-
table: colInfo.
|
|
79
|
+
table: colInfo.table
|
|
79
80
|
};
|
|
80
81
|
}
|
|
81
82
|
function createType(typeId, postgresTypes, enumType, checkConstraint, jsonType) {
|
|
@@ -103,22 +104,16 @@ function mapToParamDef(postgresTypes, enumTypes, paramName, paramType, checkCons
|
|
|
103
104
|
type: `${createType(paramType, postgresTypes, enumTypes.get(paramType), checkConstraint, undefined)}${arrayType}`
|
|
104
105
|
};
|
|
105
106
|
}
|
|
106
|
-
function describeQuery(postgres, sql, namedParameters) {
|
|
107
|
-
return
|
|
108
|
-
.andThen(
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
checkConstraints,
|
|
117
|
-
userFunctions,
|
|
118
|
-
namedParameters
|
|
119
|
-
};
|
|
120
|
-
return describeQueryRefine(describeParameters);
|
|
121
|
-
});
|
|
107
|
+
function describeQuery(postgres, sql, namedParameters, schemaInfo) {
|
|
108
|
+
return (0, postgres_1.postgresDescribe)(postgres, sql)
|
|
109
|
+
.andThen(analyzeResult => {
|
|
110
|
+
const describeParameters = {
|
|
111
|
+
sql,
|
|
112
|
+
postgresDescribeResult: analyzeResult,
|
|
113
|
+
namedParameters,
|
|
114
|
+
schemaInfo
|
|
115
|
+
};
|
|
116
|
+
return describeQueryRefine(describeParameters);
|
|
122
117
|
});
|
|
123
118
|
}
|
|
124
119
|
function getColumnsForQuery(traverseResult, postgresDescribeResult, enumTypes, checkConstraints) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/describe.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/describe.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,8 +7,8 @@ import { CheckConstraintResult } from '../drivers/postgres';
|
|
|
7
7
|
import { JsonType, PostgresEnumType, PostgresSimpleType } from '../sqlite-query-analyzer/types';
|
|
8
8
|
import { UserFunctionSchema } from './types';
|
|
9
9
|
export type NotNullInfo = {
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
schema: string;
|
|
11
|
+
table: string;
|
|
12
12
|
column_name: string;
|
|
13
13
|
is_nullable: boolean;
|
|
14
14
|
original_is_nullable?: boolean;
|
|
@@ -57,6 +57,10 @@ export type SetofReturnType = {
|
|
|
57
57
|
kind: 'setof';
|
|
58
58
|
table: string;
|
|
59
59
|
};
|
|
60
|
-
export type
|
|
60
|
+
export type TableNameReturnType = {
|
|
61
|
+
kind: 'table_name';
|
|
62
|
+
table: string;
|
|
63
|
+
};
|
|
64
|
+
export type FunctionReturnType = TableReturnType | SetofReturnType | TableNameReturnType;
|
|
61
65
|
export declare function parseReturnType(returnType: string): FunctionReturnType;
|
|
62
66
|
//# sourceMappingURL=traverse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/traverse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyzC,WAAW,EAA4L,MAAM,mDAAmD,CAAC;AAEjkD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAa,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,uDAAuD,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAA8D,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAE5J,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG7C,MAAM,MAAM,WAAW,GAAG;IACzB,
|
|
1
|
+
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../../src/postgres-query-analyzer/traverse.ts"],"names":[],"mappings":"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"}
|