@newbility/database
Advanced tools
@@ -25,2 +25,16 @@ import { IDisposable, ILogger } from '@newbility/core'; | ||
| ExecuteAsync<TResult = any>(sql: string, ...args: Array<any>): Promise<ExecuteResult<TResult>>; | ||
| /** | ||
| * 分页查询 | ||
| * @param sql SQL | ||
| * @param args SQL参数 | ||
| */ | ||
| QueryPageAsync<TResult = any>(sql: string, args: { | ||
| [key: string]: any; | ||
| }): Promise<ExecuteResult<TResult>>; | ||
| /** | ||
| * 查询第一个 | ||
| * @param sql SQL | ||
| * @param args SQL参数 | ||
| */ | ||
| QueryOneAsync<TResult = any>(sql: string, ...args: Array<any>): Promise<TResult | undefined>; | ||
| } | ||
@@ -34,2 +48,6 @@ export declare abstract class DatabaseClient implements IDatabaseClient { | ||
| ExecuteAsync<TResult = any>(sql: string, ...args: Array<any>): Promise<ExecuteResult<TResult>>; | ||
| QueryPageAsync<TResult = any>(sql: string, args: { | ||
| [key: string]: any; | ||
| }): Promise<ExecuteResult<TResult>>; | ||
| QueryOneAsync<TResult = any>(sql: string, ...args: any[]): Promise<TResult | undefined>; | ||
| abstract Dispose(): void; | ||
@@ -36,0 +54,0 @@ protected abstract ExecuteByArrArgsAsync<TResult = any>(sql: string, args: Array<any>): Promise<ExecuteResult<TResult>>; |
@@ -17,2 +17,25 @@ "use strict"; | ||
| } | ||
| async QueryPageAsync(sql, args) { | ||
| let pageQuerySql = sql.trimEnd(); | ||
| if (sql.endsWith(';')) | ||
| pageQuerySql = pageQuerySql.replace(/;$/, ''); | ||
| const sqlParams = args[0]; | ||
| if (sqlParams.limit !== undefined && sqlParams.limit !== null) { | ||
| pageQuerySql = `${pageQuerySql} LIMIT :limit`; | ||
| } | ||
| if (sqlParams.offset !== undefined && sqlParams.offset !== null) { | ||
| pageQuerySql = `${pageQuerySql} OFFSET :offset`; | ||
| } | ||
| return await this.ExecuteByObjArgsAsync(pageQuerySql, args); | ||
| } | ||
| async QueryOneAsync(sql, ...args) { | ||
| let queryOneSql = sql.trimEnd(); | ||
| if (sql.endsWith(';')) | ||
| queryOneSql = queryOneSql.replace(/;$/, ''); | ||
| queryOneSql = `${queryOneSql} LIMIT 1`; | ||
| let result = await this.ExecuteAsync(queryOneSql, args); | ||
| if (result && result.rowCount > 0) { | ||
| return result.rows[0]; | ||
| } | ||
| } | ||
| async ExecuteByObjArgsAsync(sql, args) { | ||
@@ -28,3 +51,3 @@ let relaSql = sql; | ||
| throw new core_1.NewbilityError(`Missing value for parameter ${argKey}`); | ||
| relaSqlArgs.push(argVal); | ||
| relaSqlArgs.push(argVal ?? null); | ||
| relaSql = relaSql.replace(`:${argKey}`, this.GetSqlArgPlaceholder(argKey, relaSqlArgs.length - 1)); | ||
@@ -31,0 +54,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"DatabaseClient.js","sourceRoot":"","sources":["../../src/DatabaseClient.ts"],"names":[],"mappings":";;;AAAA,0CAAuG;AA+BvG,MAAsB,cAAc;IAElC;QACE,IAAI,CAAC,MAAM,GAAG,gBAAS,CAAC,OAAO,CAAU,0BAAmB,CAAC,CAAC;IAChE,CAAC;IAQD,KAAK,CAAC,YAAY,CAAgB,GAAW,EAAE,GAAG,IAAgB;QAChE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;YACpD,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD;aAAM;YACL,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SACpD;IACH,CAAC;IAMS,KAAK,CAAC,qBAAqB,CAAgB,GAAW,EAAE,IAA4B;QAC5F,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,MAAM,WAAW,GAAU,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEjC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;YAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,IAAI,qBAAc,CAAC,+BAA+B,MAAM,EAAE,CAAC,CAAC;YAE5F,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;SACpG;QAED,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAChE,CAAC;IAIS,aAAa;QACrB,OAAO,IAAI,MAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;CACF;AA/CD,wCA+CC"} | ||
| {"version":3,"file":"DatabaseClient.js","sourceRoot":"","sources":["../../src/DatabaseClient.ts"],"names":[],"mappings":"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"} |
@@ -1,6 +0,6 @@ | ||
| import { ILogger } from '@newbility/core'; | ||
| import { IAsyncDisposable, ILogger } from '@newbility/core'; | ||
| import { ExecuteResult, IDatabaseClient } from './DatabaseClient'; | ||
| export declare const DB_PROVIDER_INJECT_TOKEN: string; | ||
| export declare function GetDatabaseProviderToken(key: string): string; | ||
| export interface IDatabaseProvider { | ||
| export interface IDatabaseProvider extends IAsyncDisposable { | ||
| /** | ||
@@ -13,2 +13,16 @@ * 执行数据库指令 | ||
| /** | ||
| * 分页查询 | ||
| * @param sql SQL | ||
| * @param args SQL参数 | ||
| */ | ||
| QueryPageAsync<TResult = any>(sql: string, args: { | ||
| [key: string]: any; | ||
| }): Promise<ExecuteResult<TResult>>; | ||
| /** | ||
| * 查询第一个 | ||
| * @param sql SQL | ||
| * @param args SQL参数 | ||
| */ | ||
| QueryOneAsync<TResult = any>(sql: string, ...args: Array<any>): Promise<TResult | undefined>; | ||
| /** | ||
| * 使用事务 | ||
@@ -23,4 +37,9 @@ * @param fn | ||
| constructor(providerType: string); | ||
| abstract QueryPageAsync<TResult = any>(sql: string, args: { | ||
| [key: string]: any; | ||
| }): Promise<ExecuteResult<TResult>>; | ||
| abstract QueryOneAsync<TResult = any>(sql: string, ...args: any[]): Promise<TResult | undefined>; | ||
| abstract DisposeAsync(): Promise<void>; | ||
| abstract ExecuteAsync<TResult = any>(sql: string, ...args: any): Promise<ExecuteResult<TResult>>; | ||
| abstract UseTransaction<TResult = void>(fn: (client: IDatabaseClient) => Promise<TResult>): Promise<TResult>; | ||
| } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"DatabaseProvider.js","sourceRoot":"","sources":["../../src/DatabaseProvider.ts"],"names":[],"mappings":";;;AAAA,0CAA0F;AAG7E,QAAA,wBAAwB,GAAG,IAAA,qBAAc,EAAC,uBAAuB,CAAC,CAAC;AAEhF,SAAgB,wBAAwB,CAAC,GAAW;IAClD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,gCAAwB,CAAC;IACvD,OAAO,GAAG,gCAAwB,IAAI,GAAG,EAAE,CAAC;AAC9C,CAAC;AAHD,4DAGC;AAiBD,MAAsB,gBAAgB;IAGpC,YAAY,YAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,gBAAS,CAAC,OAAO,CAAU,0BAAmB,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CAKF;AAXD,4CAWC"} | ||
| {"version":3,"file":"DatabaseProvider.js","sourceRoot":"","sources":["../../src/DatabaseProvider.ts"],"names":[],"mappings":";;;AAAA,0CAA4G;AAG/F,QAAA,wBAAwB,GAAG,IAAA,qBAAc,EAAC,uBAAuB,CAAC,CAAC;AAEhF,SAAgB,wBAAwB,CAAC,GAAW;IAClD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,gCAAwB,CAAC;IACvD,OAAO,GAAG,gCAAwB,IAAI,GAAG,EAAE,CAAC;AAC9C,CAAC;AAHD,4DAGC;AA+BD,MAAsB,gBAAgB;IAGpC,YAAY,YAAoB;QAC9B,IAAI,CAAC,MAAM,GAAG,gBAAS,CAAC,OAAO,CAAU,0BAAmB,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CAWF;AAjBD,4CAiBC"} |
+1
-1
| { | ||
| "name": "@newbility/database", | ||
| "version": "0.2.14", | ||
| "version": "0.2.15", | ||
| "main": "build/index.js", | ||
@@ -5,0 +5,0 @@ "author": "jameshu", |
22603
17.31%333
21.98%