@asla/yoursql 0.8.9 → 0.9.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/dist/client/DbPoolConnection.d.ts +3 -3
- package/dist/client/DbPoolTransaction.d.ts +3 -3
- package/dist/client/DbPoolTransaction.js +16 -10
- package/dist/client/DbQuery.d.ts +8 -8
- package/dist/client/DbQueryBase.d.ts +5 -3
- package/dist/client/DbQueryBase.js +11 -0
- package/dist/client/interfaces.d.ts +3 -3
- package/dist/client/mod.js +1 -0
- package/dist/sql_gen/select/chain_base.d.ts +4 -2
- package/dist/sql_gen/select/chain_base.js +5 -1
- package/dist/sql_gen/select/query_chain_insert.d.ts +1 -1
- package/dist/sql_gen/select/query_chain_insert.js +1 -1
- package/dist/sql_gen/select/type.d.ts +14 -0
- package/dist/sql_gen/sql_value/sql_value.js +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { SqlStatementDataset } from "../sql_gen/mod.ts";
|
|
2
2
|
import { DbQuery } from "./DbQuery.ts";
|
|
3
3
|
import type { MultipleQueryResult, QueryRowsResult, DbQueryBase } from "./DbQueryBase.ts";
|
|
4
|
-
import type {
|
|
4
|
+
import type { SqlLike, TransactionMode } from "./interfaces.ts";
|
|
5
5
|
/**
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -13,8 +13,8 @@ export declare class DbPoolConnection extends DbQuery {
|
|
|
13
13
|
constructor(conn: DbQueryBase, onRelease: (conn: DbQueryBase) => void);
|
|
14
14
|
begin(mode?: TransactionMode): Promise<void>;
|
|
15
15
|
query<T = any>(sql: SqlStatementDataset<T>): Promise<QueryRowsResult<T>>;
|
|
16
|
-
query<T = any>(sql:
|
|
17
|
-
multipleQuery<T extends MultipleQueryResult = MultipleQueryResult>(sql:
|
|
16
|
+
query<T = any>(sql: SqlLike): Promise<QueryRowsResult<T>>;
|
|
17
|
+
multipleQuery<T extends MultipleQueryResult = MultipleQueryResult>(sql: SqlLike | SqlLike[]): Promise<T>;
|
|
18
18
|
rollback(): Promise<void>;
|
|
19
19
|
commit(): Promise<void>;
|
|
20
20
|
get released(): boolean;
|
|
@@ -2,7 +2,7 @@ import type { SqlStatementDataset } from "../sql_gen/mod.ts";
|
|
|
2
2
|
import { DbQuery } from "./DbQuery.ts";
|
|
3
3
|
import type { MultipleQueryResult, QueryRowsResult } from "./DbQueryBase.ts";
|
|
4
4
|
import type { DbPoolConnection } from "./DbPoolConnection.ts";
|
|
5
|
-
import type { DbTransaction,
|
|
5
|
+
import type { DbTransaction, SqlLike, TransactionMode } from "./interfaces.ts";
|
|
6
6
|
/** @public */
|
|
7
7
|
export type DbPoolTransactionOption = {
|
|
8
8
|
errorRollback?: boolean;
|
|
@@ -21,9 +21,9 @@ export declare class DbPoolTransaction extends DbQuery implements DbTransaction
|
|
|
21
21
|
savePoint(savePoint: string): Promise<void>;
|
|
22
22
|
rollbackTo(savePoint: string): Promise<void>;
|
|
23
23
|
query<T extends object = any>(sql: SqlStatementDataset<T>): Promise<QueryRowsResult<T>>;
|
|
24
|
-
query<T extends object = any>(sql:
|
|
24
|
+
query<T extends object = any>(sql: SqlLike): Promise<QueryRowsResult<T>>;
|
|
25
25
|
multipleQuery<T extends MultipleQueryResult = MultipleQueryResult>(sql: SqlStatementDataset<T>): Promise<T>;
|
|
26
|
-
multipleQuery<T extends MultipleQueryResult = MultipleQueryResult>(sql:
|
|
26
|
+
multipleQuery<T extends MultipleQueryResult = MultipleQueryResult>(sql: SqlLike | SqlLike[]): Promise<T>;
|
|
27
27
|
get released(): boolean;
|
|
28
28
|
[Symbol.asyncDispose](): Promise<void>;
|
|
29
29
|
}
|
|
@@ -18,19 +18,20 @@ class DbPoolTransaction extends DbQuery {
|
|
|
18
18
|
this.#errorRollback = option.errorRollback;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
this.#query = (sql) => {
|
|
21
|
+
this.#query = ((sql, multiple) => {
|
|
22
22
|
return new Promise((resolve, reject) => {
|
|
23
23
|
this.#pending = connect()
|
|
24
24
|
.then((conn) => {
|
|
25
25
|
this.#conn = conn;
|
|
26
|
-
const
|
|
26
|
+
const begin = "BEGIN" + (this.mode ? " TRANSACTION ISOLATION LEVEL " + this.mode : "");
|
|
27
|
+
const promise = conn.multipleQuery([begin, sql]);
|
|
27
28
|
this.#pending = promise;
|
|
28
29
|
this.#query = this.#queryAfter;
|
|
29
30
|
return promise;
|
|
30
31
|
})
|
|
31
32
|
.then((res) => {
|
|
32
33
|
this.#pending = undefined;
|
|
33
|
-
resolve(res[1]);
|
|
34
|
+
resolve(multiple ? res.slice(1) : res[1]);
|
|
34
35
|
}, (e) => {
|
|
35
36
|
// 语法错误、查询错误、网络错误
|
|
36
37
|
this.#pending = undefined;
|
|
@@ -50,7 +51,7 @@ class DbPoolTransaction extends DbQuery {
|
|
|
50
51
|
onFinally();
|
|
51
52
|
});
|
|
52
53
|
});
|
|
53
|
-
};
|
|
54
|
+
});
|
|
54
55
|
}
|
|
55
56
|
#pending;
|
|
56
57
|
#conn;
|
|
@@ -78,13 +79,14 @@ class DbPoolTransaction extends DbQuery {
|
|
|
78
79
|
rollbackTo(savePoint) {
|
|
79
80
|
return this.query("ROLLBACK TO " + savePoint).then(() => { });
|
|
80
81
|
}
|
|
81
|
-
|
|
82
|
-
#queryAfter(sql) {
|
|
82
|
+
#queryAfter(sql, multiple) {
|
|
83
83
|
const conn = this.#conn;
|
|
84
|
-
|
|
84
|
+
const onFinish = (res) => {
|
|
85
|
+
this.#query = this.#queryAfter;
|
|
85
86
|
this.#pending = undefined;
|
|
86
87
|
return res;
|
|
87
|
-
}
|
|
88
|
+
};
|
|
89
|
+
const onError = (e) => {
|
|
88
90
|
this.#pending = undefined;
|
|
89
91
|
if (this.#errorRollback) {
|
|
90
92
|
const onOk = () => {
|
|
@@ -97,7 +99,11 @@ class DbPoolTransaction extends DbQuery {
|
|
|
97
99
|
this.#release(conn, e);
|
|
98
100
|
throw e;
|
|
99
101
|
}
|
|
100
|
-
}
|
|
102
|
+
};
|
|
103
|
+
if (multiple)
|
|
104
|
+
return conn.multipleQuery(sql).then(onFinish, onError);
|
|
105
|
+
else
|
|
106
|
+
return conn.query(sql).then(onFinish, onError);
|
|
101
107
|
}
|
|
102
108
|
#query;
|
|
103
109
|
query(sql) {
|
|
@@ -108,7 +114,7 @@ class DbPoolTransaction extends DbQuery {
|
|
|
108
114
|
multipleQuery(sql) {
|
|
109
115
|
if (this.#pending)
|
|
110
116
|
return Promise.reject(new ParallelQueryError());
|
|
111
|
-
return this.#query(sql);
|
|
117
|
+
return this.#query(sql, true);
|
|
112
118
|
}
|
|
113
119
|
#error;
|
|
114
120
|
#release(conn, error = new ConnectionNotAvailableError("Connection already release")) {
|
package/dist/client/DbQuery.d.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import type { SqlStatementDataset } from "../sql_gen/mod.ts";
|
|
2
|
-
import {
|
|
2
|
+
import { SqlLike } from "./interfaces.ts";
|
|
3
3
|
import { MultipleQueryResult, DbQueryBase, QueryRowsResult } from "./DbQueryBase.ts";
|
|
4
4
|
/**
|
|
5
5
|
* SQL 查询相关操作
|
|
6
6
|
* @public
|
|
7
7
|
*/
|
|
8
8
|
export declare abstract class DbQuery implements DbQueryBase {
|
|
9
|
-
abstract query<T = any>(sql:
|
|
10
|
-
abstract multipleQuery<T extends MultipleQueryResult = MultipleQueryResult>(sql:
|
|
9
|
+
abstract query<T = any>(sql: SqlLike): Promise<QueryRowsResult<T>>;
|
|
10
|
+
abstract multipleQuery<T extends MultipleQueryResult = MultipleQueryResult>(sql: SqlLike | SqlLike[]): Promise<T>;
|
|
11
11
|
/** 单语句查询受影响的行 */
|
|
12
|
-
queryCount(sql:
|
|
12
|
+
queryCount(sql: SqlLike): Promise<number>;
|
|
13
13
|
/** 单语句查询,不应查询多语句,否则返回错误值 */
|
|
14
14
|
queryRows<T = any>(sql: SqlStatementDataset<T>): Promise<T[]>;
|
|
15
15
|
/** 单语句查询,不应查询多语句,否则返回错误值 */
|
|
16
|
-
queryRows<T = any>(sql:
|
|
16
|
+
queryRows<T = any>(sql: SqlLike): Promise<T[]>;
|
|
17
17
|
/** 单语句查询,只返回第一行。如果查询没有返回行,则抛出异常。 */
|
|
18
18
|
queryFirstRow<T = any>(sql: SqlStatementDataset<T>): Promise<T>;
|
|
19
|
-
queryFirstRow<T = any>(sql:
|
|
19
|
+
queryFirstRow<T = any>(sql: SqlLike): Promise<T>;
|
|
20
20
|
/**
|
|
21
21
|
* 查询行
|
|
22
22
|
* 不应查询单条语句,否则返回错误值
|
|
@@ -26,7 +26,7 @@ export declare abstract class DbQuery implements DbQueryBase {
|
|
|
26
26
|
* 查询行
|
|
27
27
|
* 不应查询单语句,否则返回错误值
|
|
28
28
|
*/
|
|
29
|
-
multipleQueryRows<T extends any[] = any[]>(sql:
|
|
29
|
+
multipleQueryRows<T extends any[] = any[]>(sql: SqlLike): Promise<T[]>;
|
|
30
30
|
/**
|
|
31
31
|
* 指定某一列为key,返回 key 到 row 的映射
|
|
32
32
|
* 单语句查询,不应查询多语句,否则返回错误值
|
|
@@ -36,6 +36,6 @@ export declare abstract class DbQuery implements DbQueryBase {
|
|
|
36
36
|
* 指定某一列为key,返回 key 到 row 的映射
|
|
37
37
|
* 单语句查询,不应查询多语句,否则返回错误值
|
|
38
38
|
*/
|
|
39
|
-
queryMap<T extends Record<string, any> = Record<string, any>, K extends keyof T = string>(sql:
|
|
39
|
+
queryMap<T extends Record<string, any> = Record<string, any>, K extends keyof T = string>(sql: SqlLike, key: K): Promise<Map<T[K], T>>;
|
|
40
40
|
}
|
|
41
41
|
//# sourceMappingURL=DbQuery.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SqlStatementDataset } from "../sql_gen/mod.ts";
|
|
2
|
-
import {
|
|
2
|
+
import { SqlLike } from "./interfaces.ts";
|
|
3
3
|
/** @public */
|
|
4
4
|
export interface SingleQueryResult {
|
|
5
5
|
rowCount: number;
|
|
@@ -19,8 +19,10 @@ export interface DbQueryBase {
|
|
|
19
19
|
/** 单语句查询,不应查询多语句,否则返回错误值 */
|
|
20
20
|
query<T = any>(sql: SqlStatementDataset<T>): Promise<QueryRowsResult<T>>;
|
|
21
21
|
/** 单语句查询,不应查询多语句,否则返回错误值 */
|
|
22
|
-
query<T = any>(sql:
|
|
22
|
+
query<T = any>(sql: SqlLike): Promise<QueryRowsResult<T>>;
|
|
23
23
|
/** 多语句查询 */
|
|
24
|
-
multipleQuery<T extends MultipleQueryResult = MultipleQueryResult>(sql:
|
|
24
|
+
multipleQuery<T extends MultipleQueryResult = MultipleQueryResult>(sql: SqlLike | SqlLike[]): Promise<T>;
|
|
25
25
|
}
|
|
26
|
+
/** @public */
|
|
27
|
+
export declare function sqlLikeToString(sqlLike: SqlLike): string;
|
|
26
28
|
//# sourceMappingURL=DbQueryBase.d.ts.map
|
|
@@ -59,10 +59,10 @@ export interface DbQueryPool extends DbQuery {
|
|
|
59
59
|
totalCount: number;
|
|
60
60
|
begin(mode?: TransactionMode): DbTransaction;
|
|
61
61
|
cursor<T extends {}>(sql: SqlStatementDataset<T>): Promise<DbCursor<T>>;
|
|
62
|
-
cursor<T>(sql:
|
|
62
|
+
cursor<T>(sql: SqlLike, option?: DbCursorOption): Promise<DbCursor<T>>;
|
|
63
63
|
}
|
|
64
64
|
/** @public */
|
|
65
|
-
export type
|
|
66
|
-
|
|
65
|
+
export type SqlLike = {
|
|
66
|
+
genSql(): string;
|
|
67
67
|
} | string;
|
|
68
68
|
//# sourceMappingURL=interfaces.d.ts.map
|
package/dist/client/mod.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { ConnectionNotAvailableError, ParallelQueryError } from './errors.js';
|
|
2
|
+
export { sqlLikeToString } from './DbQueryBase.js';
|
|
2
3
|
export { DbQuery } from './DbQuery.js';
|
|
3
4
|
export { DbCursor } from './DbCursor.js';
|
|
4
5
|
export { DbPoolConnection } from './DbPoolConnection.js';
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/** @public */
|
|
2
2
|
export declare abstract class SqlStatement {
|
|
3
3
|
/** 获取 SQL 语句 */
|
|
4
|
-
|
|
4
|
+
toString(): string;
|
|
5
|
+
/** 获取 SQL 语句 */
|
|
6
|
+
abstract genSql(): string;
|
|
5
7
|
}
|
|
6
8
|
/**
|
|
7
9
|
* 可选择项。可以是 table、查询结果等,它能被 select 语句选择
|
|
@@ -34,7 +36,7 @@ export declare abstract class SqlStatementDataset<T> extends SqlStatement implem
|
|
|
34
36
|
export declare class SqlTextStatementDataset<T> extends SqlStatementDataset<T> {
|
|
35
37
|
readonly sql: string;
|
|
36
38
|
constructor(sql: string);
|
|
37
|
-
|
|
39
|
+
genSql(): string;
|
|
38
40
|
}
|
|
39
41
|
/**
|
|
40
42
|
* 推断查询结果的类型
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/** @public */
|
|
2
2
|
class SqlStatement {
|
|
3
|
+
/** 获取 SQL 语句 */
|
|
4
|
+
toString() {
|
|
5
|
+
return this.genSql();
|
|
6
|
+
}
|
|
3
7
|
}
|
|
4
8
|
/** @public */
|
|
5
9
|
class SqlStatementDataset extends SqlStatement {
|
|
@@ -19,7 +23,7 @@ class SqlTextStatementDataset extends SqlStatementDataset {
|
|
|
19
23
|
super();
|
|
20
24
|
this.sql = sql;
|
|
21
25
|
}
|
|
22
|
-
|
|
26
|
+
genSql() {
|
|
23
27
|
return this.sql;
|
|
24
28
|
}
|
|
25
29
|
}
|
|
@@ -8,7 +8,7 @@ export declare class SqlChainModify<T extends TableType = {}> extends SqlStateme
|
|
|
8
8
|
returning<R extends {}>(returns: Constructable<SelectParam | "*">): SqlStatementDataset<R>;
|
|
9
9
|
onConflict(onConflict: Constructable<readonly string[] | string>): ChainAfterConflictDo<T>;
|
|
10
10
|
where(where: Constructable<ConditionParam | void>): ChainModifyReturning<T>;
|
|
11
|
-
|
|
11
|
+
genSql(): string;
|
|
12
12
|
}
|
|
13
13
|
export declare class SqlInsertConflictBranch<T extends TableType = {}> implements ChainAfterConflictDo<T> {
|
|
14
14
|
readonly sql: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* @deprecated 已废弃,改用 ToInsertType
|
|
2
3
|
* @public
|
|
3
4
|
* @param T - 表格查询类型
|
|
4
5
|
* @param Rq - 默认选择
|
|
@@ -13,6 +14,19 @@ export type PickColumn<T extends {
|
|
|
13
14
|
} & {
|
|
14
15
|
[key in Pa]?: T[key];
|
|
15
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* 推断表插入类型
|
|
19
|
+
* @public
|
|
20
|
+
* @param T - 表格创建类型
|
|
21
|
+
* @param Pa - 可选列
|
|
22
|
+
*/
|
|
23
|
+
export type ToInsertType<T extends {
|
|
24
|
+
[key: string]: any;
|
|
25
|
+
}, Pa extends keyof T = never> = {
|
|
26
|
+
[key in keyof T as key extends Pa ? never : null extends T[key] ? never : key]: T[key];
|
|
27
|
+
} & {
|
|
28
|
+
[key in keyof T as null extends T[key] ? key : key extends Pa ? key : never]?: T[key];
|
|
29
|
+
};
|
|
16
30
|
/** @public */
|
|
17
31
|
export type UpdateRowValue<T extends object> = {
|
|
18
32
|
[key in keyof T]?: T[key] | String;
|