@asla/yoursql 0.13.1 → 0.14.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 +14 -140
- package/dist/sql_gen/SqlStatement.d.ts +0 -1
- package/dist/sql_gen/SqlStatement.js +3 -5
- package/dist/sql_gen/_statement.d.ts +0 -1
- package/dist/sql_gen/_statement.js +10 -13
- package/dist/sql_gen/mod.d.ts +0 -1
- package/dist/sql_gen/mod.js +10 -18
- package/dist/sql_gen/sql_value/SqlValuesDataset.d.ts +0 -1
- package/dist/sql_gen/sql_value/SqlValuesDataset.js +1 -3
- package/dist/sql_gen/sql_value/ValueSqlTemplate.d.ts +0 -1
- package/dist/sql_gen/sql_value/ValueSqlTemplate.js +2 -5
- package/dist/sql_gen/sql_value/_to_values.d.ts +0 -1
- package/dist/sql_gen/sql_value/_to_values.js +5 -8
- package/dist/sql_gen/sql_value/db_type.d.ts +0 -1
- package/dist/sql_gen/sql_value/db_type.js +2 -5
- package/dist/sql_gen/sql_value/sql_value.d.ts +0 -1
- package/dist/sql_gen/sql_value/sql_value.js +5 -7
- package/dist/sql_gen/sql_value/type.d.ts +0 -1
- package/dist/sql_gen/sql_value/type.js +1 -0
- package/dist/sql_gen/statement/_modify.d.ts +0 -1
- package/dist/sql_gen/statement/_modify.js +1 -0
- package/dist/sql_gen/statement/cte.d.ts +0 -1
- package/dist/sql_gen/statement/cte.js +7 -10
- package/dist/sql_gen/statement/delete.d.ts +0 -1
- package/dist/sql_gen/statement/delete.js +2 -5
- package/dist/sql_gen/statement/delete_chain.d.ts +0 -1
- package/dist/sql_gen/statement/delete_chain.js +1 -0
- package/dist/sql_gen/statement/delete_impl.d.ts +0 -1
- package/dist/sql_gen/statement/delete_impl.js +3 -6
- package/dist/sql_gen/statement/insert.d.ts +0 -1
- package/dist/sql_gen/statement/insert.js +2 -5
- package/dist/sql_gen/statement/insert_chain.d.ts +0 -1
- package/dist/sql_gen/statement/insert_chain.js +1 -0
- package/dist/sql_gen/statement/insert_impl.d.ts +0 -1
- package/dist/sql_gen/statement/insert_impl.js +4 -7
- package/dist/sql_gen/statement/mod.d.ts +0 -1
- package/dist/sql_gen/statement/mod.js +9 -0
- package/dist/sql_gen/statement/select.d.ts +0 -1
- package/dist/sql_gen/statement/select.js +4 -7
- package/dist/sql_gen/statement/select_chain.d.ts +0 -1
- package/dist/sql_gen/statement/select_chain.js +1 -0
- package/dist/sql_gen/statement/select_impl.d.ts +0 -1
- package/dist/sql_gen/statement/select_impl.js +4 -7
- package/dist/sql_gen/statement/update.d.ts +0 -1
- package/dist/sql_gen/statement/update.js +2 -5
- package/dist/sql_gen/statement/update_chain.d.ts +0 -1
- package/dist/sql_gen/statement/update_chain.js +1 -0
- package/dist/sql_gen/statement/update_impl.d.ts +0 -1
- package/dist/sql_gen/statement/update_impl.js +4 -7
- package/dist/sql_gen/util.d.ts +0 -1
- package/dist/sql_gen/util.js +1 -3
- package/dist/sql_gen/your_table/checker.d.ts +0 -1
- package/dist/sql_gen/your_table/checker.js +2 -5
- package/dist/sql_gen/your_table/infer_db_type.d.ts +0 -1
- package/dist/sql_gen/your_table/infer_db_type.js +3 -5
- package/dist/sql_gen/your_table/mod.d.ts +0 -1
- package/dist/sql_gen/your_table/mod.js +3 -0
- package/dist/sql_gen/your_table/table.d.ts +0 -1
- package/dist/sql_gen/your_table/table.js +2 -5
- package/package.json +31 -34
- package/dist/client/DbCursor.d.ts +0 -14
- package/dist/client/DbCursor.js +0 -21
- package/dist/client/DbPoolConnection.d.ts +0 -5
- package/dist/client/DbPoolConnection.js +0 -74
- package/dist/client/DbPoolTransaction.d.ts +0 -9
- package/dist/client/DbPoolTransaction.js +0 -146
- package/dist/client/DbQuery.d.ts +0 -50
- package/dist/client/DbQuery.js +0 -42
- package/dist/client/DbQueryBase.d.ts +0 -38
- package/dist/client/DbQueryBase.js +0 -32
- package/dist/client/DbQueryPool.d.ts +0 -39
- package/dist/client/DbQueryPool.js +0 -56
- package/dist/client/_type.d.ts +0 -2
- package/dist/client/errors.d.ts +0 -9
- package/dist/client/errors.js +0 -14
- package/dist/client/interfaces.d.ts +0 -87
- package/dist/client/mod.d.ts +0 -9
- package/dist/client/mod.js +0 -7
package/README.md
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
[![ESM package][package]][package-url]
|
|
2
|
-
[![
|
|
3
|
-
[![JSR version][jsr]][jsr-url]
|
|
4
|
-
[![Install size][size]][size-url]
|
|
1
|
+
[![ESM package][package]][package-url] [![NPM version][npm]][npm-url]
|
|
2
|
+
[![JSR version][jsr]][jsr-url] [![Install size][size]][size-url]
|
|
5
3
|
|
|
6
4
|
[package]: https://img.shields.io/badge/package-ESM-ffe536.svg
|
|
7
5
|
[package-url]: https://nodejs.org/api/esm.html
|
|
@@ -23,7 +21,8 @@ SQL 生成器
|
|
|
23
21
|
安全转将 JS 值转换为 SQL 值,避免 SQL 注入
|
|
24
22
|
|
|
25
23
|
`v` 函数能够将 JS 值转换为 SQL 的文本形式。\
|
|
26
|
-
默认情况下,支持 PostgresSQL,
|
|
24
|
+
默认情况下,支持 PostgresSQL,
|
|
25
|
+
因为不同数据库的值转换有些差异,如果使用其他数据库,可能需要配置对象到字符串的自定义转换器
|
|
27
26
|
|
|
28
27
|
```ts
|
|
29
28
|
import { v } from "@asla/yoursql";
|
|
@@ -41,7 +40,8 @@ const params = { id: 3 };
|
|
|
41
40
|
const sql = `SELECT * FROM user WHERE user_id=${v(params.id)}`;
|
|
42
41
|
```
|
|
43
42
|
|
|
44
|
-
如果传入 String 对象,将保留其字符串值,不会进行任何转换,
|
|
43
|
+
如果传入 String 对象,将保留其字符串值,不会进行任何转换,
|
|
44
|
+
这在有些需要原生SQL操作的场景下非常有用
|
|
45
45
|
|
|
46
46
|
```ts
|
|
47
47
|
import { v } from "@asla/yoursql";
|
|
@@ -49,7 +49,8 @@ import { v } from "@asla/yoursql";
|
|
|
49
49
|
v(new String("1+1")); // "1+1"
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
你可以自定义对象到字符串的转换, 例如,你想将 Set 转换为 PostgresSql 的 ARRAY[]
|
|
52
|
+
你可以自定义对象到字符串的转换, 例如,你想将 Set 转换为 PostgresSql 的 ARRAY[]
|
|
53
|
+
输入格式
|
|
53
54
|
|
|
54
55
|
```ts
|
|
55
56
|
import { v } from "@asla/yoursql";
|
|
@@ -92,7 +93,10 @@ const sql = `INSERT INTO user(name, role) VALUES ${valueStr}`;
|
|
|
92
93
|
可以指定 SQL类型和 JS 类型断言
|
|
93
94
|
|
|
94
95
|
```ts
|
|
95
|
-
const objectList = [{ age: 1, name: "hhh" }, { age: 2, name: "row2" }, {
|
|
96
|
+
const objectList = [{ age: 1, name: "hhh" }, { age: 2, name: "row2" }, {
|
|
97
|
+
age: 3,
|
|
98
|
+
name: "row3",
|
|
99
|
+
}, {}];
|
|
96
100
|
|
|
97
101
|
v.createExplicitValues("customName", objectList, {
|
|
98
102
|
age: { sqlType: "INT", sqlDefault: "MAXIMUM(1,2)" },
|
|
@@ -120,8 +124,8 @@ const s = select({ uid: "u.id", rid: "r.id", example: "u.id||r.id" })
|
|
|
120
124
|
.toString();
|
|
121
125
|
```
|
|
122
126
|
|
|
123
|
-
查看 [select](./docs/select.md) 用法
|
|
124
|
-
|
|
127
|
+
查看 [select](./docs/select.md) 用法 查看
|
|
128
|
+
[insert/update/delete](./docs/table.md) 用法
|
|
125
129
|
|
|
126
130
|
#### Constructable
|
|
127
131
|
|
|
@@ -130,133 +134,3 @@ toto
|
|
|
130
134
|
#### ConditionParam
|
|
131
135
|
|
|
132
136
|
toto
|
|
133
|
-
|
|
134
|
-
### client 抽象类
|
|
135
|
-
|
|
136
|
-
yoursql 还导出了一些抽象类,实现抽象类后可以方便的进行数据查询
|
|
137
|
-
|
|
138
|
-
```ts
|
|
139
|
-
import {
|
|
140
|
-
type DbQueryPool,
|
|
141
|
-
type DbTransaction,
|
|
142
|
-
type DbConnection,
|
|
143
|
-
DbQuery,
|
|
144
|
-
DbCursor,
|
|
145
|
-
DbPoolConnection,
|
|
146
|
-
DbPoolTransaction,
|
|
147
|
-
} from "@asla/yoursql/client";
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
#### DbQuery 抽象类
|
|
151
|
-
|
|
152
|
-
```ts
|
|
153
|
-
class YourQuery extends DbQuery {
|
|
154
|
-
execute(sql: QueryInput | MultipleQueryInput): Promise<void> {
|
|
155
|
-
// implement
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
query<T extends MultipleQueryResult = MultipleQueryResult>(sql: MultipleQueryInput): Promise<T>;
|
|
159
|
-
query<T = any>(sql: QueryDataInput<T>): Promise<QueryRowsResult<T>>;
|
|
160
|
-
query<T = any>(sql: QueryInput): Promise<QueryRowsResult<T>>;
|
|
161
|
-
query<T = any>(sql: QueryInput | MultipleQueryInput): Promise<QueryRowsResult<T>> {
|
|
162
|
-
// implement
|
|
163
|
-
}
|
|
164
|
-
multipleQuery<T extends MultipleQueryResult = MultipleQueryResult>(sql: StringLike): Promise<T> {
|
|
165
|
-
// implement
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* 执行多语句的方法
|
|
169
|
-
* @deprecated 不建议使用。改用 query()
|
|
170
|
-
*/
|
|
171
|
-
abstract multipleQuery<T extends MultipleQueryResult = MultipleQueryResult>(sql: SqlLike | SqlLike[]): Promise<T>;
|
|
172
|
-
}
|
|
173
|
-
const db: DbQuery = new YourQuery();
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
```ts
|
|
177
|
-
declare const db: DbQuery;
|
|
178
|
-
|
|
179
|
-
type Row = { name: string; age: number };
|
|
180
|
-
const sqlText = "SELECT * FROM user";
|
|
181
|
-
|
|
182
|
-
const rows: Row[] = await db.queryRows<Row>(sqlText);
|
|
183
|
-
const count: number = await db.queryCount(sqlText);
|
|
184
|
-
const rows: Map<string, Row> = await db.queryMap<Row>(sqlText, "name");
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
#### DbQueryPool 抽象类
|
|
188
|
-
|
|
189
|
-
```ts
|
|
190
|
-
class YourPool extends DbQueryPool {
|
|
191
|
-
// implement
|
|
192
|
-
}
|
|
193
|
-
const pool: DbQueryPool = new YourPool();
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
##### 普通查询
|
|
197
|
-
|
|
198
|
-
```ts
|
|
199
|
-
const conn = await pool.connect();
|
|
200
|
-
try {
|
|
201
|
-
await conn.queryRows(sqlText);
|
|
202
|
-
} finally {
|
|
203
|
-
conn.release();
|
|
204
|
-
}
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
或者,使用 `using` 语法更优雅 (推荐)
|
|
208
|
-
|
|
209
|
-
```ts
|
|
210
|
-
using conn = await pool.connect();
|
|
211
|
-
await conn.queryRows(sqlText);
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
##### 事务查询
|
|
215
|
-
|
|
216
|
-
```ts
|
|
217
|
-
const conn = pool.begin();
|
|
218
|
-
try {
|
|
219
|
-
await conn.queryRows(sqlText);
|
|
220
|
-
await conn.queryRows(sqlText);
|
|
221
|
-
await conn.commit();
|
|
222
|
-
} catch (e) {
|
|
223
|
-
await conn.rollback();
|
|
224
|
-
throw e;
|
|
225
|
-
}
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
或者,使用 `using` 语法更优雅 (推荐)
|
|
229
|
-
|
|
230
|
-
```ts
|
|
231
|
-
await using conn = pool.begin();
|
|
232
|
-
|
|
233
|
-
await conn.queryRows(sqlText);
|
|
234
|
-
await conn.queryRows(sqlText);
|
|
235
|
-
await conn.commit();
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
##### 游标查询
|
|
239
|
-
|
|
240
|
-
```ts
|
|
241
|
-
const cursor = await pool.cursor(sqlText);
|
|
242
|
-
|
|
243
|
-
let rows = await cursor.read(20);
|
|
244
|
-
while (rows.length) {
|
|
245
|
-
console.log(rows);
|
|
246
|
-
rows = await cursor.read(20);
|
|
247
|
-
if (conditions) {
|
|
248
|
-
await cursor.close(); // 提前关闭游标
|
|
249
|
-
break;
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
或者使用 `for await of` 更优雅 (推荐)
|
|
255
|
-
|
|
256
|
-
```ts
|
|
257
|
-
const cursor = await pool.cursor(sqlText);
|
|
258
|
-
for await (const element of cursor) {
|
|
259
|
-
console.log(element);
|
|
260
|
-
if (conditions) break; //提前关闭游标
|
|
261
|
-
}
|
|
262
|
-
```
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/** @public */
|
|
2
|
-
class SqlStatement {
|
|
2
|
+
export class SqlStatement {
|
|
3
3
|
/** 获取 SQL 语句 */
|
|
4
4
|
toString() {
|
|
5
5
|
return this.genSql();
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
/** @public */
|
|
9
|
-
class SqlStatementDataset extends SqlStatement {
|
|
9
|
+
export class SqlStatementDataset extends SqlStatement {
|
|
10
10
|
/**
|
|
11
11
|
* 转成子选择语句, 你可以使用 select form xxx 选择
|
|
12
12
|
* 如果是 table 则是 table name
|
|
@@ -26,7 +26,7 @@ class SqlStatementDataset extends SqlStatement {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
/** @public */
|
|
29
|
-
class SqlTextStatementDataset extends SqlStatementDataset {
|
|
29
|
+
export class SqlTextStatementDataset extends SqlStatementDataset {
|
|
30
30
|
sql;
|
|
31
31
|
constructor(sql) {
|
|
32
32
|
super();
|
|
@@ -36,5 +36,3 @@ class SqlTextStatementDataset extends SqlStatementDataset {
|
|
|
36
36
|
return this.sql;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
|
|
40
|
-
export { SqlStatement, SqlStatementDataset, SqlTextStatementDataset };
|
|
@@ -26,4 +26,3 @@ export declare function whereToString(conditions?: Constructable<ConditionParam
|
|
|
26
26
|
export declare function createUpdateSetFromObject(set: Record<string, string | undefined>, prefix?: string): string;
|
|
27
27
|
export declare function selectableToString(selectable: Constructable<SqlSelectable | string>, as?: string): string;
|
|
28
28
|
export declare function returningToString(returns: Constructable<SelectParam | "*">): string;
|
|
29
|
-
//# sourceMappingURL=_statement.d.ts.map
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { selectColumns } from
|
|
2
|
-
|
|
1
|
+
import { selectColumns } from "./util.js";
|
|
3
2
|
/**
|
|
4
3
|
* 获取对象数组中的 key 的集合
|
|
5
4
|
* @param keepUndefinedKey - 是否保留值为 undefined 的 key
|
|
6
5
|
*/
|
|
7
|
-
function getObjectListKeys(objectList, keepUndefinedKey) {
|
|
6
|
+
export function getObjectListKeys(objectList, keepUndefinedKey) {
|
|
8
7
|
let keys = new Set();
|
|
9
8
|
for (let i = 0; i < objectList.length; i++) {
|
|
10
9
|
let obj = objectList[i];
|
|
@@ -14,14 +13,14 @@ function getObjectListKeys(objectList, keepUndefinedKey) {
|
|
|
14
13
|
k = hasKeys[j];
|
|
15
14
|
if (typeof k !== "string")
|
|
16
15
|
continue;
|
|
17
|
-
if (obj[k] === undefined)
|
|
16
|
+
if (!keepUndefinedKey && obj[k] === undefined)
|
|
18
17
|
continue;
|
|
19
18
|
keys.add(k);
|
|
20
19
|
}
|
|
21
20
|
}
|
|
22
21
|
return keys;
|
|
23
22
|
}
|
|
24
|
-
function condition(conditions, type = "AND") {
|
|
23
|
+
export function condition(conditions, type = "AND") {
|
|
25
24
|
if (typeof conditions === "function")
|
|
26
25
|
conditions = conditions();
|
|
27
26
|
if (!conditions)
|
|
@@ -53,13 +52,13 @@ function condition(conditions, type = "AND") {
|
|
|
53
52
|
* where(undefined) // ""
|
|
54
53
|
* ```
|
|
55
54
|
*/
|
|
56
|
-
function whereToString(conditions, type) {
|
|
55
|
+
export function whereToString(conditions, type) {
|
|
57
56
|
const sql = condition(conditions, type);
|
|
58
57
|
if (sql)
|
|
59
58
|
return "\nWHERE " + sql;
|
|
60
59
|
return "";
|
|
61
60
|
}
|
|
62
|
-
function createUpdateSetFromObject(set, prefix) {
|
|
61
|
+
export function createUpdateSetFromObject(set, prefix) {
|
|
63
62
|
const updateKey = Object.keys(set);
|
|
64
63
|
let i = 0;
|
|
65
64
|
let key;
|
|
@@ -68,7 +67,7 @@ function createUpdateSetFromObject(set, prefix) {
|
|
|
68
67
|
let sql;
|
|
69
68
|
for (; i < updateKey.length; i++) {
|
|
70
69
|
key = updateKey[i];
|
|
71
|
-
sqlKey = key;
|
|
70
|
+
sqlKey = prefix ? `${prefix}.${key}` : key;
|
|
72
71
|
value = set[key];
|
|
73
72
|
if (value === undefined)
|
|
74
73
|
continue;
|
|
@@ -85,7 +84,7 @@ function createUpdateSetFromObject(set, prefix) {
|
|
|
85
84
|
i++;
|
|
86
85
|
for (; i < updateKey.length; i++) {
|
|
87
86
|
key = updateKey[i];
|
|
88
|
-
sqlKey = key;
|
|
87
|
+
sqlKey = prefix ? `${prefix}.${key}` : key;
|
|
89
88
|
value = set[key];
|
|
90
89
|
if (value === undefined)
|
|
91
90
|
continue;
|
|
@@ -101,7 +100,7 @@ function createUpdateSetFromObject(set, prefix) {
|
|
|
101
100
|
else
|
|
102
101
|
throw new Error("值不能为空");
|
|
103
102
|
}
|
|
104
|
-
function selectableToString(selectable, as) {
|
|
103
|
+
export function selectableToString(selectable, as) {
|
|
105
104
|
if (typeof selectable === "function")
|
|
106
105
|
selectable = selectable();
|
|
107
106
|
let sql = typeof selectable === "string" ? selectable : selectable.toSelect();
|
|
@@ -111,7 +110,7 @@ function selectableToString(selectable, as) {
|
|
|
111
110
|
sql += " AS " + as;
|
|
112
111
|
return sql;
|
|
113
112
|
}
|
|
114
|
-
function returningToString(returns) {
|
|
113
|
+
export function returningToString(returns) {
|
|
115
114
|
if (typeof returns === "function")
|
|
116
115
|
returns = returns();
|
|
117
116
|
let columnsStr;
|
|
@@ -123,5 +122,3 @@ function returningToString(returns) {
|
|
|
123
122
|
}
|
|
124
123
|
return "\nRETURNING " + columnsStr;
|
|
125
124
|
}
|
|
126
|
-
|
|
127
|
-
export { condition, createUpdateSetFromObject, getObjectListKeys, returningToString, selectableToString, whereToString };
|
package/dist/sql_gen/mod.d.ts
CHANGED
package/dist/sql_gen/mod.js
CHANGED
|
@@ -1,22 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export { TypeChecker } from './your_table/checker.js';
|
|
11
|
-
export { ColumnMeta, CustomDbType, YourTypeMap } from './your_table/infer_db_type.js';
|
|
12
|
-
export { YourTable } from './your_table/table.js';
|
|
13
|
-
export { TemplateSqlStatement } from './sql_value/ValueSqlTemplate.js';
|
|
14
|
-
export { orderBy } from './statement/select_impl.js';
|
|
15
|
-
|
|
1
|
+
export * from "./sql_value/db_type.js";
|
|
2
|
+
export * from "./sql_value/sql_value.js";
|
|
3
|
+
export * from "./sql_value/type.js";
|
|
4
|
+
export * from "./SqlStatement.js";
|
|
5
|
+
export * from "./statement/mod.js";
|
|
6
|
+
export * from "./util.js";
|
|
7
|
+
export * from "./your_table/mod.js";
|
|
8
|
+
import { SqlValuesCreator } from "./sql_value/sql_value.js";
|
|
9
|
+
import { pgSqlTransformer } from "./sql_value/db_type.js";
|
|
16
10
|
/**
|
|
17
11
|
* 默认的 SqlValuesCreator 实列
|
|
18
12
|
* @public
|
|
19
13
|
*/
|
|
20
|
-
const v = SqlValuesCreator.create(pgSqlTransformer);
|
|
21
|
-
|
|
22
|
-
export { SqlValuesCreator, pgSqlTransformer, v };
|
|
14
|
+
export const v = SqlValuesCreator.create(pgSqlTransformer);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class ExplicitSqlValues {
|
|
1
|
+
export class ExplicitSqlValues {
|
|
2
2
|
columns;
|
|
3
3
|
columnsSqlType;
|
|
4
4
|
constructor(columns, columnsSqlType, firstValues, nextRows) {
|
|
@@ -49,5 +49,3 @@ class ExplicitSqlValues {
|
|
|
49
49
|
return `(VALUES\n${this.text})\nAS ${name}(${this.columns.join(",")})`;
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
|
|
53
|
-
export { ExplicitSqlValues };
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { SqlStatement } from
|
|
2
|
-
|
|
1
|
+
import { SqlStatement } from "../SqlStatement.js";
|
|
3
2
|
/** @alpha */
|
|
4
|
-
class TemplateSqlStatement extends SqlStatement {
|
|
3
|
+
export class TemplateSqlStatement extends SqlStatement {
|
|
5
4
|
v;
|
|
6
5
|
templates;
|
|
7
6
|
args;
|
|
@@ -45,5 +44,3 @@ class TemplateSqlStatement extends SqlStatement {
|
|
|
45
44
|
return sql;
|
|
46
45
|
}
|
|
47
46
|
}
|
|
48
|
-
|
|
49
|
-
export { TemplateSqlStatement };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { getObjectListKeys } from
|
|
2
|
-
|
|
3
|
-
function internalObjectToValues(object, keys, type, undefinedDefault, v) {
|
|
1
|
+
import { getObjectListKeys } from "../_statement.js";
|
|
2
|
+
export function internalObjectToValues(object, keys, type, undefinedDefault, v) {
|
|
4
3
|
const values = new Array(keys.length);
|
|
5
4
|
const types = new Array(keys.length);
|
|
6
5
|
let i = 0;
|
|
@@ -32,7 +31,7 @@ function internalObjectToValues(object, keys, type, undefinedDefault, v) {
|
|
|
32
31
|
throw new Error("object 不能为空");
|
|
33
32
|
return { values, types };
|
|
34
33
|
}
|
|
35
|
-
class AssertError extends TypeError {
|
|
34
|
+
export class AssertError extends TypeError {
|
|
36
35
|
constructor(assertType, actual) {
|
|
37
36
|
super(`Assert ${assertType} type, Actual ${actual} type`);
|
|
38
37
|
}
|
|
@@ -53,7 +52,7 @@ function initColumnAssert(keys, keys_types) {
|
|
|
53
52
|
}
|
|
54
53
|
return type;
|
|
55
54
|
}
|
|
56
|
-
function getObjectValueInfo(object, keys_types) {
|
|
55
|
+
export function getObjectValueInfo(object, keys_types) {
|
|
57
56
|
let type;
|
|
58
57
|
let keys;
|
|
59
58
|
if (keys_types instanceof Array) {
|
|
@@ -70,7 +69,7 @@ function getObjectValueInfo(object, keys_types) {
|
|
|
70
69
|
}
|
|
71
70
|
return { keys, type };
|
|
72
71
|
}
|
|
73
|
-
function getColumnInfo(objectList, columns) {
|
|
72
|
+
export function getColumnInfo(objectList, columns) {
|
|
74
73
|
let keys;
|
|
75
74
|
let asserts;
|
|
76
75
|
if (!columns) {
|
|
@@ -87,5 +86,3 @@ function getColumnInfo(objectList, columns) {
|
|
|
87
86
|
}
|
|
88
87
|
return { keys, asserts };
|
|
89
88
|
}
|
|
90
|
-
|
|
91
|
-
export { AssertError, getColumnInfo, getObjectValueInfo, internalObjectToValues };
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { SqlValuesCreator } from
|
|
2
|
-
|
|
1
|
+
import { SqlValuesCreator } from "./sql_value.js";
|
|
3
2
|
/** @public PgSql 转换器 */
|
|
4
|
-
const pgSqlTransformer = new Map([
|
|
3
|
+
export const pgSqlTransformer = new Map([
|
|
5
4
|
[
|
|
6
5
|
Array,
|
|
7
6
|
function encodePgArray(value) {
|
|
@@ -36,5 +35,3 @@ const pgSqlTransformer = new Map([
|
|
|
36
35
|
},
|
|
37
36
|
],
|
|
38
37
|
]);
|
|
39
|
-
|
|
40
|
-
export { pgSqlTransformer };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { ExplicitSqlValues } from
|
|
2
|
-
import { TemplateSqlStatement } from
|
|
3
|
-
import { AssertError, getColumnInfo, internalObjectToValues,
|
|
4
|
-
|
|
1
|
+
import { ExplicitSqlValues } from "./SqlValuesDataset.js";
|
|
2
|
+
import { TemplateSqlStatement } from "./ValueSqlTemplate.js";
|
|
3
|
+
import { AssertError, getColumnInfo, getObjectValueInfo, internalObjectToValues, } from "./_to_values.js";
|
|
4
|
+
export { TemplateSqlStatement } from "./ValueSqlTemplate.js";
|
|
5
5
|
/**
|
|
6
6
|
* SQL value 生成器
|
|
7
7
|
* @public
|
|
8
8
|
*/
|
|
9
|
-
class SqlValuesCreator {
|
|
9
|
+
export class SqlValuesCreator {
|
|
10
10
|
static create(map) {
|
|
11
11
|
const obj = new this(map);
|
|
12
12
|
const fn = obj.toSqlStr.bind(obj);
|
|
@@ -183,5 +183,3 @@ class SqlValuesCreator {
|
|
|
183
183
|
return values.map((v) => this.toSqlStr(v)).join(",");
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
|
-
|
|
187
|
-
export { SqlValuesCreator, TemplateSqlStatement };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -49,4 +49,3 @@ export declare function withAs(name: string, statement: Constructable<string>):
|
|
|
49
49
|
export declare function withRecursiveAs(statement: Constructable<string>): ChainCTE;
|
|
50
50
|
/** @public */
|
|
51
51
|
export declare function withRecursiveAs(name: string, statement: Constructable<string>): ChainCTE;
|
|
52
|
-
//# sourceMappingURL=cte.d.ts.map
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { selectColumns } from
|
|
2
|
-
import { SelectChainAfterSelect } from
|
|
3
|
-
import { DeleteChain } from
|
|
4
|
-
import { UpdateChain } from
|
|
5
|
-
import { InsertChain } from
|
|
6
|
-
|
|
7
|
-
function withAs(nameOrStatement, statement) {
|
|
1
|
+
import { selectColumns } from "../util.js";
|
|
2
|
+
import { SelectChainAfterSelect } from "./select_impl.js";
|
|
3
|
+
import { DeleteChain } from "./delete_impl.js";
|
|
4
|
+
import { UpdateChain } from "./update_impl.js";
|
|
5
|
+
import { InsertChain } from "./insert_impl.js";
|
|
6
|
+
export function withAs(nameOrStatement, statement) {
|
|
8
7
|
return new ChainCETImpl(`WITH \n${concat(nameOrStatement, statement)}`);
|
|
9
8
|
}
|
|
10
|
-
function withRecursiveAs(nameOrStatement, statement) {
|
|
9
|
+
export function withRecursiveAs(nameOrStatement, statement) {
|
|
11
10
|
return new ChainCETImpl(`WITH RECURSIVE \n${concat(nameOrStatement, statement)}`);
|
|
12
11
|
}
|
|
13
12
|
class ChainCETImpl {
|
|
@@ -64,5 +63,3 @@ function concat(nameOrStatement, statement) {
|
|
|
64
63
|
return statement;
|
|
65
64
|
}
|
|
66
65
|
}
|
|
67
|
-
|
|
68
|
-
export { withAs, withRecursiveAs };
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { DeleteChain } from
|
|
2
|
-
|
|
1
|
+
import { DeleteChain } from "./delete_impl.js";
|
|
3
2
|
/** @public */
|
|
4
|
-
const deleteFrom = function deleteFrom(table, option) {
|
|
3
|
+
export const deleteFrom = function deleteFrom(table, option) {
|
|
5
4
|
let sql = `DELETE FROM ${table}`;
|
|
6
5
|
if (option?.as) {
|
|
7
6
|
sql += ` AS ${option.as}`;
|
|
8
7
|
}
|
|
9
8
|
return new DeleteChain(sql);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
export { deleteFrom };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { SqlStatement, SqlTextStatementDataset } from
|
|
2
|
-
import { returningToString, whereToString } from
|
|
3
|
-
|
|
4
|
-
class DeleteChain extends SqlStatement {
|
|
1
|
+
import { SqlStatement, SqlTextStatementDataset } from "../SqlStatement.js";
|
|
2
|
+
import { returningToString, whereToString } from "../_statement.js";
|
|
3
|
+
export class DeleteChain extends SqlStatement {
|
|
5
4
|
sql;
|
|
6
5
|
constructor(sql) {
|
|
7
6
|
super();
|
|
@@ -27,5 +26,3 @@ class DeleteChain extends SqlStatement {
|
|
|
27
26
|
return this.sql;
|
|
28
27
|
}
|
|
29
28
|
}
|
|
30
|
-
|
|
31
|
-
export { DeleteChain };
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { InsertChain } from
|
|
2
|
-
|
|
1
|
+
import { InsertChain } from "./insert_impl.js";
|
|
3
2
|
/** @public */
|
|
4
|
-
const insertInto = function insertInto(table, columns) {
|
|
3
|
+
export const insertInto = function insertInto(table, columns) {
|
|
5
4
|
if (columns) {
|
|
6
5
|
return new InsertChain(`INSERT INTO ${table}(${columns.join(",")})`);
|
|
7
6
|
}
|
|
@@ -9,5 +8,3 @@ const insertInto = function insertInto(table, columns) {
|
|
|
9
8
|
return new InsertChain(`INSERT INTO ${table}`);
|
|
10
9
|
}
|
|
11
10
|
};
|
|
12
|
-
|
|
13
|
-
export { insertInto };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|