@decaf-ts/for-fabric 0.1.22 → 0.1.23
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/for-fabric.cjs +1 -1
- package/dist/for-fabric.cjs.map +1 -1
- package/dist/for-fabric.js +1 -1
- package/dist/for-fabric.js.map +1 -1
- package/lib/client/FabricClientAdapter.cjs +26 -67
- package/lib/client/FabricClientAdapter.d.ts +27 -41
- package/lib/client/FabricClientAdapter.js.map +1 -1
- package/lib/client/FabricClientDispatch.cjs +1 -3
- package/lib/client/FabricClientDispatch.d.ts +6 -5
- package/lib/client/FabricClientDispatch.js.map +1 -1
- package/lib/client/FabricClientPaginator.cjs +5 -56
- package/lib/client/FabricClientPaginator.d.ts +6 -6
- package/lib/client/FabricClientPaginator.js.map +1 -1
- package/lib/client/FabricClientRepository.cjs +51 -104
- package/lib/client/FabricClientRepository.d.ts +21 -17
- package/lib/client/FabricClientRepository.js.map +1 -1
- package/lib/client/FabricClientStatement.cjs +7 -97
- package/lib/client/FabricClientStatement.d.ts +6 -7
- package/lib/client/FabricClientStatement.js.map +1 -1
- package/lib/client/erc20/FabricERC20ClientRepository.d.ts +5 -5
- package/lib/client/erc20/FabricERC20ClientRepository.js.map +1 -1
- package/lib/client/services/FabricEnrollmentService.d.ts +1 -1
- package/lib/contracts/ContractAdapter.cjs +53 -20
- package/lib/contracts/ContractAdapter.d.ts +3 -3
- package/lib/contracts/ContractAdapter.js.map +1 -1
- package/lib/contracts/ContractContext.cjs +2 -2
- package/lib/contracts/ContractContext.d.ts +1 -1
- package/lib/contracts/ContractContext.js.map +1 -1
- package/lib/contracts/FabricContractRepository.js.map +1 -1
- package/lib/contracts/crud/crud-contract.cjs +14 -0
- package/lib/contracts/crud/crud-contract.d.ts +15 -4
- package/lib/contracts/crud/crud-contract.js.map +1 -1
- package/lib/contracts/crud/serialized-crud-contract.cjs +58 -8
- package/lib/contracts/crud/serialized-crud-contract.d.ts +6 -2
- package/lib/contracts/crud/serialized-crud-contract.js.map +1 -1
- package/lib/contracts/types.d.ts +2 -2
- package/lib/esm/client/FabricClientAdapter.d.ts +27 -41
- package/lib/esm/client/FabricClientAdapter.js +26 -66
- package/lib/esm/client/FabricClientAdapter.js.map +1 -1
- package/lib/esm/client/FabricClientDispatch.d.ts +6 -5
- package/lib/esm/client/FabricClientDispatch.js +3 -5
- package/lib/esm/client/FabricClientDispatch.js.map +1 -1
- package/lib/esm/client/FabricClientPaginator.d.ts +6 -6
- package/lib/esm/client/FabricClientPaginator.js +6 -57
- package/lib/esm/client/FabricClientPaginator.js.map +1 -1
- package/lib/esm/client/FabricClientRepository.d.ts +21 -17
- package/lib/esm/client/FabricClientRepository.js +51 -104
- package/lib/esm/client/FabricClientRepository.js.map +1 -1
- package/lib/esm/client/FabricClientStatement.d.ts +6 -7
- package/lib/esm/client/FabricClientStatement.js +8 -98
- package/lib/esm/client/FabricClientStatement.js.map +1 -1
- package/lib/esm/client/erc20/FabricERC20ClientRepository.d.ts +5 -5
- package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +1 -1
- package/lib/esm/client/services/FabricEnrollmentService.d.ts +1 -1
- package/lib/esm/contracts/ContractAdapter.d.ts +3 -3
- package/lib/esm/contracts/ContractAdapter.js +53 -20
- package/lib/esm/contracts/ContractAdapter.js.map +1 -1
- package/lib/esm/contracts/ContractContext.d.ts +1 -1
- package/lib/esm/contracts/ContractContext.js +1 -1
- package/lib/esm/contracts/ContractContext.js.map +1 -1
- package/lib/esm/contracts/FabricContractRepository.js.map +1 -1
- package/lib/esm/contracts/crud/crud-contract.d.ts +15 -4
- package/lib/esm/contracts/crud/crud-contract.js +17 -3
- package/lib/esm/contracts/crud/crud-contract.js.map +1 -1
- package/lib/esm/contracts/crud/serialized-crud-contract.d.ts +6 -2
- package/lib/esm/contracts/crud/serialized-crud-contract.js +58 -8
- package/lib/esm/contracts/crud/serialized-crud-contract.js.map +1 -1
- package/lib/esm/contracts/types.d.ts +2 -2
- package/lib/esm/shared/decorators.d.ts +6 -7
- package/lib/esm/shared/decorators.js +73 -58
- package/lib/esm/shared/decorators.js.map +1 -1
- package/lib/esm/shared/overrides/overrides.js +39 -38
- package/lib/esm/shared/overrides/overrides.js.map +1 -1
- package/lib/esm/shared/types.d.ts +5 -9
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/shared/decorators.cjs +69 -54
- package/lib/shared/decorators.d.ts +6 -7
- package/lib/shared/decorators.js.map +1 -1
- package/lib/shared/overrides/overrides.cjs +39 -38
- package/lib/shared/overrides/overrides.js.map +1 -1
- package/lib/shared/types.d.ts +5 -9
- package/lib/version.cjs +1 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/lib/client/types.cjs +0 -3
- package/lib/client/types.d.ts +0 -7
- package/lib/client/types.js.map +0 -1
- package/lib/esm/client/types.d.ts +0 -7
- package/lib/esm/client/types.js +0 -2
- package/lib/esm/client/types.js.map +0 -1
|
@@ -1,65 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Context, OperationKeys } from "@decaf-ts/db-decorators";
|
|
3
|
-
import { toCamelCase, toPascalCase } from "@decaf-ts/logging";
|
|
1
|
+
import { Paginator, UnsupportedError, } from "@decaf-ts/core";
|
|
4
2
|
export class FabricClientPaginator extends Paginator {
|
|
5
3
|
constructor(adapter, query, size, clazz) {
|
|
6
4
|
super(adapter, query, size, clazz);
|
|
7
5
|
}
|
|
8
|
-
|
|
9
|
-
const contextArgs = await Context.args(OperationKeys.READ, this.clazz, args, this.adapter);
|
|
10
|
-
let statement = Object.assign({}, this.statement, {
|
|
11
|
-
args: [...this.statement.args],
|
|
12
|
-
params: { ...this.statement.params },
|
|
13
|
-
});
|
|
14
|
-
if (!this.statement.method.includes("pageBy"))
|
|
15
|
-
statement = this.prepare(statement);
|
|
16
|
-
statement.args.push(page);
|
|
17
|
-
page = this.validatePage(page);
|
|
18
|
-
const results = await this.adapter.raw(statement, ...contextArgs.args);
|
|
19
|
-
this._currentPage = page;
|
|
20
|
-
return results;
|
|
21
|
-
}
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
22
7
|
prepare(rawStatement) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
.filter(Boolean)
|
|
28
|
-
.filter((s) => ![
|
|
29
|
-
QueryClause.FIND_BY,
|
|
30
|
-
QueryClause.SELECT,
|
|
31
|
-
QueryClause.ORDER_BY,
|
|
32
|
-
QueryClause.GROUP_BY,
|
|
33
|
-
toPascalCase(OrderDirection.ASC),
|
|
34
|
-
toPascalCase(OrderDirection.DSC),
|
|
35
|
-
].find((c) => s.includes(c)));
|
|
36
|
-
const fullOrderBy = rawStatement.method.split(QueryClause.ORDER_BY);
|
|
37
|
-
let orderBy;
|
|
38
|
-
if (fullOrderBy.length) {
|
|
39
|
-
orderBy = fullOrderBy[1]
|
|
40
|
-
.split(new RegExp(`${[toPascalCase(OrderDirection.ASC), toPascalCase(OrderDirection.DSC), QueryClause.GROUP_BY + ".*", QueryClause.THEN_BY].join("|")}`, "i"))
|
|
41
|
-
.map((s) => s.trim())
|
|
42
|
-
.filter(Boolean);
|
|
43
|
-
orderBy = [
|
|
44
|
-
orderBy[0],
|
|
45
|
-
fullOrderBy[1].includes(toPascalCase(OrderDirection.ASC))
|
|
46
|
-
? OrderDirection.ASC
|
|
47
|
-
: OrderDirection.DSC,
|
|
48
|
-
];
|
|
49
|
-
}
|
|
50
|
-
if (attrs.length === 1 && attrs[0] === orderBy[0]) {
|
|
51
|
-
const attr = attrs[0];
|
|
52
|
-
return Object.assign({}, rawStatement, {
|
|
53
|
-
method: "pageBy",
|
|
54
|
-
args: [toCamelCase(attr), orderBy[1], this.size],
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
return Object.assign({}, rawStatement, {
|
|
59
|
-
method: rawStatement.method.replace(QueryClause.FIND_BY, "pageBy"),
|
|
60
|
-
args: [...rawStatement.args, this.size],
|
|
61
|
-
});
|
|
62
|
-
}
|
|
8
|
+
throw new UnsupportedError(`Raw query access must be implemented by a subclass. only prepared statements are natively available`);
|
|
9
|
+
}
|
|
10
|
+
page(page = 1, ...args) {
|
|
11
|
+
return super.page(page, ...args); // this will fail for non-prepared statements
|
|
63
12
|
}
|
|
64
13
|
}
|
|
65
14
|
//# sourceMappingURL=FabricClientPaginator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FabricClientPaginator.js","sourceRoot":"","sources":["../../../src/client/FabricClientPaginator.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"FabricClientPaginator.js","sourceRoot":"","sources":["../../../src/client/FabricClientPaginator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,SAAS,EAET,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAMxB,MAAM,OAAO,qBAAuC,SAAQ,SAI3D;IACC,YACE,OAA4B,EAC5B,KAA0C,EAC1C,IAAY,EACZ,KAAqB;QAErB,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,6DAA6D;IACnD,OAAO,CAAC,YAAwB;QACxC,MAAM,IAAI,gBAAgB,CACxB,qGAAqG,CACtG,CAAC;IACJ,CAAC;IAEQ,IAAI,CACX,OAAe,CAAC,EAChB,GAAG,IAA6B;QAEhC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,6CAA6C;IACjF,CAAC;CACF"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { OrderDirection,
|
|
2
|
-
import type {
|
|
1
|
+
import { OrderDirection, Repository, ContextOf } from "@decaf-ts/core";
|
|
2
|
+
import type { MaybeContextualArg } from "@decaf-ts/core";
|
|
3
3
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
4
4
|
import { Constructor } from "@decaf-ts/decoration";
|
|
5
|
-
import type
|
|
6
|
-
import { PrimaryKeyType } from "@decaf-ts/db-decorators";
|
|
5
|
+
import { type FabricClientAdapter } from "./FabricClientAdapter";
|
|
7
6
|
/**
|
|
8
7
|
* @description Repository implementation for Fabric client operations
|
|
9
8
|
* @summary Extends the generic Repository to prepare context and arguments for CRUD operations executed via a Fabric client Adapter, wiring RepositoryFlags and Fabric-specific overrides.
|
|
@@ -32,17 +31,22 @@ import { PrimaryKeyType } from "@decaf-ts/db-decorators";
|
|
|
32
31
|
* Adapter-->>Repo: result
|
|
33
32
|
* Repo-->>App: model
|
|
34
33
|
*/
|
|
35
|
-
export declare class FabricClientRepository<M extends Model> extends Repository<M,
|
|
36
|
-
_overrides
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
34
|
+
export declare class FabricClientRepository<M extends Model, A extends FabricClientAdapter> extends Repository<M, A> {
|
|
35
|
+
protected _overrides: Partial<import("@decaf-ts/core").FlagsOf<ContextOf<A>>> & Partial<import("@decaf-ts/db-decorators").FlagsOf<ContextOf<A>>> & {
|
|
36
|
+
ignoreValidation: boolean;
|
|
37
|
+
ignoreHandlers: boolean;
|
|
38
|
+
allowRawStatements: boolean;
|
|
39
|
+
forcePrepareSimpleQueries: boolean;
|
|
40
|
+
forcePrepareComplexQueries: boolean;
|
|
41
|
+
};
|
|
42
|
+
constructor(adapter?: A, clazz?: Constructor<M>);
|
|
43
|
+
paginateBy(key: keyof M, order: OrderDirection, size: number, ...args: MaybeContextualArg<ContextOf<A>>): Promise<import("@decaf-ts/core").Paginator<M, M[], any>>;
|
|
44
|
+
listBy(key: keyof M, order: OrderDirection, ...args: MaybeContextualArg<ContextOf<A>>): Promise<any>;
|
|
45
|
+
findBy(key: keyof M, value: any, ...args: MaybeContextualArg<ContextOf<A>>): Promise<M[]>;
|
|
46
|
+
findOneBy(key: keyof M, value: any, ...args: MaybeContextualArg<ContextOf<A>>): Promise<M>;
|
|
47
|
+
statement(name: string, ...args: MaybeContextualArg<ContextOf<A>>): Promise<any>;
|
|
48
|
+
create(model: M, ...args: MaybeContextualArg<ContextOf<A>>): Promise<M>;
|
|
49
|
+
update(model: M, ...args: MaybeContextualArg<ContextOf<A>>): Promise<M>;
|
|
50
|
+
createAll(models: M[], ...args: MaybeContextualArg<ContextOf<A>>): Promise<M[]>;
|
|
51
|
+
updateAll(models: M[], ...args: MaybeContextualArg<ContextOf<A>>): Promise<M[]>;
|
|
48
52
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { PersistenceKeys, Repository,
|
|
1
|
+
import { PersistenceKeys, Repository, Context, PreparedStatementKeys, } from "@decaf-ts/core";
|
|
2
2
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
3
|
-
import { Context, OperationKeys, enforceDBDecorators, ValidationError, InternalError, reduceErrorsToPrint, } from "@decaf-ts/db-decorators";
|
|
4
3
|
/**
|
|
5
4
|
* @description Repository implementation for Fabric client operations
|
|
6
5
|
* @summary Extends the generic Repository to prepare context and arguments for CRUD operations executed via a Fabric client Adapter, wiring RepositoryFlags and Fabric-specific overrides.
|
|
@@ -32,132 +31,80 @@ import { Context, OperationKeys, enforceDBDecorators, ValidationError, InternalE
|
|
|
32
31
|
export class FabricClientRepository extends Repository {
|
|
33
32
|
constructor(adapter, clazz) {
|
|
34
33
|
super(adapter, clazz);
|
|
35
|
-
this._overrides = {
|
|
36
|
-
ignoreValidation:
|
|
34
|
+
this._overrides = Object.assign({}, super["_overrides"], {
|
|
35
|
+
ignoreValidation: false,
|
|
37
36
|
ignoreHandlers: true,
|
|
38
|
-
|
|
37
|
+
allowRawStatements: false,
|
|
38
|
+
forcePrepareSimpleQueries: true,
|
|
39
|
+
forcePrepareComplexQueries: true,
|
|
40
|
+
});
|
|
39
41
|
}
|
|
40
42
|
async paginateBy(key, order, size, ...args) {
|
|
41
|
-
const contextArgs = await Context.args(
|
|
43
|
+
const contextArgs = await Context.args(PreparedStatementKeys.PAGE_BY, this.class, args, this.adapter, this._overrides || {});
|
|
42
44
|
const { log, ctxArgs } = this.logCtx(contextArgs.args, this.paginateBy);
|
|
43
45
|
log.verbose(`paginating ${Model.tableName(this.class)} with page size ${size}`);
|
|
44
|
-
return
|
|
46
|
+
return this.select()
|
|
47
|
+
.orderBy([key, order])
|
|
48
|
+
.paginate(size, ...ctxArgs);
|
|
45
49
|
}
|
|
46
50
|
async listBy(key, order, ...args) {
|
|
47
51
|
const contextArgs = await Context.args("list", this.class, args, this.adapter, this._overrides || {});
|
|
48
52
|
const { log, ctxArgs } = this.logCtx(contextArgs.args, this.listBy);
|
|
49
53
|
log.verbose(`listing ${Model.tableName(this.class)} by ${key} ${order}`);
|
|
50
|
-
return (await this.statement(this.listBy.name, key, order, ...ctxArgs));
|
|
54
|
+
return (await this.statement(this.listBy.name, key, { direction: order }, ...ctxArgs));
|
|
55
|
+
}
|
|
56
|
+
async findBy(key, value, ...args) {
|
|
57
|
+
const contextArgs = await Context.args(PreparedStatementKeys.FIND_BY, this.class, args, this.adapter, this._overrides || {});
|
|
58
|
+
const { log, ctxArgs } = this.logCtx(contextArgs.args, this.findBy);
|
|
59
|
+
log.verbose(`finding all ${Model.tableName(this.class)} with ${key} ${value}`);
|
|
60
|
+
return (await this.statement(this.findBy.name, key, value, {}, ...ctxArgs));
|
|
51
61
|
}
|
|
52
62
|
async findOneBy(key, value, ...args) {
|
|
53
|
-
const contextArgs = await Context.args(
|
|
63
|
+
const contextArgs = await Context.args(PreparedStatementKeys.FIND_ONE_BY, this.class, args, this.adapter, this._overrides || {});
|
|
54
64
|
const { log, ctxArgs } = this.logCtx(contextArgs.args, this.findOneBy);
|
|
55
|
-
log.verbose(`finding ${Model.tableName(this.class)} with ${key} ${value}`);
|
|
56
|
-
return (await this.statement(this.findOneBy.name, key, value, ...ctxArgs));
|
|
65
|
+
log.verbose(`finding One ${Model.tableName(this.class)} with ${key} ${value}`);
|
|
66
|
+
return (await this.statement(this.findOneBy.name, key, value, {}, ...ctxArgs));
|
|
57
67
|
}
|
|
58
68
|
async statement(name, ...args) {
|
|
59
|
-
const contextArgs = await Context.args(
|
|
60
|
-
const { log
|
|
69
|
+
const contextArgs = await Context.args(PersistenceKeys.STATEMENT, this.class, args, this.adapter, this._overrides || {});
|
|
70
|
+
const { log } = this.logCtx(contextArgs.args, this.statement);
|
|
61
71
|
log.verbose(`Executing prepared statement ${name}`);
|
|
62
|
-
return this.adapter.evaluateTransaction(PersistenceKeys.STATEMENT,
|
|
63
|
-
}
|
|
64
|
-
async createPrefix(model, ...args) {
|
|
65
|
-
const contextArgs = await Context.args(OperationKeys.CREATE, this.class, args, this.adapter, this._overrides || {});
|
|
66
|
-
const ignoreHandlers = contextArgs.context.get("ignoreHandlers");
|
|
67
|
-
const ignoreValidate = contextArgs.context.get("ignoreValidation");
|
|
68
|
-
model = new this.class(model);
|
|
69
|
-
if (!ignoreHandlers)
|
|
70
|
-
await enforceDBDecorators(this, contextArgs.context, model, OperationKeys.CREATE, OperationKeys.ON);
|
|
71
|
-
if (!ignoreValidate) {
|
|
72
|
-
const errors = await Promise.resolve(model.hasErrors(...(contextArgs.context.get("ignoredValidationProperties") || [])));
|
|
73
|
-
if (errors)
|
|
74
|
-
throw new ValidationError(errors.toString());
|
|
75
|
-
}
|
|
76
|
-
return [model, ...contextArgs.args];
|
|
77
|
-
}
|
|
78
|
-
async createAllPrefix(models, ...args) {
|
|
79
|
-
const contextArgs = await Context.args(OperationKeys.CREATE, this.class, args, this.adapter, this._overrides || {});
|
|
80
|
-
const ignoreHandlers = contextArgs.context.get("ignoreHandlers");
|
|
81
|
-
const ignoreValidate = contextArgs.context.get("ignoreValidation");
|
|
82
|
-
if (!models.length)
|
|
83
|
-
return [models, ...contextArgs.args];
|
|
84
|
-
const opts = Model.sequenceFor(models[0]);
|
|
85
|
-
let ids = [];
|
|
86
|
-
if (opts.type) {
|
|
87
|
-
if (!opts.name)
|
|
88
|
-
opts.name = Sequence.pk(models[0]);
|
|
89
|
-
ids = await (await this.adapter.Sequence(opts)).range(models.length, ...contextArgs.args);
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
ids = models.map((m, i) => {
|
|
93
|
-
if (typeof m[this.pk] === "undefined")
|
|
94
|
-
throw new InternalError(`Primary key is not defined for model in position ${i}`);
|
|
95
|
-
return m[this.pk];
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
models = await Promise.all(models.map(async (m, i) => {
|
|
99
|
-
m = new this.class(m);
|
|
100
|
-
if (opts.type) {
|
|
101
|
-
m[this.pk] = (opts.type !== "String"
|
|
102
|
-
? ids[i]
|
|
103
|
-
: opts.generated
|
|
104
|
-
? ids[i]
|
|
105
|
-
: `${m[this.pk]}`.toString());
|
|
106
|
-
}
|
|
107
|
-
if (!ignoreHandlers)
|
|
108
|
-
await enforceDBDecorators(this, contextArgs.context, m, OperationKeys.CREATE, OperationKeys.ON);
|
|
109
|
-
return m;
|
|
110
|
-
}));
|
|
111
|
-
if (!ignoreValidate) {
|
|
112
|
-
const ignoredProps = contextArgs.context.get("ignoredValidationProperties") || [];
|
|
113
|
-
const errors = await Promise.all(models.map((m) => Promise.resolve(m.hasErrors(...ignoredProps))));
|
|
114
|
-
const errorMessages = reduceErrorsToPrint(errors);
|
|
115
|
-
if (errorMessages)
|
|
116
|
-
throw new ValidationError(errorMessages);
|
|
117
|
-
}
|
|
118
|
-
return [models, ...contextArgs.args];
|
|
119
|
-
}
|
|
120
|
-
async readPrefix(key, ...args) {
|
|
121
|
-
const contextArgs = await Context.args(OperationKeys.READ, this.class, args, this.adapter, this._overrides || {});
|
|
122
|
-
const model = new this.class();
|
|
123
|
-
model[this.pk] = key;
|
|
124
|
-
await enforceDBDecorators(this, contextArgs.context, model, OperationKeys.READ, OperationKeys.ON);
|
|
125
|
-
return [key, ...contextArgs.args];
|
|
126
|
-
}
|
|
127
|
-
async readAllPrefix(keys, ...args) {
|
|
128
|
-
const contextArgs = await Context.args(OperationKeys.READ, this.class, args, this.adapter, this._overrides || {});
|
|
129
|
-
await Promise.all(keys.map(async (k) => {
|
|
130
|
-
const m = new this.class();
|
|
131
|
-
m[this.pk] = k;
|
|
132
|
-
return enforceDBDecorators(this, contextArgs.context, m, OperationKeys.READ, OperationKeys.ON);
|
|
133
|
-
}));
|
|
134
|
-
return [keys, ...contextArgs.args];
|
|
72
|
+
return this.adapter.evaluateTransaction(PersistenceKeys.STATEMENT, contextArgs.args);
|
|
135
73
|
}
|
|
136
|
-
async
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
const oldModel = await this.read(pk, ...contextArgs.args);
|
|
144
|
-
model = Model.merge(oldModel, model, this.class);
|
|
145
|
-
if (!ignoreHandlers)
|
|
146
|
-
await enforceDBDecorators(this, contextArgs.context, model, OperationKeys.UPDATE, OperationKeys.ON, oldModel);
|
|
147
|
-
if (!ignoreValidate) {
|
|
148
|
-
const errors = await Promise.resolve(model.hasErrors(oldModel, ...Model.relations(this.class), ...(contextArgs.context.get("ignoredValidationProperties") || [])));
|
|
149
|
-
if (errors)
|
|
150
|
-
throw new ValidationError(errors.toString());
|
|
151
|
-
}
|
|
152
|
-
return [model, ...contextArgs.args];
|
|
74
|
+
async create(model, ...args) {
|
|
75
|
+
const { ctx, log, ctxArgs } = this.logCtx(args, this.create);
|
|
76
|
+
log.debug(`Creating new ${this.class.name} in table ${Model.tableName(this.class)}`);
|
|
77
|
+
// eslint-disable-next-line prefer-const
|
|
78
|
+
let { record, id, transient } = this.adapter.prepare(model, ctx);
|
|
79
|
+
record = await this.adapter.create(this.class, id, record, transient, ...ctxArgs);
|
|
80
|
+
return this.adapter.revert(record, this.class, id, transient, ctx);
|
|
153
81
|
}
|
|
154
82
|
async update(model, ...args) {
|
|
155
83
|
const { ctxArgs, log, ctx } = this.logCtx(args, this.update);
|
|
156
84
|
// eslint-disable-next-line prefer-const
|
|
157
85
|
let { record, id, transient } = this.adapter.prepare(model, ctx);
|
|
158
86
|
log.debug(`updating ${this.class.name} in table ${Model.tableName(this.class)} with id ${id}`);
|
|
159
|
-
record = await this.adapter.update(this.class, id, record, ...ctxArgs);
|
|
87
|
+
record = await this.adapter.update(this.class, id, record, transient, ...ctxArgs);
|
|
160
88
|
return this.adapter.revert(record, this.class, id, transient, ctx);
|
|
161
89
|
}
|
|
90
|
+
async createAll(models, ...args) {
|
|
91
|
+
if (!models.length)
|
|
92
|
+
return models;
|
|
93
|
+
const { ctx, log, ctxArgs } = this.logCtx(args, this.createAll);
|
|
94
|
+
log.debug(`Creating ${models.length} new ${this.class.name} in table ${Model.tableName(this.class)}`);
|
|
95
|
+
const prepared = models.map((m) => this.adapter.prepare(m, ctx));
|
|
96
|
+
const ids = prepared.map((p) => p.id);
|
|
97
|
+
let records = prepared.map((p) => p.record);
|
|
98
|
+
const transient = prepared.map((p) => p.transient);
|
|
99
|
+
records = await this.adapter.createAll(this.class, ids, records, transient, ...ctxArgs);
|
|
100
|
+
return records.map((r, i) => this.adapter.revert(r, this.class, ids[i], ctx.get("rebuildWithTransient") ? prepared[i].transient : undefined, ctx));
|
|
101
|
+
}
|
|
102
|
+
async updateAll(models, ...args) {
|
|
103
|
+
const { ctx, log, ctxArgs } = this.logCtx(args, this.updateAll);
|
|
104
|
+
log.debug(`Updating ${models.length} new ${this.class.name} in table ${Model.tableName(this.class)}`);
|
|
105
|
+
const records = models.map((m) => this.adapter.prepare(m, ctx));
|
|
106
|
+
const updated = await this.adapter.updateAll(this.class, records.map((r) => r.id), records.map((r) => r.record), records.map((r) => r.transient), ...ctxArgs);
|
|
107
|
+
return updated.map((u, i) => this.adapter.revert(u, this.class, records[i].id, ctx.get("rebuildWithTransient") ? records[i].transient : undefined, ctx));
|
|
108
|
+
}
|
|
162
109
|
}
|
|
163
110
|
//# sourceMappingURL=FabricClientRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FabricClientRepository.js","sourceRoot":"","sources":["../../../src/client/FabricClientRepository.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"FabricClientRepository.js","sourceRoot":"","sources":["../../../src/client/FabricClientRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AdapterFlags, Condition, Statement } from "@decaf-ts/core";
|
|
2
2
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
3
|
-
import { FabricQuery } from "./types";
|
|
4
3
|
import { FabricClientAdapter } from "./FabricClientAdapter";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
protected parseCondition(condition: Condition<M
|
|
4
|
+
import { MangoQuery } from "@decaf-ts/for-couchdb";
|
|
5
|
+
export declare class FabricClientStatement<M extends Model, R> extends Statement<M, FabricClientAdapter, R, MangoQuery> {
|
|
6
|
+
constructor(adapter: FabricClientAdapter, overrides?: Partial<AdapterFlags>);
|
|
7
|
+
protected build(): MangoQuery;
|
|
8
|
+
protected parseCondition(condition: Condition<M>, ...args: any[]): MangoQuery;
|
|
10
9
|
}
|
|
@@ -1,107 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { toCamelCase } from "@decaf-ts/logging";
|
|
3
|
-
import { FabricClientPaginator } from "./FabricClientPaginator.js";
|
|
4
|
-
import { InternalError } from "@decaf-ts/db-decorators";
|
|
1
|
+
import { Statement, UnsupportedError, } from "@decaf-ts/core";
|
|
5
2
|
export class FabricClientStatement extends Statement {
|
|
6
|
-
constructor(adapter) {
|
|
7
|
-
super(adapter);
|
|
3
|
+
constructor(adapter, overrides) {
|
|
4
|
+
super(adapter, overrides);
|
|
8
5
|
}
|
|
9
6
|
build() {
|
|
10
|
-
|
|
11
|
-
const args = [];
|
|
12
|
-
const params = {};
|
|
13
|
-
if (this.whereCondition) {
|
|
14
|
-
const parsed = this.parseCondition(this.whereCondition);
|
|
15
|
-
method.push(parsed.method);
|
|
16
|
-
if (parsed.args && parsed.args.length)
|
|
17
|
-
args.push(...parsed.args);
|
|
18
|
-
}
|
|
19
|
-
if (this.selectSelector)
|
|
20
|
-
method.push(QueryClause.SELECT, this.selectSelector.join(` ${QueryClause.AND.toLowerCase()} `));
|
|
21
|
-
if (this.orderBySelector)
|
|
22
|
-
method.push(QueryClause.ORDER_BY, ...this.orderBySelector);
|
|
23
|
-
if (this.groupBySelector)
|
|
24
|
-
method.push(QueryClause.GROUP_BY, this.groupBySelector);
|
|
25
|
-
if (this.limitSelector)
|
|
26
|
-
params.limit = this.limitSelector;
|
|
27
|
-
if (this.offsetSelector) {
|
|
28
|
-
params.skip = this.offsetSelector;
|
|
29
|
-
}
|
|
30
|
-
return {
|
|
31
|
-
class: this.fromSelector,
|
|
32
|
-
method: toCamelCase(method.join(" ")),
|
|
33
|
-
args: args,
|
|
34
|
-
params: Object.keys(params).length ? params : undefined,
|
|
35
|
-
};
|
|
7
|
+
throw new UnsupportedError(`This method is only called is prepared statements are not used. If so, a dedicated implementation for the native queries used is required`);
|
|
36
8
|
}
|
|
37
|
-
|
|
9
|
+
parseCondition(
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
11
|
+
condition,
|
|
38
12
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
39
13
|
...args) {
|
|
40
|
-
|
|
41
|
-
const query = this.build();
|
|
42
|
-
return new FabricClientPaginator(this.adapter, query, size, this.fromSelector);
|
|
43
|
-
}
|
|
44
|
-
catch (e) {
|
|
45
|
-
throw new InternalError(e);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
parseCondition(condition) {
|
|
49
|
-
// @ts-expect-error accessing protected properties
|
|
50
|
-
// eslint-disable-next-line prefer-const
|
|
51
|
-
let { attr1, operator, comparison } = condition;
|
|
52
|
-
const result = {};
|
|
53
|
-
switch (operator) {
|
|
54
|
-
case GroupOperator.AND:
|
|
55
|
-
case GroupOperator.OR: {
|
|
56
|
-
let side1 = attr1, side2 = comparison;
|
|
57
|
-
if (typeof attr1 !== "string") {
|
|
58
|
-
const condition1 = this.parseCondition(attr1);
|
|
59
|
-
side1 = condition1.method;
|
|
60
|
-
result.args = [...(result.args || []), ...(condition1.args || [])];
|
|
61
|
-
}
|
|
62
|
-
if (comparison instanceof Condition) {
|
|
63
|
-
const condition2 = this.parseCondition(comparison);
|
|
64
|
-
side2 = condition2.method;
|
|
65
|
-
result.args = [...(result.args || []), ...(condition2.args || [])];
|
|
66
|
-
}
|
|
67
|
-
result.method = `${side1} ${operator.toLowerCase()} ${side2}`;
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
case Operator.EQUAL:
|
|
71
|
-
result.method = attr1;
|
|
72
|
-
result.args = [...(result.args || []), comparison];
|
|
73
|
-
break;
|
|
74
|
-
case Operator.DIFFERENT:
|
|
75
|
-
result.method = `${attr1} diff`;
|
|
76
|
-
result.args = [...(result.args || []), comparison];
|
|
77
|
-
break;
|
|
78
|
-
case Operator.REGEXP:
|
|
79
|
-
result.method = `${attr1} matches`;
|
|
80
|
-
result.args = [...(result.args || []), comparison];
|
|
81
|
-
break;
|
|
82
|
-
case Operator.BIGGER:
|
|
83
|
-
result.method = `${attr1} bigger`;
|
|
84
|
-
result.args = [...(result.args || []), comparison];
|
|
85
|
-
break;
|
|
86
|
-
case Operator.BIGGER_EQ:
|
|
87
|
-
result.method = `${attr1} bigger than equal`;
|
|
88
|
-
break;
|
|
89
|
-
case Operator.SMALLER:
|
|
90
|
-
result.method = `${attr1} less`;
|
|
91
|
-
result.args = [...(result.args || []), comparison];
|
|
92
|
-
break;
|
|
93
|
-
case Operator.SMALLER_EQ:
|
|
94
|
-
result.method = `${attr1} less than equal`;
|
|
95
|
-
result.args = [...(result.args || []), comparison];
|
|
96
|
-
break;
|
|
97
|
-
case Operator.IN:
|
|
98
|
-
result.method = `${attr1} in`;
|
|
99
|
-
result.args = [...(result.args || []), comparison];
|
|
100
|
-
break;
|
|
101
|
-
default:
|
|
102
|
-
throw new QueryError(`Unsupported operator ${operator}`);
|
|
103
|
-
}
|
|
104
|
-
return result;
|
|
14
|
+
throw new UnsupportedError(`This method is only called is prepared statements are not used. Is so, a dedicated implementation for the native queries used is required`);
|
|
105
15
|
}
|
|
106
16
|
}
|
|
107
17
|
//# sourceMappingURL=FabricClientStatement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FabricClientStatement.js","sourceRoot":"","sources":["../../../src/client/FabricClientStatement.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"FabricClientStatement.js","sourceRoot":"","sources":["../../../src/client/FabricClientStatement.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EACT,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAKxB,MAAM,OAAO,qBAA0C,SAAQ,SAK9D;IACC,YAAY,OAA4B,EAAE,SAAiC;QACzE,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5B,CAAC;IAEkB,KAAK;QACtB,MAAM,IAAI,gBAAgB,CACxB,2IAA2I,CAC5I,CAAC;IACJ,CAAC;IAEkB,cAAc;IAC/B,6DAA6D;IAC7D,SAAuB;IACvB,6DAA6D;IAC7D,GAAG,IAAW;QAEd,MAAM,IAAI,gBAAgB,CACxB,2IAA2I,CAC5I,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { FabricClientRepository } from "../FabricClientRepository";
|
|
2
2
|
import { ERC20Token, ERC20Wallet } from "../../contracts/erc20/models";
|
|
3
3
|
import { Model, Serializer } from "@decaf-ts/decorator-validation";
|
|
4
|
-
import { FabricClientAdapter
|
|
5
|
-
import { ContextualArgs, EventIds } from "@decaf-ts/core";
|
|
4
|
+
import { FabricClientAdapter } from "../FabricClientAdapter";
|
|
5
|
+
import { ContextOf, ContextualArgs, EventIds } from "@decaf-ts/core";
|
|
6
6
|
import { BulkCrudOperationKeys, OperationKeys } from "@decaf-ts/db-decorators";
|
|
7
7
|
import { Constructor } from "@decaf-ts/decoration";
|
|
8
8
|
/**
|
|
9
9
|
* Repository for interacting with ERC20 contracts on a Hyperledger Fabric network.
|
|
10
10
|
* Extends the base FabricClientRepository class and utilizes the ClientSerializer for data serialization.
|
|
11
11
|
*/
|
|
12
|
-
export declare class FabricERC20ClientRepository extends FabricClientRepository<ERC20Wallet> {
|
|
12
|
+
export declare class FabricERC20ClientRepository<A extends FabricClientAdapter> extends FabricClientRepository<ERC20Wallet, A> {
|
|
13
13
|
private static serializer;
|
|
14
14
|
protected readonly serializer: Serializer<any>;
|
|
15
15
|
private static decoder;
|
|
@@ -23,7 +23,7 @@ export declare class FabricERC20ClientRepository extends FabricClientRepository<
|
|
|
23
23
|
* @return {Promise<void>} A promise that resolves when all observers have been notified.
|
|
24
24
|
* @throws {InternalError} If the observer handler is not initialized.
|
|
25
25
|
*/
|
|
26
|
-
updateObservers<M extends Model>(table: Constructor<M> | string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, ...args: ContextualArgs<
|
|
26
|
+
updateObservers<M extends Model>(table: Constructor<M> | string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, ...args: ContextualArgs<ContextOf<A>>): Promise<void>;
|
|
27
27
|
/**
|
|
28
28
|
* Decodes a Uint8Array into a string using the TextDecoder.
|
|
29
29
|
*
|
|
@@ -31,7 +31,7 @@ export declare class FabricERC20ClientRepository extends FabricClientRepository<
|
|
|
31
31
|
* @returns The decoded string.
|
|
32
32
|
*/
|
|
33
33
|
decode(data: Uint8Array): string;
|
|
34
|
-
constructor(adapter?:
|
|
34
|
+
constructor(adapter?: A);
|
|
35
35
|
/**
|
|
36
36
|
* Retrieves the name of the ERC20 token.
|
|
37
37
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FabricERC20ClientRepository.js","sourceRoot":"","sources":["../../../../src/client/erc20/FabricERC20ClientRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,uCAAkC;AACnE,OAAO,EAAc,WAAW,EAAE,0CAAqC;AACvE,OAAO,EAAE,KAAK,EAAc,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"FabricERC20ClientRepository.js","sourceRoot":"","sources":["../../../../src/client/erc20/FabricERC20ClientRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -115,7 +115,7 @@ export declare class FabricEnrollmentService extends LoggedClass {
|
|
|
115
115
|
* @return {Promise<FabricIdentity[]>} The list of identities registered in the CA.
|
|
116
116
|
*/
|
|
117
117
|
getIdentities(): Promise<FabricIdentity[]>;
|
|
118
|
-
protected parseError(e: Error):
|
|
118
|
+
protected parseError(e: Error): AuthorizationError | ConflictError;
|
|
119
119
|
/**
|
|
120
120
|
* @description Retrieve affiliations from the CA.
|
|
121
121
|
* @summary Queries the CA for the list of affiliations available under the configured CA.
|