@asla/yoursql 0.8.2 → 0.8.3
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/DbCursor.js +21 -0
- package/dist/client/DbPoolConnection.js +56 -0
- package/dist/client/DbPoolTransaction.js +98 -0
- package/dist/client/DbQuery.js +30 -0
- package/dist/client/errors.js +14 -0
- package/dist/client/mod.js +5 -0
- package/dist/sql_gen/mod.js +19 -0
- package/dist/sql_gen/select/DbTable.js +70 -0
- package/dist/sql_gen/select/TableQuery.js +68 -0
- package/dist/sql_gen/select/_statement.js +60 -0
- package/dist/sql_gen/select/query_chain_abstract.js +27 -0
- package/dist/sql_gen/select/query_chain_insert.js +64 -0
- package/dist/sql_gen/select/query_chain_select.js +105 -0
- package/dist/sql_gen/sql_value/db_type.js +40 -0
- package/dist/sql_gen/sql_value/sql_value.js +304 -0
- package/dist/sql_gen/util.js +166 -0
- package/dist/sql_gen/your_table/checker.js +82 -0
- package/dist/sql_gen/your_table/infer_db_type.js +76 -0
- package/dist/sql_gen/your_table/table.js +33 -0
- package/package.json +3 -3
- package/dist/client.js +0 -209
- package/dist/sql_gen.js +0 -1061
package/dist/client.js
DELETED
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
/** @public */
|
|
2
|
-
class ParallelQueryError extends Error {
|
|
3
|
-
constructor() {
|
|
4
|
-
super("The previous query was not completed and cannot be executed");
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
/** @public */
|
|
8
|
-
class ConnectionNotAvailableError extends Error {
|
|
9
|
-
constructor(message) {
|
|
10
|
-
super(message);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* SQL 查询相关操作
|
|
16
|
-
* @public
|
|
17
|
-
*/
|
|
18
|
-
class DbQuery {
|
|
19
|
-
/** 单语句查询受影响的行 */
|
|
20
|
-
queryCount(sql) {
|
|
21
|
-
return this.query(sql.toString()).then((res) => {
|
|
22
|
-
if (res.rowCount === null)
|
|
23
|
-
return 0;
|
|
24
|
-
return res.rowCount;
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
queryRows(sql) {
|
|
28
|
-
return this.query(sql.toString()).then((res) => res.rows);
|
|
29
|
-
}
|
|
30
|
-
multipleQueryRows(sql) {
|
|
31
|
-
return this.multipleQuery(sql.toString()).then((res) => res.map((item) => item.rows ?? []));
|
|
32
|
-
}
|
|
33
|
-
async queryMap(sql, key) {
|
|
34
|
-
const { rows } = await this.query(sql.toString());
|
|
35
|
-
let map = new Map();
|
|
36
|
-
for (let i = 0; i < rows.length; i++) {
|
|
37
|
-
map.set(rows[i][key], rows[i]);
|
|
38
|
-
}
|
|
39
|
-
return map;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/** @public */
|
|
44
|
-
class DbCursor {
|
|
45
|
-
// implement
|
|
46
|
-
[Symbol.asyncDispose]() {
|
|
47
|
-
return this.close();
|
|
48
|
-
}
|
|
49
|
-
async *[Symbol.asyncIterator]() {
|
|
50
|
-
let data = await this.read();
|
|
51
|
-
try {
|
|
52
|
-
while (data.length) {
|
|
53
|
-
yield* data;
|
|
54
|
-
data = await this.read();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
finally {
|
|
58
|
-
await this.close();
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* 池连接
|
|
67
|
-
* @public
|
|
68
|
-
*/
|
|
69
|
-
class DbPoolConnection extends DbQuery {
|
|
70
|
-
constructor(conn, onRelease) {
|
|
71
|
-
super();
|
|
72
|
-
this.#conn = conn;
|
|
73
|
-
this.#onRelease = onRelease;
|
|
74
|
-
}
|
|
75
|
-
#onRelease;
|
|
76
|
-
//implement
|
|
77
|
-
async begin(mode) {
|
|
78
|
-
await this.query("BEGIN" + (mode ? " TRANSACTION ISOLATION LEVEL " + mode : ""));
|
|
79
|
-
}
|
|
80
|
-
#conn;
|
|
81
|
-
query(sql) {
|
|
82
|
-
if (!this.#conn)
|
|
83
|
-
return Promise.reject(new ConnectionNotAvailableError("Connection already release"));
|
|
84
|
-
return this.#conn.query(sql);
|
|
85
|
-
}
|
|
86
|
-
multipleQuery(sql) {
|
|
87
|
-
if (!this.#conn)
|
|
88
|
-
return Promise.reject(new ConnectionNotAvailableError("Connection already release"));
|
|
89
|
-
return this.#conn.multipleQuery(sql);
|
|
90
|
-
}
|
|
91
|
-
//implement
|
|
92
|
-
async rollback() {
|
|
93
|
-
await this.query("ROLLBACK");
|
|
94
|
-
}
|
|
95
|
-
//implement
|
|
96
|
-
async commit() {
|
|
97
|
-
await this.query("COMMIT");
|
|
98
|
-
}
|
|
99
|
-
get released() {
|
|
100
|
-
return !this.#conn;
|
|
101
|
-
}
|
|
102
|
-
/** 调用 release() 时,如果事务未提交,则抛出异常 */
|
|
103
|
-
release() {
|
|
104
|
-
if (this.#conn) {
|
|
105
|
-
this.#conn = undefined;
|
|
106
|
-
this.#onRelease();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
//implement
|
|
110
|
-
[Symbol.dispose]() {
|
|
111
|
-
return this.release();
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* @public
|
|
117
|
-
* 池连接事务
|
|
118
|
-
*/
|
|
119
|
-
class DbPoolTransaction extends DbQuery {
|
|
120
|
-
mode;
|
|
121
|
-
constructor(connect, mode) {
|
|
122
|
-
super();
|
|
123
|
-
this.mode = mode;
|
|
124
|
-
this.#query = (sql) => {
|
|
125
|
-
return new Promise((resolve, reject) => {
|
|
126
|
-
this.#pending = connect()
|
|
127
|
-
.then((conn) => {
|
|
128
|
-
this.#conn = conn;
|
|
129
|
-
const promise = conn.multipleQuery("BEGIN" + (this.mode ? " TRANSACTION ISOLATION LEVEL " + this.mode : "") + ";\n" + sql);
|
|
130
|
-
this.#pending = promise;
|
|
131
|
-
this.#query = this.#queryAfter;
|
|
132
|
-
return promise;
|
|
133
|
-
})
|
|
134
|
-
.then((res) => {
|
|
135
|
-
this.#pending = undefined;
|
|
136
|
-
resolve(res[1]);
|
|
137
|
-
}, (e) => {
|
|
138
|
-
this.#pending = undefined;
|
|
139
|
-
reject(e);
|
|
140
|
-
if (this.#conn)
|
|
141
|
-
this.#release(this.#conn, e);
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
#pending;
|
|
147
|
-
#conn;
|
|
148
|
-
async commit() {
|
|
149
|
-
if (this.#pending)
|
|
150
|
-
throw new ParallelQueryError();
|
|
151
|
-
if (this.#conn) {
|
|
152
|
-
const promise = this.#conn.query("COMMIT");
|
|
153
|
-
this.#release(this.#conn);
|
|
154
|
-
await promise;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
async rollback() {
|
|
158
|
-
if (this.#pending)
|
|
159
|
-
throw new ParallelQueryError();
|
|
160
|
-
if (this.#conn) {
|
|
161
|
-
const promise = this.#conn.query("ROLLBACK");
|
|
162
|
-
this.#release(this.#conn);
|
|
163
|
-
await promise;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
savePoint(savePoint) {
|
|
167
|
-
return this.query("SAVEPOINT" + savePoint).then(() => { });
|
|
168
|
-
}
|
|
169
|
-
rollbackTo(savePoint) {
|
|
170
|
-
return this.query("ROLLBACK TO " + savePoint).then(() => { });
|
|
171
|
-
}
|
|
172
|
-
/** 拿到连接后执行这个 */
|
|
173
|
-
#queryAfter(sql) {
|
|
174
|
-
return this.#conn.query(sql).then((res) => {
|
|
175
|
-
this.#pending = undefined;
|
|
176
|
-
return res;
|
|
177
|
-
}, (e) => {
|
|
178
|
-
this.#pending = undefined;
|
|
179
|
-
this.#release(this.#conn, e);
|
|
180
|
-
throw e;
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
#query;
|
|
184
|
-
query(sql) {
|
|
185
|
-
if (this.#pending)
|
|
186
|
-
return Promise.reject(new ParallelQueryError());
|
|
187
|
-
return this.#query(sql.toString());
|
|
188
|
-
}
|
|
189
|
-
multipleQuery(sql) {
|
|
190
|
-
if (this.#pending)
|
|
191
|
-
return Promise.reject(new ParallelQueryError());
|
|
192
|
-
return this.#query(sql.toString());
|
|
193
|
-
}
|
|
194
|
-
#error;
|
|
195
|
-
#release(conn, error = new ConnectionNotAvailableError("Connection already release")) {
|
|
196
|
-
this.#error = error;
|
|
197
|
-
this.#query = () => Promise.reject(this.#error);
|
|
198
|
-
this.#conn = undefined;
|
|
199
|
-
conn.release();
|
|
200
|
-
}
|
|
201
|
-
get released() {
|
|
202
|
-
return !!this.#error;
|
|
203
|
-
}
|
|
204
|
-
[Symbol.asyncDispose]() {
|
|
205
|
-
return this.rollback();
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
export { ConnectionNotAvailableError, DbCursor, DbPoolConnection, DbPoolTransaction, DbQuery, ParallelQueryError };
|