typesql-cli 0.8.0-alpha.5 → 0.8.0-alpha.7
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/cli.js +36 -39
- package/cli.js.map +1 -1
- package/code-generator.d.ts +4 -4
- package/code-generator.d.ts.map +1 -1
- package/code-generator.js +17 -19
- package/code-generator.js.map +1 -1
- package/describe-query.d.ts +2 -3
- package/describe-query.d.ts.map +1 -1
- package/describe-query.js +3 -2
- package/describe-query.js.map +1 -1
- package/mysql-query-analyzer/collect-constraints.d.ts +2 -2
- package/mysql-query-analyzer/collect-constraints.d.ts.map +1 -1
- package/mysql-query-analyzer/collect-constraints.js +1 -1
- package/mysql-query-analyzer/collect-constraints.js.map +1 -1
- package/mysql-query-analyzer/traverse.d.ts +19 -0
- package/mysql-query-analyzer/traverse.d.ts.map +1 -1
- package/mysql-query-analyzer/traverse.js +15 -15
- package/mysql-query-analyzer/traverse.js.map +1 -1
- package/mysql-query-analyzer/types.d.ts +1 -1
- package/mysql-query-analyzer/types.d.ts.map +1 -1
- package/mysql-query-analyzer/unify.d.ts.map +1 -1
- package/mysql-query-analyzer/unify.js +8 -0
- package/mysql-query-analyzer/unify.js.map +1 -1
- package/package.json +1 -1
- package/queryExectutor.d.ts +8 -15
- package/queryExectutor.d.ts.map +1 -1
- package/queryExectutor.js +119 -121
- package/queryExectutor.js.map +1 -1
- package/sql-generator.d.ts +5 -4
- package/sql-generator.d.ts.map +1 -1
- package/sql-generator.js +24 -21
- package/sql-generator.js.map +1 -1
- package/sqlite-query-analyzer/code-generator.d.ts +3 -1
- package/sqlite-query-analyzer/code-generator.d.ts.map +1 -1
- package/sqlite-query-analyzer/code-generator.js +88 -29
- package/sqlite-query-analyzer/code-generator.js.map +1 -1
- package/sqlite-query-analyzer/parser.d.ts +2 -0
- package/sqlite-query-analyzer/parser.d.ts.map +1 -1
- package/sqlite-query-analyzer/parser.js +155 -31
- package/sqlite-query-analyzer/parser.js.map +1 -1
- package/sqlite-query-analyzer/query-executor.d.ts +7 -3
- package/sqlite-query-analyzer/query-executor.d.ts.map +1 -1
- package/sqlite-query-analyzer/query-executor.js +65 -6
- package/sqlite-query-analyzer/query-executor.js.map +1 -1
- package/sqlite-query-analyzer/sql-generator.d.ts +6 -0
- package/sqlite-query-analyzer/sql-generator.d.ts.map +1 -0
- package/sqlite-query-analyzer/sql-generator.js +96 -0
- package/sqlite-query-analyzer/sql-generator.js.map +1 -0
- package/sqlite-query-analyzer/sqlite-crud-generator.d.ts +6 -0
- package/sqlite-query-analyzer/sqlite-crud-generator.d.ts.map +1 -0
- package/sqlite-query-analyzer/sqlite-crud-generator.js +96 -0
- package/sqlite-query-analyzer/sqlite-crud-generator.js.map +1 -0
- package/sqlite-query-analyzer/traverse.d.ts +4 -4
- package/sqlite-query-analyzer/traverse.d.ts.map +1 -1
- package/sqlite-query-analyzer/traverse.js +384 -82
- package/sqlite-query-analyzer/traverse.js.map +1 -1
- package/sqlite-query-analyzer/types.d.ts +1 -1
- package/sqlite-query-analyzer/types.d.ts.map +1 -1
- package/types.d.ts +15 -1
- package/types.d.ts.map +1 -1
package/package.json
CHANGED
package/queryExectutor.d.ts
CHANGED
@@ -1,18 +1,11 @@
|
|
1
|
+
import { Connection, Pool } from "mysql2/promise";
|
1
2
|
import { Either } from "fp-ts/lib/Either";
|
2
|
-
import { TypeSqlError } from "./types";
|
3
|
+
import { MySqlDialect, TypeSqlError } from "./types";
|
3
4
|
import { ColumnSchema, Table } from "./mysql-query-analyzer/types";
|
4
|
-
export declare
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
loadDbSchema(): Promise<Either<TypeSqlError, ColumnSchema[]>>;
|
11
|
-
loadTableSchema(tableName: string): Promise<Either<TypeSqlError, ColumnSchema[]>>;
|
12
|
-
selectTablesFromSchema(): Promise<Either<TypeSqlError, Table[]>>;
|
13
|
-
createParams(sql: string, paramValue: '1' | '?'): string[];
|
14
|
-
explainSql(sql: string): Promise<Either<TypeSqlError, boolean>>;
|
15
|
-
createInvalidSqlError(err: any): Either<TypeSqlError, never>;
|
16
|
-
isVersion8(): boolean;
|
17
|
-
}
|
5
|
+
export declare function createMysqlClientForTest(databaseUri: string): Promise<MySqlDialect>;
|
6
|
+
export declare function createMysqlClient(databaseUri: string): Promise<Either<TypeSqlError, MySqlDialect>>;
|
7
|
+
export declare function loadMysqlSchema(conn: Connection, schema: string): Promise<Either<TypeSqlError, ColumnSchema[]>>;
|
8
|
+
export declare function loadTableSchema(conn: Connection, schema: string, tableName: string): Promise<Either<TypeSqlError, ColumnSchema[]>>;
|
9
|
+
export declare function selectTablesFromSchema(conn: Connection): Promise<Either<TypeSqlError, Table[]>>;
|
10
|
+
export declare function explainSql(pool: Pool, sql: string): Promise<Either<TypeSqlError, boolean>>;
|
18
11
|
//# sourceMappingURL=queryExectutor.d.ts.map
|
package/queryExectutor.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"queryExectutor.d.ts","sourceRoot":"","sources":["../../src/queryExectutor.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"queryExectutor.d.ts","sourceRoot":"","sources":["../../src/queryExectutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAc,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAOnE,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAMzF;AAED,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAqBxG;AAQD,wBAAsB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC,CAqBrH;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC,CAsBxI;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAgBrG;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAUhG"}
|
package/queryExectutor.js
CHANGED
@@ -9,143 +9,141 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
9
9
|
});
|
10
10
|
};
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
-
exports.
|
12
|
+
exports.explainSql = exports.selectTablesFromSchema = exports.loadTableSchema = exports.loadMysqlSchema = exports.createMysqlClient = exports.createMysqlClientForTest = void 0;
|
13
13
|
const promise_1 = require("mysql2/promise");
|
14
14
|
const Either_1 = require("fp-ts/lib/Either");
|
15
15
|
const connectionNotOpenError = {
|
16
16
|
name: 'Connection error',
|
17
17
|
description: 'The database connection is not open.'
|
18
18
|
};
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
return (0, Either_1.right)(columns.map(col => (Object.assign(Object.assign({}, col), { notNull: !!+col.notNull })))); //convert 1 to true, 0 to false
|
65
|
-
});
|
66
|
-
}
|
67
|
-
return (0, Either_1.left)(connectionNotOpenError);
|
68
|
-
});
|
69
|
-
}
|
70
|
-
loadTableSchema(tableName) {
|
71
|
-
return __awaiter(this, void 0, void 0, function* () {
|
72
|
-
const sql = `
|
19
|
+
function createMysqlClientForTest(databaseUri) {
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
21
|
+
const client = yield createMysqlClient(databaseUri);
|
22
|
+
if ((0, Either_1.isLeft)(client)) {
|
23
|
+
throw Error('Error createMysqlClientForTest');
|
24
|
+
}
|
25
|
+
return client.right;
|
26
|
+
});
|
27
|
+
}
|
28
|
+
exports.createMysqlClientForTest = createMysqlClientForTest;
|
29
|
+
function createMysqlClient(databaseUri) {
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
31
|
+
try {
|
32
|
+
const pool = yield (0, promise_1.createPool)(databaseUri);
|
33
|
+
//@ts-ignore
|
34
|
+
const schema = pool.pool.config.connectionConfig.database;
|
35
|
+
const databaseVersion = yield getDatabaseVersion(pool);
|
36
|
+
return (0, Either_1.right)({
|
37
|
+
type: 'mysql',
|
38
|
+
client: pool,
|
39
|
+
databaseVersion,
|
40
|
+
schema,
|
41
|
+
isVersion8: isVersion8(databaseVersion)
|
42
|
+
});
|
43
|
+
}
|
44
|
+
catch (e) {
|
45
|
+
const connError = {
|
46
|
+
name: 'Connection error',
|
47
|
+
description: e.message
|
48
|
+
};
|
49
|
+
return (0, Either_1.left)(connError);
|
50
|
+
}
|
51
|
+
});
|
52
|
+
}
|
53
|
+
exports.createMysqlClient = createMysqlClient;
|
54
|
+
function getDatabaseVersion(conn) {
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
56
|
+
const [rows] = yield conn.execute("select @@version as version");
|
57
|
+
const mySqlVersion = rows[0].version;
|
58
|
+
return mySqlVersion;
|
59
|
+
});
|
60
|
+
}
|
61
|
+
function loadMysqlSchema(conn, schema) {
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
63
|
+
const sql = `
|
73
64
|
SELECT
|
74
|
-
TABLE_SCHEMA as "schema",
|
75
|
-
TABLE_NAME as "table",
|
65
|
+
TABLE_SCHEMA as "schema", TABLE_NAME as "table",
|
76
66
|
COLUMN_NAME as "column",
|
77
|
-
IF(data_type = 'enum', COLUMN_TYPE, DATA_TYPE) as "column_type",
|
78
|
-
|
67
|
+
IF(data_type = 'enum', COLUMN_TYPE, DATA_TYPE) as "column_type",
|
68
|
+
if(IS_NULLABLE='NO', true, false) as "notNull",
|
79
69
|
COLUMN_KEY as "columnKey",
|
80
70
|
IF(EXTRA = 'auto_increment', true, false) as "autoincrement"
|
81
71
|
FROM INFORMATION_SCHEMA.COLUMNS
|
82
72
|
WHERE TABLE_SCHEMA = ?
|
83
|
-
AND TABLE_NAME = ?
|
84
73
|
ORDER BY TABLE_NAME, ORDINAL_POSITION
|
85
74
|
`;
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
return (0, Either_1.right)(columns);
|
91
|
-
});
|
92
|
-
}
|
93
|
-
return (0, Either_1.left)(connectionNotOpenError);
|
75
|
+
return conn.execute(sql, [schema])
|
76
|
+
.then(res => {
|
77
|
+
const columns = res[0];
|
78
|
+
return (0, Either_1.right)(columns.map(col => (Object.assign(Object.assign({}, col), { notNull: !!+col.notNull })))); //convert 1 to true, 0 to false
|
94
79
|
});
|
95
|
-
}
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
80
|
+
});
|
81
|
+
}
|
82
|
+
exports.loadMysqlSchema = loadMysqlSchema;
|
83
|
+
function loadTableSchema(conn, schema, tableName) {
|
84
|
+
return __awaiter(this, void 0, void 0, function* () {
|
85
|
+
const sql = `
|
86
|
+
SELECT
|
87
|
+
TABLE_SCHEMA as "schema",
|
88
|
+
TABLE_NAME as "table",
|
89
|
+
COLUMN_NAME as "column",
|
90
|
+
IF(data_type = 'enum', COLUMN_TYPE, DATA_TYPE) as "column_type",
|
91
|
+
IF(IS_NULLABLE='NO', true, false) as "notNull",
|
92
|
+
COLUMN_KEY as "columnKey",
|
93
|
+
IF(EXTRA = 'auto_increment', true, false) as "autoincrement"
|
94
|
+
FROM INFORMATION_SCHEMA.COLUMNS
|
95
|
+
WHERE TABLE_SCHEMA = ?
|
96
|
+
AND TABLE_NAME = ?
|
97
|
+
ORDER BY TABLE_NAME, ORDINAL_POSITION
|
98
|
+
`;
|
99
|
+
return conn.execute(sql, [schema, tableName])
|
100
|
+
.then(res => {
|
101
|
+
const columns = res[0];
|
102
|
+
return (0, Either_1.right)(columns);
|
114
103
|
});
|
115
|
-
}
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
var _a;
|
133
|
-
(_a = this.pool) === null || _a === void 0 ? void 0 : _a.releaseConnection(conn);
|
134
|
-
}).catch((err) => this.createInvalidSqlError(err));
|
135
|
-
}
|
136
|
-
return (0, Either_1.left)(connectionNotOpenError);
|
104
|
+
});
|
105
|
+
}
|
106
|
+
exports.loadTableSchema = loadTableSchema;
|
107
|
+
function selectTablesFromSchema(conn) {
|
108
|
+
return __awaiter(this, void 0, void 0, function* () {
|
109
|
+
const sql = `
|
110
|
+
SELECT
|
111
|
+
table_schema as "schema",
|
112
|
+
table_name as "table"
|
113
|
+
FROM information_schema.tables
|
114
|
+
WHERE table_type = 'BASE TABLE' and table_schema = database()
|
115
|
+
order by "schema", "table"
|
116
|
+
`;
|
117
|
+
return conn.execute(sql)
|
118
|
+
.then(res => {
|
119
|
+
const columns = res[0];
|
120
|
+
return (0, Either_1.right)(columns);
|
137
121
|
});
|
138
|
-
}
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
122
|
+
});
|
123
|
+
}
|
124
|
+
exports.selectTablesFromSchema = selectTablesFromSchema;
|
125
|
+
function explainSql(pool, sql) {
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
127
|
+
const conn = yield pool.getConnection();
|
128
|
+
;
|
129
|
+
return conn.prepare(sql)
|
130
|
+
.then(() => {
|
131
|
+
return (0, Either_1.right)(true);
|
132
|
+
}).catch((err) => createInvalidSqlError(err))
|
133
|
+
.finally(() => {
|
134
|
+
conn.release();
|
135
|
+
});
|
136
|
+
});
|
137
|
+
}
|
138
|
+
exports.explainSql = explainSql;
|
139
|
+
function createInvalidSqlError(err) {
|
140
|
+
const error = {
|
141
|
+
name: 'Invalid sql',
|
142
|
+
description: err.message
|
143
|
+
};
|
144
|
+
return (0, Either_1.left)(error);
|
145
|
+
}
|
146
|
+
function isVersion8(mySqlVersion) {
|
147
|
+
return mySqlVersion.startsWith("8.");
|
149
148
|
}
|
150
|
-
exports.DbClient = DbClient;
|
151
149
|
//# sourceMappingURL=queryExectutor.js.map
|
package/queryExectutor.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"queryExectutor.js","sourceRoot":"","sources":["../../src/queryExectutor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
1
|
+
{"version":3,"file":"queryExectutor.js","sourceRoot":"","sources":["../../src/queryExectutor.ts"],"names":[],"mappings":"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"}
|
package/sql-generator.d.ts
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import { ColumnSchema } from "./mysql-query-analyzer/types";
|
2
|
-
|
3
|
-
export declare function
|
4
|
-
export declare function
|
5
|
-
export declare function
|
2
|
+
import { TypeSqlDialect } from "./types";
|
3
|
+
export declare function generateSelectStatement(dialect: TypeSqlDialect, tableName: string, columns: ColumnSchema[]): string;
|
4
|
+
export declare function generateInsertStatement(dialect: TypeSqlDialect, tableName: string, dbSchema: ColumnSchema[]): string;
|
5
|
+
export declare function generateUpdateStatement(dialect: TypeSqlDialect, tableName: string, dbSchema: ColumnSchema[]): string;
|
6
|
+
export declare function generateDeleteStatement(dialect: TypeSqlDialect, tableName: string, dbSchema: ColumnSchema[]): string;
|
6
7
|
//# sourceMappingURL=sql-generator.d.ts.map
|
package/sql-generator.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sql-generator.d.ts","sourceRoot":"","sources":["../../src/sql-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;
|
1
|
+
{"version":3,"file":"sql-generator.d.ts","sourceRoot":"","sources":["../../src/sql-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,UAuB1G;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAwB3G;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAsB3G;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAc3G"}
|
package/sql-generator.js
CHANGED
@@ -5,33 +5,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.generateDeleteStatement = exports.generateUpdateStatement = exports.generateInsertStatement = exports.generateSelectStatement = void 0;
|
7
7
|
const code_block_writer_1 = __importDefault(require("code-block-writer"));
|
8
|
-
function generateSelectStatement(tableName, columns) {
|
9
|
-
const keys = columns.filter(col => col.columnKey
|
8
|
+
function generateSelectStatement(dialect, tableName, columns) {
|
9
|
+
const keys = columns.filter(col => col.columnKey == 'PRI');
|
10
10
|
if (keys.length == 0) {
|
11
11
|
keys.push(...columns.filter(col => col.columnKey == 'UNI'));
|
12
12
|
}
|
13
13
|
const writer = new code_block_writer_1.default();
|
14
14
|
writer.writeLine("SELECT");
|
15
15
|
columns.forEach((col, columnIndex) => {
|
16
|
-
writer.indent().write(escapeColumn(col.column));
|
16
|
+
writer.indent().write(escapeColumn(dialect, col.column));
|
17
17
|
writer.conditionalWrite(columnIndex < columns.length - 1, ',');
|
18
18
|
writer.newLine();
|
19
19
|
});
|
20
|
-
writer.writeLine(`FROM ${escapeTableName(tableName)}`);
|
20
|
+
writer.writeLine(`FROM ${escapeTableName(dialect, tableName)}`);
|
21
21
|
if (keys.length > 0) {
|
22
22
|
writer.write(`WHERE `);
|
23
|
-
writer.write(`${escapeColumn(keys[0].column)} = :${keys[0].column}`);
|
23
|
+
writer.write(`${escapeColumn(dialect, keys[0].column)} = :${keys[0].column}`);
|
24
24
|
}
|
25
25
|
return writer.toString();
|
26
26
|
}
|
27
27
|
exports.generateSelectStatement = generateSelectStatement;
|
28
|
-
function generateInsertStatement(tableName, dbSchema) {
|
28
|
+
function generateInsertStatement(dialect, tableName, dbSchema) {
|
29
29
|
const columns = dbSchema.filter(col => !col.autoincrement);
|
30
30
|
const writer = new code_block_writer_1.default();
|
31
|
-
writer.writeLine(`INSERT INTO ${escapeTableName(tableName)}`);
|
31
|
+
writer.writeLine(`INSERT INTO ${escapeTableName(dialect, tableName)}`);
|
32
32
|
writer.writeLine("(");
|
33
33
|
columns.forEach((col, columnIndex) => {
|
34
|
-
writer.indent().write(escapeColumn(col.column));
|
34
|
+
writer.indent().write(escapeColumn(dialect, col.column));
|
35
35
|
writer.conditionalWrite(columnIndex != columns.length - 1, ',');
|
36
36
|
writer.newLine();
|
37
37
|
});
|
@@ -47,50 +47,53 @@ function generateInsertStatement(tableName, dbSchema) {
|
|
47
47
|
return writer.toString();
|
48
48
|
}
|
49
49
|
exports.generateInsertStatement = generateInsertStatement;
|
50
|
-
function generateUpdateStatement(tableName, dbSchema) {
|
50
|
+
function generateUpdateStatement(dialect, tableName, dbSchema) {
|
51
51
|
const columns = dbSchema.filter(col => !col.autoincrement);
|
52
|
-
const keys = dbSchema.filter(col => col.columnKey
|
52
|
+
const keys = dbSchema.filter(col => col.columnKey == 'PRI');
|
53
53
|
if (keys.length == 0) {
|
54
54
|
keys.push(...dbSchema.filter(col => col.columnKey == 'UNI'));
|
55
55
|
}
|
56
56
|
const writer = new code_block_writer_1.default();
|
57
|
-
writer.writeLine(`UPDATE ${escapeTableName(tableName)}`);
|
57
|
+
writer.writeLine(`UPDATE ${escapeTableName(dialect, tableName)}`);
|
58
58
|
writer.writeLine("SET");
|
59
59
|
columns.forEach((col, columnIndex) => {
|
60
|
-
writer.indent().write(`${escapeColumn(col.column)} =
|
60
|
+
writer.indent().write(`${escapeColumn(dialect, col.column)} = CASE WHEN :${col.column}Set THEN :${col.column} ELSE ${escapeColumn(dialect, col.column)} END`);
|
61
61
|
writer.conditionalWrite(columnIndex != columns.length - 1, ',');
|
62
62
|
writer.newLine();
|
63
63
|
});
|
64
64
|
if (keys.length > 0) {
|
65
65
|
writer.writeLine('WHERE');
|
66
|
-
writer.indent().write(`${escapeColumn(keys[0].column)} = :${keys[0].column}`);
|
66
|
+
writer.indent().write(`${escapeColumn(dialect, keys[0].column)} = :${keys[0].column}`);
|
67
67
|
}
|
68
68
|
return writer.toString();
|
69
69
|
}
|
70
70
|
exports.generateUpdateStatement = generateUpdateStatement;
|
71
|
-
function generateDeleteStatement(tableName, dbSchema) {
|
72
|
-
const keys = dbSchema.filter(col => col.columnKey
|
71
|
+
function generateDeleteStatement(dialect, tableName, dbSchema) {
|
72
|
+
const keys = dbSchema.filter(col => col.columnKey == 'PRI');
|
73
73
|
if (keys.length == 0) {
|
74
74
|
keys.push(...dbSchema.filter(col => col.columnKey == 'UNI'));
|
75
75
|
}
|
76
76
|
const writer = new code_block_writer_1.default();
|
77
|
-
writer.writeLine(`DELETE FROM ${escapeTableName(tableName)}`);
|
77
|
+
writer.writeLine(`DELETE FROM ${escapeTableName(dialect, tableName)}`);
|
78
78
|
if (keys.length > 0) {
|
79
79
|
writer.write('WHERE ');
|
80
|
-
writer.write(`${escapeColumn(keys[0].column)} = :${keys[0].column}`);
|
80
|
+
writer.write(`${escapeColumn(dialect, keys[0].column)} = :${keys[0].column}`);
|
81
81
|
}
|
82
82
|
return writer.toString();
|
83
83
|
}
|
84
84
|
exports.generateDeleteStatement = generateDeleteStatement;
|
85
85
|
//Permitted characters in unquoted identifiers: ASCII: [0-9,a-z,A-Z$_]
|
86
|
-
function escapeTableName(tableName) {
|
86
|
+
function escapeTableName(dialect, tableName) {
|
87
87
|
const validPattern = /^[a-zA-Z0-9_$]+$/g;
|
88
|
-
if (!validPattern.test(tableName)) {
|
88
|
+
if (dialect == 'mysql' && !validPattern.test(tableName)) {
|
89
89
|
return `\`${tableName}\``;
|
90
90
|
}
|
91
91
|
return tableName;
|
92
92
|
}
|
93
|
-
function escapeColumn(column) {
|
94
|
-
|
93
|
+
function escapeColumn(dialect, column) {
|
94
|
+
if (dialect == 'mysql') {
|
95
|
+
return `\`${column}\``;
|
96
|
+
}
|
97
|
+
return `${column}`;
|
95
98
|
}
|
96
99
|
//# sourceMappingURL=sql-generator.js.map
|
package/sql-generator.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sql-generator.js","sourceRoot":"","sources":["../../src/sql-generator.ts"],"names":[],"mappings":";;;;;;AACA,0EAAgD;
|
1
|
+
{"version":3,"file":"sql-generator.js","sourceRoot":"","sources":["../../src/sql-generator.ts"],"names":[],"mappings":"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"}
|
@@ -1,3 +1,5 @@
|
|
1
|
+
import { Either } from "fp-ts/lib/Either";
|
1
2
|
import { ColumnSchema } from "../mysql-query-analyzer/types";
|
2
|
-
|
3
|
+
import { Database } from "better-sqlite3";
|
4
|
+
export declare function generateTsCode(db: Database, sql: string, queryName: string, sqliteDbSchema: ColumnSchema[], isCrud?: boolean): Either<string, string>;
|
3
5
|
//# sourceMappingURL=code-generator.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"code-generator.d.ts","sourceRoot":"","sources":["../../../src/sqlite-query-analyzer/code-generator.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"code-generator.d.ts","sourceRoot":"","sources":["../../../src/sqlite-query-analyzer/code-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAc,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAMzE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,MAAM,UAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQnJ"}
|