@uql/core 3.5.0 → 3.5.2
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/CHANGELOG.md +7 -2
- package/README.md +1 -0
- package/dist/browser/uql-browser.min.js +4594 -1944
- package/dist/browser/uql-browser.min.js.map +1 -1
- package/dist/d1/d1Querier.d.ts +3 -7
- package/dist/d1/d1Querier.d.ts.map +1 -1
- package/dist/d1/d1Querier.js +4 -11
- package/dist/d1/d1Querier.js.map +1 -1
- package/dist/express/querierMiddleware.d.ts +11 -12
- package/dist/express/querierMiddleware.d.ts.map +1 -1
- package/dist/express/querierMiddleware.js +76 -105
- package/dist/express/querierMiddleware.js.map +1 -1
- package/dist/express/query.util.d.ts +4 -0
- package/dist/express/query.util.d.ts.map +1 -1
- package/dist/express/query.util.js +4 -0
- package/dist/express/query.util.js.map +1 -1
- package/dist/libsql/libsqlQuerier.d.ts +3 -7
- package/dist/libsql/libsqlQuerier.d.ts.map +1 -1
- package/dist/libsql/libsqlQuerier.js +3 -11
- package/dist/libsql/libsqlQuerier.js.map +1 -1
- package/dist/maria/mariadbQuerier.d.ts +4 -9
- package/dist/maria/mariadbQuerier.d.ts.map +1 -1
- package/dist/maria/mariadbQuerier.js +5 -20
- package/dist/maria/mariadbQuerier.js.map +1 -1
- package/dist/migrate/bin.d.ts +3 -0
- package/dist/migrate/bin.d.ts.map +1 -0
- package/dist/migrate/bin.js +14 -0
- package/dist/migrate/bin.js.map +1 -0
- package/dist/migrate/cli-config.d.ts +11 -0
- package/dist/migrate/cli-config.d.ts.map +1 -0
- package/dist/migrate/cli-config.js +15 -0
- package/dist/migrate/cli-config.js.map +1 -0
- package/dist/migrate/cli.d.ts +16 -1
- package/dist/migrate/cli.d.ts.map +1 -1
- package/dist/migrate/cli.js +11 -29
- package/dist/migrate/cli.js.map +1 -1
- package/dist/migrate/introspection/mysqlIntrospector.d.ts +9 -9
- package/dist/migrate/introspection/mysqlIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/mysqlIntrospector.js.map +1 -1
- package/dist/migrate/introspection/postgresIntrospector.d.ts +11 -11
- package/dist/migrate/introspection/postgresIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/postgresIntrospector.js.map +1 -1
- package/dist/migrate/introspection/sqliteIntrospector.d.ts +4 -4
- package/dist/migrate/introspection/sqliteIntrospector.d.ts.map +1 -1
- package/dist/migrate/introspection/sqliteIntrospector.js.map +1 -1
- package/dist/migrate/migrator.d.ts +35 -23
- package/dist/migrate/migrator.d.ts.map +1 -1
- package/dist/migrate/migrator.js +16 -10
- package/dist/migrate/migrator.js.map +1 -1
- package/dist/migrate/storage/jsonStorage.d.ts +3 -3
- package/dist/migrate/storage/jsonStorage.d.ts.map +1 -1
- package/dist/migrate/storage/jsonStorage.js +23 -31
- package/dist/migrate/storage/jsonStorage.js.map +1 -1
- package/dist/mysql/mysql2Querier.d.ts +4 -9
- package/dist/mysql/mysql2Querier.d.ts.map +1 -1
- package/dist/mysql/mysql2Querier.js +5 -20
- package/dist/mysql/mysql2Querier.js.map +1 -1
- package/dist/neon/neonQuerier.d.ts +4 -9
- package/dist/neon/neonQuerier.d.ts.map +1 -1
- package/dist/neon/neonQuerier.js +5 -20
- package/dist/neon/neonQuerier.js.map +1 -1
- package/dist/postgres/pgQuerier.d.ts +4 -9
- package/dist/postgres/pgQuerier.d.ts.map +1 -1
- package/dist/postgres/pgQuerier.js +5 -20
- package/dist/postgres/pgQuerier.js.map +1 -1
- package/dist/querier/abstractPoolQuerier.d.ts +13 -0
- package/dist/querier/abstractPoolQuerier.d.ts.map +1 -0
- package/dist/querier/abstractPoolQuerier.js +25 -0
- package/dist/querier/abstractPoolQuerier.js.map +1 -0
- package/dist/sqlite/abstractSqliteQuerier.d.ts +6 -0
- package/dist/sqlite/abstractSqliteQuerier.d.ts.map +1 -0
- package/dist/sqlite/abstractSqliteQuerier.js +13 -0
- package/dist/sqlite/abstractSqliteQuerier.js.map +1 -0
- package/dist/sqlite/sqliteQuerier.d.ts +3 -7
- package/dist/sqlite/sqliteQuerier.d.ts.map +1 -1
- package/dist/sqlite/sqliteQuerier.js +3 -9
- package/dist/sqlite/sqliteQuerier.js.map +1 -1
- package/dist/type/utility.d.ts +1 -1
- package/dist/type/utility.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/d1/d1Querier.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractSqliteQuerier } from '../sqlite/abstractSqliteQuerier.js';
|
|
2
2
|
import type { ExtraOptions } from '../type/index.js';
|
|
3
3
|
export interface D1Meta {
|
|
4
4
|
duration?: number;
|
|
@@ -34,16 +34,12 @@ export interface D1Database {
|
|
|
34
34
|
batch<T = unknown>(statements: D1PreparedStatement[]): Promise<D1Result<T>[]>;
|
|
35
35
|
exec(query: string): Promise<D1ExecResult>;
|
|
36
36
|
}
|
|
37
|
-
export declare class D1Querier extends
|
|
37
|
+
export declare class D1Querier extends AbstractSqliteQuerier {
|
|
38
38
|
readonly db: D1Database;
|
|
39
39
|
readonly extra?: ExtraOptions;
|
|
40
40
|
constructor(db: D1Database, extra?: ExtraOptions);
|
|
41
41
|
internalAll<T>(query: string, values?: unknown[]): Promise<T[]>;
|
|
42
|
-
internalRun(query: string, values?: unknown[]): Promise<
|
|
43
|
-
changes: number;
|
|
44
|
-
ids: number[];
|
|
45
|
-
firstId: number;
|
|
46
|
-
}>;
|
|
42
|
+
internalRun(query: string, values?: unknown[]): Promise<import("../type/query.js").QueryUpdateResult>;
|
|
47
43
|
internalRelease(): Promise<void>;
|
|
48
44
|
}
|
|
49
45
|
//# sourceMappingURL=d1Querier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"d1Querier.d.ts","sourceRoot":"","sources":["../../src/d1/d1Querier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"d1Querier.d.ts","sourceRoot":"","sources":["../../src/d1/d1Querier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,OAAO;IACnC,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAAC;IAC5C,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7B,GAAG,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,GAAG,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC5C,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7B,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5C;AAED,qBAAa,SAAU,SAAQ,qBAAqB;IAEhD,QAAQ,CAAC,EAAE,EAAE,UAAU;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY;gBADpB,EAAE,EAAE,UAAU,EACd,KAAK,CAAC,EAAE,YAAY;IAKhB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAQhD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAY7C,eAAe;CAG/B"}
|
package/dist/d1/d1Querier.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractSqliteQuerier } from '../sqlite/abstractSqliteQuerier.js';
|
|
2
2
|
import { SqliteDialect } from '../sqlite/index.js';
|
|
3
|
-
export class D1Querier extends
|
|
3
|
+
export class D1Querier extends AbstractSqliteQuerier {
|
|
4
4
|
db;
|
|
5
5
|
extra;
|
|
6
6
|
constructor(db, extra) {
|
|
@@ -22,16 +22,9 @@ export class D1Querier extends AbstractSqlQuerier {
|
|
|
22
22
|
const res = await bound.run();
|
|
23
23
|
// D1ExecResult doesn't reliably return lastRowId in the type definition,
|
|
24
24
|
// though the runtime meta often has it.
|
|
25
|
-
// For now, we return 0 for firstId if not explicitly available, relying on UUIDs or RETURNING in future.
|
|
26
25
|
const changes = res.meta?.changes ?? res.count ?? 0;
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
let ids = [];
|
|
30
|
-
if (lastId && changes > 0) {
|
|
31
|
-
firstId = lastId - (changes - 1);
|
|
32
|
-
ids = Array.from({ length: changes }, (_, i) => firstId + i);
|
|
33
|
-
}
|
|
34
|
-
return { changes, ids, firstId };
|
|
26
|
+
const lastInsertRowid = res.meta?.last_row_id;
|
|
27
|
+
return this.buildUpdateResult(changes, lastInsertRowid);
|
|
35
28
|
}
|
|
36
29
|
async internalRelease() {
|
|
37
30
|
// no-op
|
package/dist/d1/d1Querier.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"d1Querier.js","sourceRoot":"","sources":["../../src/d1/d1Querier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"d1Querier.js","sourceRoot":"","sources":["../../src/d1/d1Querier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA0CnD,MAAM,OAAO,SAAU,SAAQ,qBAAqB;IAEvC;IACA;IAFX,YACW,EAAc,EACd,KAAoB;QAE7B,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;QAHvC,OAAE,GAAF,EAAE,CAAY;QACd,UAAK,GAAL,KAAK,CAAe;IAG/B,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAI,KAAa,EAAE,MAAkB;QAC7D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAK,CAAC;QACjC,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,MAAkB;QAC1D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;QAC9B,yEAAyE;QACzE,wCAAwC;QACxC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QACpD,MAAM,eAAe,GAAG,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC;QAC9C,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC1D,CAAC;IAEQ,KAAK,CAAC,eAAe;QAC5B,QAAQ;IACV,CAAC;CACF"}
|
|
@@ -1,27 +1,26 @@
|
|
|
1
|
-
import { type Request, type Router } from 'express';
|
|
1
|
+
import { type NextFunction, type Request, type Response, type Router } from 'express';
|
|
2
2
|
import type { EntityMeta, Type } from '../type/index.js';
|
|
3
3
|
export declare function querierMiddleware(opts?: MiddlewareOptions): Router;
|
|
4
4
|
export declare function buildQuerierRouter<E>(entity: Type<E>, opts: ExtraOptions): Router;
|
|
5
|
+
export declare function errorHandler(err: any, req: Request, res: Response, _next: NextFunction): void;
|
|
5
6
|
type ExtraOptions = {
|
|
6
7
|
/**
|
|
7
8
|
* Allow augment any kind of request before it runs
|
|
8
9
|
*/
|
|
9
10
|
readonly pre?: Pre;
|
|
10
11
|
/**
|
|
11
|
-
* Allow augment a
|
|
12
|
+
* Allow augment a save request before it runs
|
|
12
13
|
*/
|
|
13
|
-
readonly preSave?:
|
|
14
|
+
readonly preSave?: Pre;
|
|
14
15
|
/**
|
|
15
|
-
* Allow augment a
|
|
16
|
+
* Allow augment a filter request before it runs
|
|
16
17
|
*/
|
|
17
|
-
readonly preFilter?:
|
|
18
|
+
readonly preFilter?: Pre;
|
|
19
|
+
};
|
|
20
|
+
type Pre = (req: Request, meta: EntityMeta<any>) => void;
|
|
21
|
+
export type MiddlewareOptions = ExtraOptions & {
|
|
22
|
+
include?: Type<any>[];
|
|
23
|
+
exclude?: Type<any>[];
|
|
18
24
|
};
|
|
19
|
-
type MiddlewareOptions = {
|
|
20
|
-
readonly include?: Type<unknown>[];
|
|
21
|
-
readonly exclude?: Type<unknown>[];
|
|
22
|
-
} & ExtraOptions;
|
|
23
|
-
type Pre = <E = unknown>(req: Request, meta: EntityMeta<E>) => void;
|
|
24
|
-
type PreSave = <E = unknown>(req: Request, meta: EntityMeta<E>) => void;
|
|
25
|
-
type PreFilter = <E = unknown>(req: Request, meta: EntityMeta<E>) => void;
|
|
26
25
|
export {};
|
|
27
26
|
//# sourceMappingURL=querierMiddleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"querierMiddleware.d.ts","sourceRoot":"","sources":["../../src/express/querierMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"querierMiddleware.d.ts","sourceRoot":"","sources":["../../src/express/querierMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAG/G,OAAO,KAAK,EAAE,UAAU,EAA2B,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAIlF,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,iBAAsB,GAAG,MAAM,CAsBtE;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CA6HjF;AA4CD,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,QAItF;AAED,KAAK,YAAY,GAAG;IAClB;;OAEG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC;IACvB;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC;CAC1B,CAAC;AAEF,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AAEzD,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC7C,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;CACvB,CAAC"}
|
|
@@ -8,7 +8,7 @@ export function querierMiddleware(opts = {}) {
|
|
|
8
8
|
const { include, exclude, ...extra } = opts;
|
|
9
9
|
let entities = include ?? getEntities();
|
|
10
10
|
if (exclude) {
|
|
11
|
-
entities = entities.filter((entity) => !
|
|
11
|
+
entities = entities.filter((entity) => !exclude.includes(entity));
|
|
12
12
|
}
|
|
13
13
|
if (!entities.length) {
|
|
14
14
|
throw new TypeError('no entities for the uql express middleware');
|
|
@@ -27,18 +27,17 @@ export function buildQuerierRouter(entity, opts) {
|
|
|
27
27
|
pre(req, meta, opts);
|
|
28
28
|
next();
|
|
29
29
|
});
|
|
30
|
-
router.get('/one', async (req, res,
|
|
30
|
+
router.get('/one', withQuerier(async (req, res, querier) => {
|
|
31
31
|
const q = req.query;
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
router.get('/:id', async (req, res, next) => {
|
|
32
|
+
const data = await querier.findOne(entity, q);
|
|
33
|
+
res.json({ data, count: data ? 1 : 0 });
|
|
34
|
+
}));
|
|
35
|
+
router.get('/count', withQuerier(async (req, res, querier) => {
|
|
36
|
+
const q = req.query;
|
|
37
|
+
const count = await querier.count(entity, q);
|
|
38
|
+
res.json({ data: count, count });
|
|
39
|
+
}));
|
|
40
|
+
router.get('/:id', withQuerier(async (req, res, querier) => {
|
|
42
41
|
const id = req.params.id;
|
|
43
42
|
const q = req.query;
|
|
44
43
|
q.$where ??= {};
|
|
@@ -46,59 +45,25 @@ export function buildQuerierRouter(entity, opts) {
|
|
|
46
45
|
q.$where.push(id);
|
|
47
46
|
}
|
|
48
47
|
else {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const querier = await getQuerier();
|
|
52
|
-
try {
|
|
53
|
-
const data = await querier.findOne(entity, q);
|
|
54
|
-
res.json({ data, count: data ? 1 : 0 });
|
|
48
|
+
const where = q.$where;
|
|
49
|
+
where[meta.id] = id;
|
|
55
50
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
router.get('/', async (req, res, next) => {
|
|
51
|
+
const data = await querier.findOne(entity, q);
|
|
52
|
+
res.json({ data, count: data ? 1 : 0 });
|
|
53
|
+
}));
|
|
54
|
+
router.get('/', withQuerier(async (req, res, querier) => {
|
|
61
55
|
const q = req.query;
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
catch (err) {
|
|
70
|
-
next(err);
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
router.get('/count', async (req, res, next) => {
|
|
74
|
-
const q = req.query;
|
|
75
|
-
const querier = await getQuerier();
|
|
76
|
-
try {
|
|
77
|
-
const count = await querier.count(entity, q);
|
|
78
|
-
res.json({ data: count, count });
|
|
79
|
-
}
|
|
80
|
-
catch (err) {
|
|
81
|
-
next(err);
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
router.post('/', async (req, res, next) => {
|
|
56
|
+
const findManyPromise = querier.findMany(entity, q);
|
|
57
|
+
const countPromise = req.query.count ? querier.count(entity, q) : undefined;
|
|
58
|
+
const [data, count] = await Promise.all([findManyPromise, countPromise]);
|
|
59
|
+
res.json({ data, count });
|
|
60
|
+
}));
|
|
61
|
+
router.post('/', withTransaction(async (req, res, querier) => {
|
|
85
62
|
const payload = req.body;
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
await querier.commitTransaction();
|
|
91
|
-
res.json({ data: id, count: id ? 1 : 0 });
|
|
92
|
-
}
|
|
93
|
-
catch (err) {
|
|
94
|
-
await querier.rollbackTransaction();
|
|
95
|
-
next(err);
|
|
96
|
-
}
|
|
97
|
-
finally {
|
|
98
|
-
await querier.release();
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
router.patch('/:id', async (req, res, next) => {
|
|
63
|
+
const id = await querier.insertOne(entity, payload);
|
|
64
|
+
res.json({ data: id, count: id ? 1 : 0 });
|
|
65
|
+
}));
|
|
66
|
+
router.patch('/:id', withTransaction(async (req, res, querier) => {
|
|
102
67
|
const payload = req.body;
|
|
103
68
|
const id = req.params.id;
|
|
104
69
|
const q = req.query;
|
|
@@ -107,24 +72,13 @@ export function buildQuerierRouter(entity, opts) {
|
|
|
107
72
|
q.$where.push(id);
|
|
108
73
|
}
|
|
109
74
|
else {
|
|
110
|
-
|
|
75
|
+
const where = q.$where;
|
|
76
|
+
where[meta.id] = id;
|
|
111
77
|
}
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
await querier.commitTransaction();
|
|
117
|
-
res.json({ data: req.params.id, count });
|
|
118
|
-
}
|
|
119
|
-
catch (err) {
|
|
120
|
-
await querier.rollbackTransaction();
|
|
121
|
-
next(err);
|
|
122
|
-
}
|
|
123
|
-
finally {
|
|
124
|
-
await querier.release();
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
router.delete('/:id', async (req, res, next) => {
|
|
78
|
+
const count = await querier.updateMany(entity, q, payload);
|
|
79
|
+
res.json({ data: req.params.id, count });
|
|
80
|
+
}));
|
|
81
|
+
router.delete('/:id', withTransaction(async (req, res, querier) => {
|
|
128
82
|
const id = req.params.id;
|
|
129
83
|
const q = req.query;
|
|
130
84
|
q.$where ??= {};
|
|
@@ -132,49 +86,61 @@ export function buildQuerierRouter(entity, opts) {
|
|
|
132
86
|
q.$where.push(id);
|
|
133
87
|
}
|
|
134
88
|
else {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
89
|
+
const where = q.$where;
|
|
90
|
+
where[meta.id] = id;
|
|
91
|
+
}
|
|
92
|
+
const count = await querier.deleteMany(entity, q, {
|
|
93
|
+
softDelete: !!req.query.softDelete,
|
|
94
|
+
});
|
|
95
|
+
res.json({ data: req.params.id, count });
|
|
96
|
+
}));
|
|
97
|
+
router.delete('/', withTransaction(async (req, res, querier) => {
|
|
98
|
+
const q = req.query;
|
|
99
|
+
const founds = await querier.findMany(entity, q);
|
|
100
|
+
let ids = [];
|
|
101
|
+
let count = 0;
|
|
102
|
+
if (founds.length) {
|
|
103
|
+
ids = founds.map((found) => found[meta.id]);
|
|
104
|
+
count = await querier.deleteMany(entity, { $where: ids }, {
|
|
141
105
|
softDelete: !!req.query.softDelete,
|
|
142
106
|
});
|
|
143
|
-
|
|
144
|
-
|
|
107
|
+
}
|
|
108
|
+
res.json({ data: ids, count });
|
|
109
|
+
}));
|
|
110
|
+
return router;
|
|
111
|
+
}
|
|
112
|
+
function withQuerier(fn) {
|
|
113
|
+
return async (req, res, next) => {
|
|
114
|
+
let querier;
|
|
115
|
+
try {
|
|
116
|
+
querier = await getQuerier();
|
|
117
|
+
await fn(req, res, querier);
|
|
145
118
|
}
|
|
146
119
|
catch (err) {
|
|
147
|
-
await querier.rollbackTransaction();
|
|
148
120
|
next(err);
|
|
149
121
|
}
|
|
150
122
|
finally {
|
|
151
|
-
await querier
|
|
123
|
+
await querier?.release();
|
|
152
124
|
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
let
|
|
158
|
-
let count = 0;
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function withTransaction(fn) {
|
|
128
|
+
return async (req, res, next) => {
|
|
129
|
+
let querier;
|
|
159
130
|
try {
|
|
131
|
+
querier = await getQuerier();
|
|
160
132
|
await querier.beginTransaction();
|
|
161
|
-
|
|
162
|
-
if (founds.length) {
|
|
163
|
-
ids = founds.map((found) => found[meta.id]);
|
|
164
|
-
count = await querier.deleteMany(entity, { $where: ids }, { softDelete: !!req.query.softDelete });
|
|
165
|
-
}
|
|
133
|
+
await fn(req, res, querier);
|
|
166
134
|
await querier.commitTransaction();
|
|
167
|
-
res.json({ data: ids, count });
|
|
168
135
|
}
|
|
169
136
|
catch (err) {
|
|
170
|
-
await querier
|
|
137
|
+
await querier?.rollbackTransaction().catch(() => { });
|
|
171
138
|
next(err);
|
|
172
139
|
}
|
|
173
140
|
finally {
|
|
174
|
-
await querier
|
|
141
|
+
await querier?.release();
|
|
175
142
|
}
|
|
176
|
-
}
|
|
177
|
-
return router;
|
|
143
|
+
};
|
|
178
144
|
}
|
|
179
145
|
function pre(req, meta, extra) {
|
|
180
146
|
const method = req.method;
|
|
@@ -187,4 +153,9 @@ function pre(req, meta, extra) {
|
|
|
187
153
|
extra.preFilter?.(req, meta);
|
|
188
154
|
}
|
|
189
155
|
}
|
|
156
|
+
export function errorHandler(err, req, res, _next) {
|
|
157
|
+
res.status(err.status || 500).json({
|
|
158
|
+
error: err.message || 'Internal Server Error',
|
|
159
|
+
});
|
|
160
|
+
}
|
|
190
161
|
//# sourceMappingURL=querierMiddleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"querierMiddleware.js","sourceRoot":"","sources":["../../src/express/querierMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,aAAa,
|
|
1
|
+
{"version":3,"file":"querierMiddleware.js","sourceRoot":"","sources":["../../src/express/querierMiddleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import type { Request } from 'express';
|
|
2
|
+
/**
|
|
3
|
+
* Parse query string parameters and store on request object.
|
|
4
|
+
* Call this in middleware before handling requests.
|
|
5
|
+
*/
|
|
2
6
|
export declare function parseQuery(req: Request): void;
|
|
3
7
|
//# sourceMappingURL=query.util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.util.d.ts","sourceRoot":"","sources":["../../src/express/query.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"query.util.d.ts","sourceRoot":"","sources":["../../src/express/query.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGvC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAkB7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.util.js","sourceRoot":"","sources":["../../src/express/query.util.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;IACjB,MAAM,MAAM,GAAqB,GAAG,CAAC,KAAK,CAAC;IAC3C,MAAM,EAAE,GAAG,MAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"query.util.js","sourceRoot":"","sources":["../../src/express/query.util.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;IACjB,MAAM,MAAM,GAAqB,GAAG,CAAC,KAAK,CAAC;IAC3C,MAAM,EAAE,GAAG,MAAmC,CAAC;IAE/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IACD,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;AACH,CAAC"}
|
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
import type { Client } from '@libsql/client';
|
|
2
|
-
import {
|
|
2
|
+
import { AbstractSqliteQuerier } from '../sqlite/abstractSqliteQuerier.js';
|
|
3
3
|
import type { ExtraOptions } from '../type/index.js';
|
|
4
|
-
export declare class LibsqlQuerier extends
|
|
4
|
+
export declare class LibsqlQuerier extends AbstractSqliteQuerier {
|
|
5
5
|
readonly client: Client;
|
|
6
6
|
readonly extra?: ExtraOptions;
|
|
7
7
|
private tx?;
|
|
8
8
|
constructor(client: Client, extra?: ExtraOptions);
|
|
9
9
|
internalAll<T>(query: string, values?: unknown[]): Promise<T[]>;
|
|
10
|
-
internalRun(query: string, values?: unknown[]): Promise<
|
|
11
|
-
changes: number;
|
|
12
|
-
ids: any[];
|
|
13
|
-
firstId: number;
|
|
14
|
-
}>;
|
|
10
|
+
internalRun(query: string, values?: unknown[]): Promise<import("../type/query.js").QueryUpdateResult>;
|
|
15
11
|
get hasOpenTransaction(): boolean;
|
|
16
12
|
beginTransaction(): Promise<void>;
|
|
17
13
|
commitTransaction(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libsqlQuerier.d.ts","sourceRoot":"","sources":["../../src/libsql/libsqlQuerier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAwB,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"libsqlQuerier.d.ts","sourceRoot":"","sources":["../../src/libsql/libsqlQuerier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAwB,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,qBAAa,aAAc,SAAQ,qBAAqB;IAIpD,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY;IAJ/B,OAAO,CAAC,EAAE,CAAC,CAAc;gBAGd,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,YAAY;IAKhB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAOhD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAO5D,IAAa,kBAAkB,YAE9B;IAGc,gBAAgB;IAQhB,iBAAiB;IASjB,mBAAmB;IAQnB,eAAe;CAK/B"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import { Serialized } from '../querier/decorator/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { AbstractSqliteQuerier } from '../sqlite/abstractSqliteQuerier.js';
|
|
4
4
|
import { SqliteDialect } from '../sqlite/index.js';
|
|
5
|
-
export class LibsqlQuerier extends
|
|
5
|
+
export class LibsqlQuerier extends AbstractSqliteQuerier {
|
|
6
6
|
client;
|
|
7
7
|
extra;
|
|
8
8
|
tx;
|
|
@@ -21,15 +21,7 @@ export class LibsqlQuerier extends AbstractSqlQuerier {
|
|
|
21
21
|
this.extra?.logger?.(query, values);
|
|
22
22
|
const target = this.tx || this.client;
|
|
23
23
|
const res = await target.execute({ sql: query, args: values });
|
|
24
|
-
|
|
25
|
-
const lastInsertRowid = res.lastInsertRowid;
|
|
26
|
-
const firstId = lastInsertRowid ? Number(lastInsertRowid) - (changes - 1) : undefined;
|
|
27
|
-
const ids = firstId
|
|
28
|
-
? Array(changes)
|
|
29
|
-
.fill(firstId)
|
|
30
|
-
.map((i, index) => i + index)
|
|
31
|
-
: [];
|
|
32
|
-
return { changes, ids, firstId };
|
|
24
|
+
return this.buildUpdateResult(res.rowsAffected, res.lastInsertRowid);
|
|
33
25
|
}
|
|
34
26
|
get hasOpenTransaction() {
|
|
35
27
|
return !!this.tx;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libsqlQuerier.js","sourceRoot":"","sources":["../../src/libsql/libsqlQuerier.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"libsqlQuerier.js","sourceRoot":"","sources":["../../src/libsql/libsqlQuerier.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,OAAO,aAAc,SAAQ,qBAAqB;IAI3C;IACA;IAJH,EAAE,CAAe;IAEzB,YACW,MAAc,EACd,KAAoB;QAE7B,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;QAHvC,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAe;IAG/B,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAI,KAAa,EAAE,MAAkB;QAC7D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAmB,EAAE,CAAC,CAAC;QAC5E,OAAO,GAAG,CAAC,IAAW,CAAC;IACzB,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,MAAkB;QAC1D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAmB,EAAE,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;IACvE,CAAC;IAED,IAAa,kBAAkB;QAC7B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IACnB,CAAC;IAGc,AAAN,KAAK,CAAC,gBAAgB;QAC7B,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,SAAS,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAGc,AAAN,KAAK,CAAC,iBAAiB;QAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,SAAS,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;IACtB,CAAC;IAGc,AAAN,KAAK,CAAC,mBAAmB;QAChC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,SAAS,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;IACtB,CAAC;IAEQ,KAAK,CAAC,eAAe;QAC5B,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;CACF;AA9BgB;IADd,UAAU,EAAE;;;;qDAMZ;AAGc;IADd,UAAU,EAAE;;;;sDAOZ;AAGc;IADd,UAAU,EAAE;;;;wDAOZ"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
import type { PoolConnection } from 'mariadb';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
readonly connect: () => Promise<PoolConnection>;
|
|
6
|
-
readonly extra?: ExtraOptions;
|
|
7
|
-
conn: PoolConnection;
|
|
8
|
-
constructor(connect: () => Promise<PoolConnection>, extra?: ExtraOptions);
|
|
2
|
+
import { AbstractPoolQuerier } from '../querier/abstractPoolQuerier.js';
|
|
3
|
+
export declare class MariadbQuerier extends AbstractPoolQuerier<PoolConnection> {
|
|
4
|
+
constructor(connect: () => Promise<PoolConnection>, extra?: any);
|
|
9
5
|
internalAll<T>(query: string, values?: unknown[]): Promise<T[]>;
|
|
10
6
|
internalRun(query: string, values?: unknown[]): Promise<{
|
|
11
7
|
changes: any;
|
|
12
8
|
ids: any;
|
|
13
9
|
firstId: any;
|
|
14
10
|
}>;
|
|
15
|
-
|
|
16
|
-
internalRelease(): Promise<void>;
|
|
11
|
+
protected releaseConn(conn: PoolConnection): Promise<void>;
|
|
17
12
|
}
|
|
18
13
|
//# sourceMappingURL=mariadbQuerier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mariadbQuerier.d.ts","sourceRoot":"","sources":["../../src/maria/mariadbQuerier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mariadbQuerier.d.ts","sourceRoot":"","sources":["../../src/maria/mariadbQuerier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAIxE,qBAAa,cAAe,SAAQ,mBAAmB,CAAC,cAAc,CAAC;gBACzD,OAAO,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG;IAIhD,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;IAOhD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE;;;;;cAQnC,WAAW,CAAC,IAAI,EAAE,cAAc;CAG1D"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractPoolQuerier } from '../querier/abstractPoolQuerier.js';
|
|
2
2
|
import { MariaDialect } from './mariaDialect.js';
|
|
3
|
-
export class MariadbQuerier extends
|
|
4
|
-
connect;
|
|
5
|
-
extra;
|
|
6
|
-
conn;
|
|
3
|
+
export class MariadbQuerier extends AbstractPoolQuerier {
|
|
7
4
|
constructor(connect, extra) {
|
|
8
|
-
super(new MariaDialect(extra?.namingStrategy));
|
|
9
|
-
this.connect = connect;
|
|
10
|
-
this.extra = extra;
|
|
5
|
+
super(new MariaDialect(extra?.namingStrategy), connect, extra);
|
|
11
6
|
}
|
|
12
7
|
async internalAll(query, values) {
|
|
13
8
|
this.extra?.logger?.(query, values);
|
|
@@ -22,18 +17,8 @@ export class MariadbQuerier extends AbstractSqlQuerier {
|
|
|
22
17
|
const ids = res.length ? res.map((r) => r.id) : [];
|
|
23
18
|
return { changes: res.affectedRows, ids, firstId: ids[0] };
|
|
24
19
|
}
|
|
25
|
-
async
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
async internalRelease() {
|
|
29
|
-
if (this.hasOpenTransaction) {
|
|
30
|
-
throw TypeError('pending transaction');
|
|
31
|
-
}
|
|
32
|
-
if (!this.conn) {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
await this.conn.release();
|
|
36
|
-
this.conn = undefined;
|
|
20
|
+
async releaseConn(conn) {
|
|
21
|
+
await conn.release();
|
|
37
22
|
}
|
|
38
23
|
}
|
|
39
24
|
//# sourceMappingURL=mariadbQuerier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mariadbQuerier.js","sourceRoot":"","sources":["../../src/maria/mariadbQuerier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mariadbQuerier.js","sourceRoot":"","sources":["../../src/maria/mariadbQuerier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,OAAO,cAAe,SAAQ,mBAAmC;IACrE,YAAY,OAAsC,EAAE,KAAW;QAC7D,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAI,KAAa,EAAE,MAAkB;QAC7D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,GAAG,GAAQ,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACtD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAEQ,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,MAAkB;QAC1D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAA8B,CAAC;IACzF,CAAC;IAEkB,KAAK,CAAC,WAAW,CAAC,IAAoB;QACvD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../src/migrate/bin.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { pathToFileURL } from 'node:url';
|
|
3
|
+
import { main } from './cli.js';
|
|
4
|
+
/**
|
|
5
|
+
* Check if the current module is being run as the main script (entry point).
|
|
6
|
+
* This allows the file to be both imported as a library and executed as a standalone CLI tool.
|
|
7
|
+
*/
|
|
8
|
+
if (import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
9
|
+
main(process.argv.slice(2)).catch((err) => {
|
|
10
|
+
console.error(err);
|
|
11
|
+
process.exit(1);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=bin.js.map
|