@gennext/lb-infra 0.2.1 → 0.2.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/README.md +181 -223
- package/dist/base/applications/base.application.d.ts +12 -21
- package/dist/base/applications/base.application.d.ts.map +1 -1
- package/dist/base/applications/base.application.js +25 -27
- package/dist/base/applications/base.application.js.map +1 -1
- package/dist/base/hono/hono-adapter.d.ts +10 -0
- package/dist/base/hono/hono-adapter.d.ts.map +1 -0
- package/dist/base/hono/hono-adapter.js +27 -0
- package/dist/base/hono/hono-adapter.js.map +1 -0
- package/dist/base/index.js +1 -1
- package/dist/base/index.js.map +1 -1
- package/dist/base/models/base.model.d.ts +2 -1
- package/dist/base/models/base.model.d.ts.map +1 -1
- package/dist/base/models/base.model.js +2 -1
- package/dist/base/models/base.model.js.map +1 -1
- package/dist/base/models/column-defs.d.ts +2 -2
- package/dist/base/models/decorators.d.ts +15 -0
- package/dist/base/models/decorators.d.ts.map +1 -0
- package/dist/base/models/decorators.js +19 -0
- package/dist/base/models/decorators.js.map +1 -0
- package/dist/base/models/index.d.ts +2 -0
- package/dist/base/models/index.d.ts.map +1 -1
- package/dist/base/models/index.js +2 -0
- package/dist/base/models/index.js.map +1 -1
- package/dist/base/models/model.helper.d.ts +7 -0
- package/dist/base/models/model.helper.d.ts.map +1 -0
- package/dist/base/models/model.helper.js +16 -0
- package/dist/base/models/model.helper.js.map +1 -0
- package/dist/base/repository/default-crud.repository.d.ts +3 -3
- package/dist/base/repository/default-crud.repository.d.ts.map +1 -1
- package/dist/base/repository/default-crud.repository.js +20 -17
- package/dist/base/repository/default-crud.repository.js.map +1 -1
- package/dist/base/repository/filter.builder.d.ts +7 -0
- package/dist/base/repository/filter.builder.d.ts.map +1 -0
- package/dist/base/repository/filter.builder.js +74 -0
- package/dist/base/repository/filter.builder.js.map +1 -0
- package/dist/base/repository/readable.repository.d.ts +10 -8
- package/dist/base/repository/readable.repository.d.ts.map +1 -1
- package/dist/base/repository/readable.repository.js +26 -19
- package/dist/base/repository/readable.repository.js.map +1 -1
- package/dist/base/repository/soft-deletable.repository.d.ts +3 -2
- package/dist/base/repository/soft-deletable.repository.d.ts.map +1 -1
- package/dist/base/repository/soft-deletable.repository.js +26 -15
- package/dist/base/repository/soft-deletable.repository.js.map +1 -1
- package/dist/boot/base/base-artifact-booter.d.ts +3 -0
- package/dist/boot/base/base-artifact-booter.d.ts.map +1 -1
- package/dist/boot/base/base-artifact-booter.js +3 -0
- package/dist/boot/base/base-artifact-booter.js.map +1 -1
- package/dist/boot/boot.mixin.d.ts.map +1 -1
- package/dist/boot/boot.mixin.js +10 -4
- package/dist/boot/boot.mixin.js.map +1 -1
- package/dist/boot/booters/controller.booter.d.ts.map +1 -1
- package/dist/boot/booters/controller.booter.js +5 -1
- package/dist/boot/booters/controller.booter.js.map +1 -1
- package/dist/common/constants.d.ts +2 -0
- package/dist/common/constants.d.ts.map +1 -1
- package/dist/common/constants.js +2 -0
- package/dist/common/constants.js.map +1 -1
- package/dist/helpers/logger/config.d.ts.map +1 -1
- package/dist/helpers/logger/config.js +1 -2
- package/dist/helpers/logger/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/utilities/migration.utility.d.ts +13 -0
- package/dist/utilities/migration.utility.d.ts.map +1 -1
- package/dist/utilities/migration.utility.js +39 -0
- package/dist/utilities/migration.utility.js.map +1 -1
- package/package.json +9 -1
- package/dist/base/loopback/filter/index.d.ts +0 -2
- package/dist/base/loopback/filter/index.d.ts.map +0 -1
- package/dist/base/loopback/filter/index.js +0 -5
- package/dist/base/loopback/filter/index.js.map +0 -1
- package/dist/base/loopback/http-server/index.d.ts +0 -2
- package/dist/base/loopback/http-server/index.d.ts.map +0 -1
- package/dist/base/loopback/http-server/index.js +0 -5
- package/dist/base/loopback/http-server/index.js.map +0 -1
|
@@ -1,42 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BaseApplication = void 0;
|
|
4
|
+
const core_1 = require("@loopback/core");
|
|
4
5
|
const helpers_1 = require("../../helpers");
|
|
5
|
-
class BaseApplication {
|
|
6
|
+
class BaseApplication extends core_1.Application {
|
|
6
7
|
constructor(configs) {
|
|
8
|
+
super();
|
|
7
9
|
this.configs = configs;
|
|
8
10
|
this.logger = helpers_1.LoggerFactory.getLogger(['Application']);
|
|
9
|
-
this.bindings = new Map();
|
|
10
11
|
const { OpenAPIHono } = require('@hono/zod-openapi');
|
|
11
|
-
this.
|
|
12
|
+
this.honoApp = new OpenAPIHono();
|
|
12
13
|
}
|
|
13
14
|
staticConfigure() { }
|
|
14
15
|
preConfigure() { }
|
|
15
16
|
async setupMiddlewares() { }
|
|
16
17
|
postConfigure() { }
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
dataSource(_DataSourceClass) { }
|
|
20
|
-
service(_ServiceClass) { }
|
|
21
|
-
component(_ComponentClass) { }
|
|
22
|
-
bind(opts) {
|
|
23
|
-
return {
|
|
24
|
-
toValue: (v) => {
|
|
25
|
-
this.bindings.set(opts.key, v);
|
|
26
|
-
},
|
|
27
|
-
toClass: (c) => {
|
|
28
|
-
this.bindings.set(opts.key, new c());
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
get(opts) {
|
|
33
|
-
if (!this.bindings.has(opts.key) && !opts.isOptional) {
|
|
34
|
-
throw new Error(`Binding not found: ${opts.key}`);
|
|
35
|
-
}
|
|
36
|
-
return this.bindings.get(opts.key);
|
|
37
|
-
}
|
|
38
|
-
getServer() {
|
|
39
|
-
return this.server;
|
|
18
|
+
getHono() {
|
|
19
|
+
return this.honoApp;
|
|
40
20
|
}
|
|
41
21
|
async start() {
|
|
42
22
|
await this.preConfigure();
|
|
@@ -44,11 +24,29 @@ class BaseApplication {
|
|
|
44
24
|
if (typeof this.boot === 'function') {
|
|
45
25
|
await this.boot();
|
|
46
26
|
}
|
|
27
|
+
// Unify Hono and LoopBack routes
|
|
28
|
+
const { HonoAdapter } = require('../hono/hono-adapter');
|
|
29
|
+
const adapter = new HonoAdapter(this);
|
|
30
|
+
await adapter.registerControllers();
|
|
47
31
|
await this.postConfigure();
|
|
48
32
|
}
|
|
49
|
-
async stop() {
|
|
33
|
+
async stop() {
|
|
34
|
+
await super.stop();
|
|
35
|
+
}
|
|
50
36
|
static(_opts) { }
|
|
51
37
|
async applyMiddlewares(_configs) { }
|
|
38
|
+
// Override bind to return a native Binding while maintaining compatibility if needed
|
|
39
|
+
// Note: LoopBack's bind already exists on Application
|
|
40
|
+
bindCustom(opts) {
|
|
41
|
+
return this.bind(opts.key);
|
|
42
|
+
}
|
|
43
|
+
// Override get to use LoopBack's get
|
|
44
|
+
getCustom(opts) {
|
|
45
|
+
if (opts.isOptional) {
|
|
46
|
+
return this.get(opts.key, { optional: true });
|
|
47
|
+
}
|
|
48
|
+
return this.get(opts.key);
|
|
49
|
+
}
|
|
52
50
|
}
|
|
53
51
|
exports.BaseApplication = BaseApplication;
|
|
54
52
|
//# sourceMappingURL=base.application.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.application.js","sourceRoot":"","sources":["../../../src/base/applications/base.application.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"base.application.js","sourceRoot":"","sources":["../../../src/base/applications/base.application.ts"],"names":[],"mappings":";;;AACA,yCAAsD;AAItD,2CAA8C;AAoB9C,MAAsB,eAAgB,SAAQ,kBAAW;IAKvD,YAAY,OAA4B;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACvD,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IACnC,CAAC;IAID,eAAe,KAAU,CAAC;IAC1B,YAAY,KAA0B,CAAC;IACvC,KAAK,CAAC,gBAAgB,KAAmB,CAAC;IAC1C,aAAa,KAA0B,CAAC;IAExC,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEQ,KAAK,CAAC,KAAK;QAClB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,IAAI,OAAQ,IAAY,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC7C,MAAO,IAAY,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAED,iCAAiC;QACjC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAEpC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,KAAiD,IAAS,CAAC;IAExD,KAAK,CAAC,gBAAgB,CAAC,QAA4B,IAAkB,CAAC;IAEhF,qFAAqF;IACrF,sDAAsD;IACtD,UAAU,CAAI,IAAqB;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,qCAAqC;IACrC,SAAS,CAAI,IAA2C;QACtD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF;AA5DD,0CA4DC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseApplication } from '../applications';
|
|
2
|
+
export declare class HonoAdapter {
|
|
3
|
+
private app;
|
|
4
|
+
constructor(app: BaseApplication);
|
|
5
|
+
/**
|
|
6
|
+
* Scans the LoopBack context for controllers and registers them as Hono routes.
|
|
7
|
+
*/
|
|
8
|
+
registerControllers(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=hono-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono-adapter.d.ts","sourceRoot":"","sources":["../../../src/base/hono/hono-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,qBAAa,WAAW;IACV,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,eAAe;IAExC;;OAEG;IACG,mBAAmB;CAgB1B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HonoAdapter = void 0;
|
|
4
|
+
const controllers_1 = require("../controllers");
|
|
5
|
+
class HonoAdapter {
|
|
6
|
+
constructor(app) {
|
|
7
|
+
this.app = app;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Scans the LoopBack context for controllers and registers them as Hono routes.
|
|
11
|
+
*/
|
|
12
|
+
async registerControllers() {
|
|
13
|
+
const controllers = this.app.find('controllers.*');
|
|
14
|
+
for (const binding of controllers) {
|
|
15
|
+
const controllerClass = binding.valueConstructor;
|
|
16
|
+
if (!controllerClass) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
const instance = await this.app.get(binding.key);
|
|
20
|
+
if (instance instanceof controllers_1.BaseController) {
|
|
21
|
+
await instance.binding();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.HonoAdapter = HonoAdapter;
|
|
27
|
+
//# sourceMappingURL=hono-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono-adapter.js","sourceRoot":"","sources":["../../../src/base/hono/hono-adapter.ts"],"names":[],"mappings":";;;AACA,gDAAgD;AAEhD,MAAa,WAAW;IACtB,YAAoB,GAAoB;QAApB,QAAG,GAAH,GAAG,CAAiB;IAAG,CAAC;IAE5C;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEnD,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;YACjD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEjD,IAAI,QAAQ,YAAY,4BAAc,EAAE,CAAC;gBACvC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAtBD,kCAsBC"}
|
package/dist/base/index.js
CHANGED
|
@@ -45,7 +45,7 @@ __exportStar(require("./drizzle"), exports);
|
|
|
45
45
|
exports.drizzlePg = __importStar(require("./drizzle/pg"));
|
|
46
46
|
// pg
|
|
47
47
|
__exportStar(require("./pg"), exports);
|
|
48
|
-
//
|
|
48
|
+
// exports
|
|
49
49
|
__exportStar(require("./base.helper"), exports);
|
|
50
50
|
__exportStar(require("./datasources"), exports);
|
|
51
51
|
__exportStar(require("./models"), exports);
|
package/dist/base/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO;AACP,+CAA+B;AAC/B,qDAAmC;AAEnC,UAAU;AACV,4CAA0B;AAC1B,0DAA0C;AAE1C,KAAK;AACL,uCAAqB;AAErB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO;AACP,+CAA+B;AAC/B,qDAAmC;AAEnC,UAAU;AACV,4CAA0B;AAC1B,0DAA0C;AAE1C,KAAK;AACL,uCAAqB;AAErB,UAAU;AACV,gDAA8B;AAC9B,gDAA8B;AAC9B,2CAAyB;AACzB,+CAA6B"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { TTableSchema } from './drizzle.types';
|
|
2
2
|
export interface IBaseEntityOptions<S extends TTableSchema> {
|
|
3
|
-
name
|
|
3
|
+
name?: string;
|
|
4
4
|
schema: S;
|
|
5
5
|
}
|
|
6
6
|
export declare class BaseEntity<S extends TTableSchema = TTableSchema> {
|
|
7
7
|
readonly tableName: string;
|
|
8
8
|
readonly schema: S;
|
|
9
|
+
static TABLE_NAME?: string;
|
|
9
10
|
constructor(opts: IBaseEntityOptions<S>);
|
|
10
11
|
}
|
|
11
12
|
//# sourceMappingURL=base.model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.model.d.ts","sourceRoot":"","sources":["../../../src/base/models/base.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,YAAY;IACxD,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"base.model.d.ts","sourceRoot":"","sources":["../../../src/base/models/base.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,YAAY;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,CAAC;CACX;AAED,qBAAa,UAAU,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IAC3D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAEnB,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;gBAEf,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;CAKxC"}
|
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BaseEntity = void 0;
|
|
4
4
|
class BaseEntity {
|
|
5
5
|
constructor(opts) {
|
|
6
|
-
|
|
6
|
+
const ctor = this.constructor;
|
|
7
|
+
this.tableName = opts.name ?? ctor.TABLE_NAME ?? ctor.name;
|
|
7
8
|
this.schema = opts.schema;
|
|
8
9
|
}
|
|
9
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.model.js","sourceRoot":"","sources":["../../../src/base/models/base.model.ts"],"names":[],"mappings":";;;AAOA,MAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"base.model.js","sourceRoot":"","sources":["../../../src/base/models/base.model.ts"],"names":[],"mappings":";;;AAOA,MAAa,UAAU;IAMrB,YAAY,IAA2B;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAgC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;CACF;AAXD,gCAWC"}
|
|
@@ -8,8 +8,8 @@ export declare function generateIdColumnDefs(opts: {
|
|
|
8
8
|
id: import("drizzle-orm").HasDefault<import("drizzle-orm").IsPrimaryKey<import("drizzle-orm").NotNull<import("drizzle-orm/pg-core").PgTextBuilderInitial<"id", [string, ...string[]]>>>>;
|
|
9
9
|
};
|
|
10
10
|
export declare function generateTzColumnDefs(): {
|
|
11
|
-
createdAt: import("drizzle-orm").NotNull<import("drizzle-orm"
|
|
12
|
-
modifiedAt: import("drizzle-orm").NotNull<import("drizzle-orm"
|
|
11
|
+
createdAt: import("drizzle-orm").NotNull<import("drizzle-orm").HasDefault<import("drizzle-orm/pg-core").PgTimestampBuilderInitial<"created_at">>>;
|
|
12
|
+
modifiedAt: import("drizzle-orm").NotNull<import("drizzle-orm").HasDefault<import("drizzle-orm/pg-core").PgTimestampBuilderInitial<"modified_at">>>;
|
|
13
13
|
};
|
|
14
14
|
export declare function generateSoftDeleteColumnDefs(): {
|
|
15
15
|
deletedAt: import("drizzle-orm/pg-core").PgTimestampBuilderInitial<"deleted_at">;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MetadataAccessor } from '@loopback/metadata';
|
|
2
|
+
export interface IModelMetadata {
|
|
3
|
+
type?: 'entity' | 'model';
|
|
4
|
+
skipMigrate?: boolean;
|
|
5
|
+
settings?: Record<string, any>;
|
|
6
|
+
}
|
|
7
|
+
export declare const MODEL_METADATA: MetadataAccessor<IModelMetadata, ClassDecorator>;
|
|
8
|
+
export declare function model(metadata?: IModelMetadata): ClassDecorator;
|
|
9
|
+
export interface IRepositoryMetadata {
|
|
10
|
+
dataSource?: string | any;
|
|
11
|
+
model?: any;
|
|
12
|
+
}
|
|
13
|
+
export declare const REPOSITORY_METADATA: MetadataAccessor<IRepositoryMetadata, ClassDecorator>;
|
|
14
|
+
export declare function repository(metadata?: IRepositoryMetadata): ClassDecorator;
|
|
15
|
+
//# sourceMappingURL=decorators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../src/base/models/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,eAAO,MAAM,cAAc,kDAE1B,CAAC;AAEF,wBAAgB,KAAK,CAAC,QAAQ,GAAE,cAAmB,GAAG,cAAc,CAInE;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IAC1B,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,eAAO,MAAM,mBAAmB,uDAE/B,CAAC;AAEF,wBAAgB,UAAU,CAAC,QAAQ,GAAE,mBAAwB,GAAG,cAAc,CAI7E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.REPOSITORY_METADATA = exports.MODEL_METADATA = void 0;
|
|
4
|
+
exports.model = model;
|
|
5
|
+
exports.repository = repository;
|
|
6
|
+
const metadata_1 = require("@loopback/metadata");
|
|
7
|
+
exports.MODEL_METADATA = metadata_1.MetadataAccessor.create('gennext:model:metadata');
|
|
8
|
+
function model(metadata = {}) {
|
|
9
|
+
return function (target) {
|
|
10
|
+
Reflect.defineMetadata(exports.MODEL_METADATA.key, metadata, target);
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
exports.REPOSITORY_METADATA = metadata_1.MetadataAccessor.create('gennext:repository:metadata');
|
|
14
|
+
function repository(metadata = {}) {
|
|
15
|
+
return function (target) {
|
|
16
|
+
Reflect.defineMetadata(exports.REPOSITORY_METADATA.key, metadata, target);
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/base/models/decorators.ts"],"names":[],"mappings":";;;AAYA,sBAIC;AAWD,gCAIC;AA/BD,iDAAsD;AAQzC,QAAA,cAAc,GAAG,2BAAgB,CAAC,MAAM,CACnD,wBAAwB,CACzB,CAAC;AAEF,SAAgB,KAAK,CAAC,WAA2B,EAAE;IACjD,OAAO,UAAU,MAAW;QAC1B,OAAO,CAAC,cAAc,CAAC,sBAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC;AACJ,CAAC;AAOY,QAAA,mBAAmB,GAAG,2BAAgB,CAAC,MAAM,CACxD,6BAA6B,CAC9B,CAAC;AAEF,SAAgB,UAAU,CAAC,WAAgC,EAAE;IAC3D,OAAO,UAAU,MAAW;QAC1B,OAAO,CAAC,cAAc,CAAC,2BAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export * from './base.model';
|
|
2
2
|
export * from './column-defs';
|
|
3
3
|
export * from './drizzle.types';
|
|
4
|
+
export * from './model.helper';
|
|
5
|
+
export * from './decorators';
|
|
4
6
|
export type TBaseIdEntity = import('./base.model').BaseEntity<any>;
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAE7B,MAAM,MAAM,aAAa,GAAG,OAAO,cAAc,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC"}
|
|
@@ -17,4 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./base.model"), exports);
|
|
18
18
|
__exportStar(require("./column-defs"), exports);
|
|
19
19
|
__exportStar(require("./drizzle.types"), exports);
|
|
20
|
+
__exportStar(require("./model.helper"), exports);
|
|
21
|
+
__exportStar(require("./decorators"), exports);
|
|
20
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/base/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,gDAA8B;AAC9B,kDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/base/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,gDAA8B;AAC9B,kDAAgC;AAChC,iDAA+B;AAC/B,+CAA6B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BaseEntity } from './base.model';
|
|
2
|
+
import { TTableSchema } from './drizzle.types';
|
|
3
|
+
/**
|
|
4
|
+
* A helper to define a Gennex Model which is both a Drizzle Table and a LoopBack-compatible Entity.
|
|
5
|
+
*/
|
|
6
|
+
export declare function defineModel<S extends TTableSchema>(tableName: string, columns: any): BaseEntity<S>;
|
|
7
|
+
//# sourceMappingURL=model.helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.helper.d.ts","sourceRoot":"","sources":["../../../src/base/models/model.helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,YAAY,EAChD,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,GACX,UAAU,CAAC,CAAC,CAAC,CAMf"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineModel = defineModel;
|
|
4
|
+
const pg_core_1 = require("drizzle-orm/pg-core");
|
|
5
|
+
const base_model_1 = require("./base.model");
|
|
6
|
+
/**
|
|
7
|
+
* A helper to define a Gennex Model which is both a Drizzle Table and a LoopBack-compatible Entity.
|
|
8
|
+
*/
|
|
9
|
+
function defineModel(tableName, columns) {
|
|
10
|
+
const schema = (0, pg_core_1.pgTable)(tableName, columns);
|
|
11
|
+
return new base_model_1.BaseEntity({
|
|
12
|
+
name: tableName,
|
|
13
|
+
schema,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=model.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.helper.js","sourceRoot":"","sources":["../../../src/base/models/model.helper.ts"],"names":[],"mappings":";;AAOA,kCASC;AAhBD,iDAA8C;AAC9C,6CAA0C;AAG1C;;GAEG;AACH,SAAgB,WAAW,CACzB,SAAiB,EACjB,OAAY;IAEZ,MAAM,MAAM,GAAG,IAAA,iBAAO,EAAC,SAAS,EAAE,OAAO,CAAiB,CAAC;IAC3D,OAAO,IAAI,uBAAU,CAAC;QACpB,IAAI,EAAE,SAAS;QACf,MAAM;KACP,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type { SQL } from 'drizzle-orm';
|
|
2
1
|
import type { TTableSchema, TTableInsert, TTableObject } from '../models/drizzle.types';
|
|
3
2
|
import { ReadableRepository } from './readable.repository';
|
|
3
|
+
import type { Where } from '@loopback/repository';
|
|
4
4
|
export declare class DefaultCRUDRepository<S extends TTableSchema> extends ReadableRepository<S> {
|
|
5
5
|
create(data: TTableInsert<S>): Promise<TTableObject<S>>;
|
|
6
6
|
createMany(data: TTableInsert<S>[]): Promise<TTableObject<S>[]>;
|
|
7
7
|
updateById(id: string | number, data: Partial<TTableInsert<S>>): Promise<TTableObject<S> | null>;
|
|
8
|
-
|
|
8
|
+
updateAll(data: Partial<TTableInsert<S>>, where?: Where<TTableObject<S>>): Promise<TTableObject<S>[]>;
|
|
9
9
|
deleteById(id: string | number): Promise<boolean>;
|
|
10
|
-
|
|
10
|
+
deleteAll(where?: Where<TTableObject<S>>): Promise<number>;
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=default-crud.repository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-crud.repository.d.ts","sourceRoot":"","sources":["../../../src/base/repository/default-crud.repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"default-crud.repository.d.ts","sourceRoot":"","sources":["../../../src/base/repository/default-crud.repository.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,qBAAa,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IAChF,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAQvD,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAQ/D,UAAU,CACd,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAa5B,SAAS,CACb,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC9B,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAUvB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYjD,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CASjE"}
|
|
@@ -6,54 +6,57 @@ const readable_repository_1 = require("./readable.repository");
|
|
|
6
6
|
class DefaultCRUDRepository extends readable_repository_1.ReadableRepository {
|
|
7
7
|
async create(data) {
|
|
8
8
|
const result = await this.db
|
|
9
|
-
.insert(this.
|
|
9
|
+
.insert(this.entity.schema)
|
|
10
10
|
.values(data)
|
|
11
11
|
.returning();
|
|
12
12
|
return result[0];
|
|
13
13
|
}
|
|
14
14
|
async createMany(data) {
|
|
15
15
|
const result = await this.db
|
|
16
|
-
.insert(this.
|
|
16
|
+
.insert(this.entity.schema)
|
|
17
17
|
.values(data)
|
|
18
18
|
.returning();
|
|
19
19
|
return result;
|
|
20
20
|
}
|
|
21
21
|
async updateById(id, data) {
|
|
22
|
-
const pk = this.
|
|
22
|
+
const pk = this.entity.schema.id;
|
|
23
23
|
if (!pk) {
|
|
24
24
|
throw new Error('Table has no id column');
|
|
25
25
|
}
|
|
26
26
|
const result = await this.db
|
|
27
|
-
.update(this.
|
|
27
|
+
.update(this.entity.schema)
|
|
28
28
|
.set(data)
|
|
29
29
|
.where((0, drizzle_orm_1.eq)(pk, id))
|
|
30
30
|
.returning();
|
|
31
31
|
return result[0] || null;
|
|
32
32
|
}
|
|
33
|
-
async
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
.where(
|
|
38
|
-
|
|
33
|
+
async updateAll(data, where) {
|
|
34
|
+
const whereSql = this.filterBuilder.buildWhere(this.entity.schema, where);
|
|
35
|
+
let query = this.db.update(this.entity.schema).set(data);
|
|
36
|
+
if (whereSql) {
|
|
37
|
+
query = query.where(whereSql);
|
|
38
|
+
}
|
|
39
|
+
const result = await query.returning();
|
|
39
40
|
return result;
|
|
40
41
|
}
|
|
41
42
|
async deleteById(id) {
|
|
42
|
-
const pk = this.
|
|
43
|
+
const pk = this.entity.schema.id;
|
|
43
44
|
if (!pk) {
|
|
44
45
|
throw new Error('Table has no id column');
|
|
45
46
|
}
|
|
46
47
|
const result = await this.db
|
|
47
|
-
.delete(this.
|
|
48
|
+
.delete(this.entity.schema)
|
|
48
49
|
.where((0, drizzle_orm_1.eq)(pk, id))
|
|
49
50
|
.returning();
|
|
50
51
|
return result.length > 0;
|
|
51
52
|
}
|
|
52
|
-
async
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
.
|
|
53
|
+
async deleteAll(where) {
|
|
54
|
+
const whereSql = this.filterBuilder.buildWhere(this.entity.schema, where);
|
|
55
|
+
let query = this.db.delete(this.entity.schema);
|
|
56
|
+
if (whereSql) {
|
|
57
|
+
query = query.where(whereSql);
|
|
58
|
+
}
|
|
59
|
+
const result = await query.returning();
|
|
57
60
|
return result.length;
|
|
58
61
|
}
|
|
59
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-crud.repository.js","sourceRoot":"","sources":["../../../src/base/repository/default-crud.repository.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"default-crud.repository.js","sourceRoot":"","sources":["../../../src/base/repository/default-crud.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type SQL } from 'drizzle-orm';
|
|
2
|
+
import type { TTableSchema, TTableObject } from '../models/drizzle.types';
|
|
3
|
+
import type { Where } from '@loopback/repository';
|
|
4
|
+
export declare class FilterBuilder {
|
|
5
|
+
buildWhere<S extends TTableSchema>(schema: S, where?: Where<TTableObject<S>>): SQL | undefined;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=filter.builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.builder.d.ts","sourceRoot":"","sources":["../../../src/base/repository/filter.builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAaL,KAAK,GAAG,EACT,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,qBAAa,aAAa;IACxB,UAAU,CAAC,CAAC,SAAS,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,SAAS;CAsE/F"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FilterBuilder = void 0;
|
|
4
|
+
const drizzle_orm_1 = require("drizzle-orm");
|
|
5
|
+
class FilterBuilder {
|
|
6
|
+
buildWhere(schema, where) {
|
|
7
|
+
if (!where) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
const conditions = [];
|
|
11
|
+
for (const [key, value] of Object.entries(where)) {
|
|
12
|
+
const column = schema[key];
|
|
13
|
+
if (!column) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
if (key === 'and' && Array.isArray(value)) {
|
|
17
|
+
const subConditions = value.map(v => this.buildWhere(schema, v)).filter(Boolean);
|
|
18
|
+
if (subConditions.length) {
|
|
19
|
+
conditions.push((0, drizzle_orm_1.and)(...subConditions));
|
|
20
|
+
}
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
if (key === 'or' && Array.isArray(value)) {
|
|
24
|
+
const subConditions = value.map(v => this.buildWhere(schema, v)).filter(Boolean);
|
|
25
|
+
if (subConditions.length) {
|
|
26
|
+
conditions.push((0, drizzle_orm_1.or)(...subConditions));
|
|
27
|
+
}
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (value === null) {
|
|
31
|
+
conditions.push((0, drizzle_orm_1.isNull)(column));
|
|
32
|
+
}
|
|
33
|
+
else if (typeof value === 'object' && value !== null) {
|
|
34
|
+
for (const [op, val] of Object.entries(value)) {
|
|
35
|
+
switch (op) {
|
|
36
|
+
case 'eq':
|
|
37
|
+
conditions.push((0, drizzle_orm_1.eq)(column, val));
|
|
38
|
+
break;
|
|
39
|
+
case 'neq':
|
|
40
|
+
conditions.push((0, drizzle_orm_1.ne)(column, val));
|
|
41
|
+
break;
|
|
42
|
+
case 'gt':
|
|
43
|
+
conditions.push((0, drizzle_orm_1.gt)(column, val));
|
|
44
|
+
break;
|
|
45
|
+
case 'gte':
|
|
46
|
+
conditions.push((0, drizzle_orm_1.gte)(column, val));
|
|
47
|
+
break;
|
|
48
|
+
case 'lt':
|
|
49
|
+
conditions.push((0, drizzle_orm_1.lt)(column, val));
|
|
50
|
+
break;
|
|
51
|
+
case 'lte':
|
|
52
|
+
conditions.push((0, drizzle_orm_1.lte)(column, val));
|
|
53
|
+
break;
|
|
54
|
+
case 'inq':
|
|
55
|
+
conditions.push((0, drizzle_orm_1.inArray)(column, Array.isArray(val) ? val : [val]));
|
|
56
|
+
break;
|
|
57
|
+
case 'nin':
|
|
58
|
+
conditions.push((0, drizzle_orm_1.sql) `${column} NOT IN ${val}`);
|
|
59
|
+
break;
|
|
60
|
+
case 'like':
|
|
61
|
+
conditions.push((0, drizzle_orm_1.like)(column, val));
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
conditions.push((0, drizzle_orm_1.eq)(column, value));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return conditions.length > 0 ? (0, drizzle_orm_1.and)(...conditions) : undefined;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.FilterBuilder = FilterBuilder;
|
|
74
|
+
//# sourceMappingURL=filter.builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.builder.js","sourceRoot":"","sources":["../../../src/base/repository/filter.builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
import type { NodePgDatabase } from 'drizzle-orm/node-postgres';
|
|
2
|
-
import
|
|
3
|
-
import type { BaseEntity } from '../models';
|
|
2
|
+
import { BaseEntity } from '../models';
|
|
4
3
|
import type { TTableSchema, TTableObject } from '../models/drizzle.types';
|
|
5
4
|
import type { IBaseDataSource } from '../datasources';
|
|
5
|
+
import type { Filter, Where } from '@loopback/repository';
|
|
6
|
+
import { FilterBuilder } from './filter.builder';
|
|
6
7
|
export declare class ReadableRepository<S extends TTableSchema> {
|
|
7
8
|
protected readonly db: NodePgDatabase<any>;
|
|
8
|
-
protected readonly
|
|
9
|
-
protected readonly
|
|
9
|
+
protected readonly entity: BaseEntity<S>;
|
|
10
|
+
protected readonly filterBuilder: FilterBuilder;
|
|
10
11
|
constructor(opts: {
|
|
11
12
|
dataSource: IBaseDataSource<any, NodePgDatabase<any>>;
|
|
12
|
-
entityClass: BaseEntity<S>;
|
|
13
|
+
entityClass: new (...args: any[]) => BaseEntity<S>;
|
|
13
14
|
});
|
|
15
|
+
find(filter?: Filter<TTableObject<S>>): Promise<TTableObject<S>[]>;
|
|
14
16
|
findAll(opts?: {
|
|
15
17
|
limit?: number;
|
|
16
18
|
offset?: number;
|
|
17
19
|
}): Promise<TTableObject<S>[]>;
|
|
18
20
|
findById(id: string | number): Promise<TTableObject<S> | null>;
|
|
19
|
-
findOne(
|
|
20
|
-
count(where?:
|
|
21
|
-
exists(where:
|
|
21
|
+
findOne(filter?: Filter<TTableObject<S>>): Promise<TTableObject<S> | null>;
|
|
22
|
+
count(where?: Where<TTableObject<S>>): Promise<number>;
|
|
23
|
+
exists(where: Where<TTableObject<S>>): Promise<boolean>;
|
|
22
24
|
}
|
|
23
25
|
//# sourceMappingURL=readable.repository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readable.repository.d.ts","sourceRoot":"","sources":["../../../src/base/repository/readable.repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"readable.repository.d.ts","sourceRoot":"","sources":["../../../src/base/repository/readable.repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,qBAAa,kBAAkB,CAAC,CAAC,SAAS,YAAY;IACpD,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;gBAEpC,IAAI,EAAE;QAChB,UAAU,EAAE,eAAe,CAAC,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC;KACpD;IAMK,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAkBlE,OAAO,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IAI/E,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAa9D,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAK1E,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAYtD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CAI9D"}
|