@decaf-ts/core 0.7.11 → 0.7.13
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 +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/lib/esm/identity/decorators.d.ts +1 -1
- package/lib/esm/identity/decorators.js +11 -4
- package/lib/esm/identity/decorators.js.map +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/interfaces/ContextuallyLogged.d.ts +2 -2
- package/lib/esm/model/construction.d.ts +4 -5
- package/lib/esm/model/construction.js +1 -1
- package/lib/esm/model/construction.js.map +1 -1
- package/lib/esm/model/decorators.d.ts +1 -0
- package/lib/esm/model/decorators.js +13 -6
- package/lib/esm/model/decorators.js.map +1 -1
- package/lib/esm/model/types.d.ts +1 -1
- package/lib/esm/overrides/Metadata.d.ts +4 -2
- package/lib/esm/overrides/Model.d.ts +10 -0
- package/lib/esm/overrides/decoration.d.ts +1 -0
- package/lib/esm/overrides/decoration.js +6 -0
- package/lib/esm/overrides/decoration.js.map +1 -0
- package/lib/esm/overrides/index.d.ts +1 -0
- package/lib/esm/overrides/index.js +1 -0
- package/lib/esm/overrides/index.js.map +1 -1
- package/lib/esm/overrides/overrides.js +18 -1
- package/lib/esm/overrides/overrides.js.map +1 -1
- package/lib/esm/persistence/Adapter.d.ts +8 -4
- package/lib/esm/persistence/Adapter.js +4 -3
- package/lib/esm/persistence/Adapter.js.map +1 -1
- package/lib/esm/persistence/Context.d.ts +5 -0
- package/lib/esm/persistence/Context.js +7 -0
- package/lib/esm/persistence/Context.js.map +1 -0
- package/lib/esm/persistence/Dispatch.d.ts +2 -2
- package/lib/esm/persistence/Dispatch.js.map +1 -1
- package/lib/esm/persistence/ObserverHandler.js.map +1 -1
- package/lib/esm/persistence/Sequence.d.ts +1 -1
- package/lib/esm/persistence/Sequence.js +2 -1
- package/lib/esm/persistence/Sequence.js.map +1 -1
- package/lib/esm/persistence/constants.d.ts +4 -1
- package/lib/esm/persistence/constants.js +8 -0
- package/lib/esm/persistence/constants.js.map +1 -1
- package/lib/esm/persistence/index.d.ts +1 -0
- package/lib/esm/persistence/index.js +1 -0
- package/lib/esm/persistence/index.js.map +1 -1
- package/lib/esm/persistence/migrations.js +2 -1
- package/lib/esm/persistence/migrations.js.map +1 -1
- package/lib/esm/persistence/types.d.ts +18 -5
- package/lib/esm/query/Condition.d.ts +3 -1
- package/lib/esm/query/Condition.js +11 -3
- package/lib/esm/query/Condition.js.map +1 -1
- package/lib/esm/query/MethodQueryBuilder.d.ts +1 -6
- package/lib/esm/query/MethodQueryBuilder.js +14 -1
- package/lib/esm/query/MethodQueryBuilder.js.map +1 -1
- package/lib/esm/query/Paginator.d.ts +7 -0
- package/lib/esm/query/Paginator.js.map +1 -1
- package/lib/esm/query/Statement.d.ts +17 -5
- package/lib/esm/query/Statement.js +265 -11
- package/lib/esm/query/Statement.js.map +1 -1
- package/lib/esm/query/constants.d.ts +6 -0
- package/lib/esm/query/constants.js +8 -0
- package/lib/esm/query/constants.js.map +1 -1
- package/lib/esm/query/decorators.js +11 -1
- package/lib/esm/query/decorators.js.map +1 -1
- package/lib/esm/query/options.d.ts +14 -9
- package/lib/esm/query/types.d.ts +20 -1
- package/lib/esm/query/types.js.map +1 -1
- package/lib/esm/ram/RamAdapter.d.ts +3 -2
- package/lib/esm/ram/RamAdapter.js +6 -3
- package/lib/esm/ram/RamAdapter.js.map +1 -1
- package/lib/esm/ram/RamPaginator.d.ts +2 -2
- package/lib/esm/ram/RamPaginator.js +4 -3
- package/lib/esm/ram/RamPaginator.js.map +1 -1
- package/lib/esm/ram/RamStatement.d.ts +1 -9
- package/lib/esm/ram/RamStatement.js +1 -18
- package/lib/esm/ram/RamStatement.js.map +1 -1
- package/lib/esm/ram/types.d.ts +3 -3
- package/lib/esm/repository/Repository.d.ts +18 -16
- package/lib/esm/repository/Repository.js +34 -12
- package/lib/esm/repository/Repository.js.map +1 -1
- package/lib/esm/utils/ContextualLoggedClass.d.ts +1 -1
- package/lib/esm/utils/ContextualLoggedClass.js +3 -3
- package/lib/esm/utils/ContextualLoggedClass.js.map +1 -1
- package/lib/esm/utils/Services.d.ts +9 -7
- package/lib/esm/utils/Services.js +7 -4
- package/lib/esm/utils/Services.js.map +1 -1
- package/lib/identity/decorators.cjs +10 -3
- package/lib/identity/decorators.d.ts +1 -1
- package/lib/identity/decorators.js.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/interfaces/ContextuallyLogged.d.ts +2 -2
- package/lib/model/construction.d.ts +4 -5
- package/lib/model/construction.js.map +1 -1
- package/lib/model/decorators.cjs +14 -6
- package/lib/model/decorators.d.ts +1 -0
- package/lib/model/decorators.js.map +1 -1
- package/lib/model/types.d.ts +1 -1
- package/lib/overrides/Metadata.d.ts +4 -2
- package/lib/overrides/Model.d.ts +10 -0
- package/lib/overrides/decoration.cjs +8 -0
- package/lib/overrides/decoration.d.ts +1 -0
- package/lib/overrides/decoration.js.map +1 -0
- package/lib/overrides/index.cjs +1 -0
- package/lib/overrides/index.d.ts +1 -0
- package/lib/overrides/index.js.map +1 -1
- package/lib/overrides/overrides.cjs +30 -13
- package/lib/overrides/overrides.js.map +1 -1
- package/lib/persistence/Adapter.cjs +4 -3
- package/lib/persistence/Adapter.d.ts +8 -4
- package/lib/persistence/Adapter.js.map +1 -1
- package/lib/persistence/Context.cjs +11 -0
- package/lib/persistence/Context.d.ts +5 -0
- package/lib/persistence/Context.js.map +1 -0
- package/lib/persistence/Dispatch.d.ts +2 -2
- package/lib/persistence/Dispatch.js.map +1 -1
- package/lib/persistence/ObserverHandler.js.map +1 -1
- package/lib/persistence/Sequence.cjs +4 -3
- package/lib/persistence/Sequence.d.ts +1 -1
- package/lib/persistence/Sequence.js.map +1 -1
- package/lib/persistence/constants.cjs +9 -1
- package/lib/persistence/constants.d.ts +4 -1
- package/lib/persistence/constants.js.map +1 -1
- package/lib/persistence/index.cjs +1 -0
- package/lib/persistence/index.d.ts +1 -0
- package/lib/persistence/index.js.map +1 -1
- package/lib/persistence/migrations.cjs +2 -1
- package/lib/persistence/migrations.js.map +1 -1
- package/lib/persistence/types.d.ts +18 -5
- package/lib/query/Condition.cjs +11 -3
- package/lib/query/Condition.d.ts +3 -1
- package/lib/query/Condition.js.map +1 -1
- package/lib/query/MethodQueryBuilder.cjs +13 -0
- package/lib/query/MethodQueryBuilder.d.ts +1 -6
- package/lib/query/MethodQueryBuilder.js.map +1 -1
- package/lib/query/Paginator.d.ts +7 -0
- package/lib/query/Paginator.js.map +1 -1
- package/lib/query/Statement.cjs +262 -8
- package/lib/query/Statement.d.ts +17 -5
- package/lib/query/Statement.js.map +1 -1
- package/lib/query/constants.cjs +9 -1
- package/lib/query/constants.d.ts +6 -0
- package/lib/query/constants.js.map +1 -1
- package/lib/query/decorators.cjs +11 -1
- package/lib/query/decorators.js.map +1 -1
- package/lib/query/options.d.ts +14 -9
- package/lib/query/types.d.ts +20 -1
- package/lib/query/types.js.map +1 -1
- package/lib/ram/RamAdapter.cjs +4 -1
- package/lib/ram/RamAdapter.d.ts +3 -2
- package/lib/ram/RamAdapter.js.map +1 -1
- package/lib/ram/RamPaginator.cjs +4 -3
- package/lib/ram/RamPaginator.d.ts +2 -2
- package/lib/ram/RamPaginator.js.map +1 -1
- package/lib/ram/RamStatement.cjs +0 -17
- package/lib/ram/RamStatement.d.ts +1 -9
- package/lib/ram/RamStatement.js.map +1 -1
- package/lib/ram/types.d.ts +3 -3
- package/lib/repository/Repository.cjs +41 -19
- package/lib/repository/Repository.d.ts +18 -16
- package/lib/repository/Repository.js.map +1 -1
- package/lib/utils/ContextualLoggedClass.d.ts +1 -1
- package/lib/utils/ContextualLoggedClass.js.map +1 -1
- package/lib/utils/Services.cjs +9 -6
- package/lib/utils/Services.d.ts +9 -7
- package/lib/utils/Services.js.map +1 -1
- package/package.json +1 -1
package/lib/query/Statement.cjs
CHANGED
|
@@ -18,6 +18,10 @@ const logging_1 = require("@decaf-ts/logging");
|
|
|
18
18
|
const persistence_1 = require("./../persistence/index.cjs");
|
|
19
19
|
const errors_1 = require("./errors.cjs");
|
|
20
20
|
const index_1 = require("./../utils/index.cjs");
|
|
21
|
+
const Context_1 = require("./../persistence/Context.cjs");
|
|
22
|
+
const types_1 = require("./types.cjs");
|
|
23
|
+
const constants_1 = require("./constants.cjs");
|
|
24
|
+
const index_2 = require("./../repository/index.cjs");
|
|
21
25
|
/**
|
|
22
26
|
* @description Base class for database query statements
|
|
23
27
|
* @summary Provides a foundation for building and executing database queries
|
|
@@ -73,6 +77,21 @@ class Statement extends index_1.ContextualLoggedClass {
|
|
|
73
77
|
constructor(adapter) {
|
|
74
78
|
super();
|
|
75
79
|
this.adapter = adapter;
|
|
80
|
+
[this.execute, this.paginate].forEach((m) => {
|
|
81
|
+
(0, db_decorators_1.prefixMethod)(this, m, async (...args) => {
|
|
82
|
+
let execArgs = args;
|
|
83
|
+
if ((!execArgs.length ||
|
|
84
|
+
!(execArgs[execArgs.length - 1] instanceof Context_1.Context)) &&
|
|
85
|
+
this.fromSelector) {
|
|
86
|
+
const ctx = await this.adapter.context(persistence_1.PersistenceKeys.QUERY, {}, this.fromSelector);
|
|
87
|
+
execArgs = [...execArgs, ctx];
|
|
88
|
+
}
|
|
89
|
+
const { ctx, ctxArgs } = persistence_1.Adapter.logCtx(execArgs, m.name);
|
|
90
|
+
if (!ctx.get("allowRawStatements") && !this.prepared)
|
|
91
|
+
await this.prepare(ctx);
|
|
92
|
+
return ctxArgs;
|
|
93
|
+
}, m.name);
|
|
94
|
+
});
|
|
76
95
|
}
|
|
77
96
|
get log() {
|
|
78
97
|
return this.adapter.log.for(Statement);
|
|
@@ -127,14 +146,7 @@ class Statement extends index_1.ContextualLoggedClass {
|
|
|
127
146
|
return this;
|
|
128
147
|
}
|
|
129
148
|
async execute(...args) {
|
|
130
|
-
|
|
131
|
-
if ((!execArgs.length ||
|
|
132
|
-
!(execArgs[execArgs.length - 1] instanceof db_decorators_1.Context)) &&
|
|
133
|
-
this.fromSelector) {
|
|
134
|
-
const ctx = await this.adapter.context(db_decorators_1.OperationKeys.READ, {}, this.fromSelector);
|
|
135
|
-
execArgs = [...execArgs, ctx];
|
|
136
|
-
}
|
|
137
|
-
const { ctx } = persistence_1.Adapter.logCtx(execArgs, this.toString());
|
|
149
|
+
const ctx = args.pop(); // handled by prefix
|
|
138
150
|
try {
|
|
139
151
|
const query = this.build();
|
|
140
152
|
return (await this.raw(query, ctx));
|
|
@@ -157,6 +169,248 @@ class Statement extends index_1.ContextualLoggedClass {
|
|
|
157
169
|
return results.map(processor);
|
|
158
170
|
return processor(results);
|
|
159
171
|
}
|
|
172
|
+
prepareCondition(condition, ctx) {
|
|
173
|
+
// @ts-expect-error accessing protected properties
|
|
174
|
+
// eslint-disable-next-line prefer-const
|
|
175
|
+
let { attr1, operator, comparison } = condition;
|
|
176
|
+
const result = {};
|
|
177
|
+
switch (operator) {
|
|
178
|
+
case constants_1.GroupOperator.AND:
|
|
179
|
+
case constants_1.GroupOperator.OR: {
|
|
180
|
+
let side1 = attr1, side2 = comparison;
|
|
181
|
+
if (typeof attr1 !== "string") {
|
|
182
|
+
const condition1 = this.prepareCondition(attr1, ctx);
|
|
183
|
+
side1 = condition1.method;
|
|
184
|
+
result.args = [...(result.args || []), ...(condition1.args || [])];
|
|
185
|
+
}
|
|
186
|
+
if (comparison instanceof Condition_1.Condition) {
|
|
187
|
+
const condition2 = this.prepareCondition(comparison, ctx);
|
|
188
|
+
side2 = condition2.method;
|
|
189
|
+
result.args = [...(result.args || []), ...(condition2.args || [])];
|
|
190
|
+
}
|
|
191
|
+
result.method = `${side1} ${operator.toLowerCase()} ${side2}`;
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
case constants_1.Operator.EQUAL:
|
|
195
|
+
result.method = attr1;
|
|
196
|
+
result.args = [...(result.args || []), comparison];
|
|
197
|
+
break;
|
|
198
|
+
case constants_1.Operator.DIFFERENT:
|
|
199
|
+
result.method = `${attr1} diff`;
|
|
200
|
+
result.args = [...(result.args || []), comparison];
|
|
201
|
+
break;
|
|
202
|
+
case constants_1.Operator.REGEXP:
|
|
203
|
+
result.method = `${attr1} matches`;
|
|
204
|
+
result.args = [...(result.args || []), comparison];
|
|
205
|
+
break;
|
|
206
|
+
case constants_1.Operator.BIGGER:
|
|
207
|
+
result.method = `${attr1} bigger`;
|
|
208
|
+
result.args = [...(result.args || []), comparison];
|
|
209
|
+
break;
|
|
210
|
+
case constants_1.Operator.BIGGER_EQ:
|
|
211
|
+
result.method = `${attr1} bigger than equal`;
|
|
212
|
+
break;
|
|
213
|
+
case constants_1.Operator.SMALLER:
|
|
214
|
+
result.method = `${attr1} less`;
|
|
215
|
+
result.args = [...(result.args || []), comparison];
|
|
216
|
+
break;
|
|
217
|
+
case constants_1.Operator.SMALLER_EQ:
|
|
218
|
+
result.method = `${attr1} less than equal`;
|
|
219
|
+
result.args = [...(result.args || []), comparison];
|
|
220
|
+
break;
|
|
221
|
+
case constants_1.Operator.IN:
|
|
222
|
+
result.method = `${attr1} in`;
|
|
223
|
+
result.args = [...(result.args || []), comparison];
|
|
224
|
+
break;
|
|
225
|
+
default:
|
|
226
|
+
throw new errors_1.QueryError(`Unsupported operator ${operator}`);
|
|
227
|
+
}
|
|
228
|
+
return result;
|
|
229
|
+
}
|
|
230
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
231
|
+
squash(ctx) {
|
|
232
|
+
if (this.selectSelector && this.selectSelector.length)
|
|
233
|
+
return undefined;
|
|
234
|
+
if (this.groupBySelector)
|
|
235
|
+
return undefined;
|
|
236
|
+
if (this.countSelector)
|
|
237
|
+
return undefined;
|
|
238
|
+
if (this.maxSelector)
|
|
239
|
+
return undefined;
|
|
240
|
+
if (this.minSelector)
|
|
241
|
+
return undefined;
|
|
242
|
+
let attrFromWhere;
|
|
243
|
+
if (this.whereCondition) {
|
|
244
|
+
if (this.whereCondition["comparison"] instanceof Condition_1.Condition)
|
|
245
|
+
return undefined;
|
|
246
|
+
attrFromWhere = this.whereCondition["attr1"];
|
|
247
|
+
}
|
|
248
|
+
const order = this.orderBySelector
|
|
249
|
+
? this.orderBySelector
|
|
250
|
+
: attrFromWhere
|
|
251
|
+
? [attrFromWhere, index_2.OrderDirection.DSC]
|
|
252
|
+
: [decorator_validation_1.Model.pk(this.fromSelector), index_2.OrderDirection.DSC];
|
|
253
|
+
const [attrFromOrderBy, sort] = order;
|
|
254
|
+
const params = {
|
|
255
|
+
direction: sort,
|
|
256
|
+
};
|
|
257
|
+
if (this.limitSelector)
|
|
258
|
+
params.limit = this.limitSelector;
|
|
259
|
+
if (this.offsetSelector)
|
|
260
|
+
params.offset = this.offsetSelector;
|
|
261
|
+
const squashed = {
|
|
262
|
+
// listBy
|
|
263
|
+
class: this.fromSelector,
|
|
264
|
+
method: constants_1.PreparedStatementKeys.LIST_BY,
|
|
265
|
+
args: [attrFromOrderBy],
|
|
266
|
+
params: params,
|
|
267
|
+
};
|
|
268
|
+
if (attrFromWhere) {
|
|
269
|
+
// findBy
|
|
270
|
+
squashed.method = constants_1.PreparedStatementKeys.FIND_BY;
|
|
271
|
+
squashed.args = [
|
|
272
|
+
attrFromWhere,
|
|
273
|
+
this.whereCondition["comparison"],
|
|
274
|
+
];
|
|
275
|
+
squashed.params = params;
|
|
276
|
+
}
|
|
277
|
+
return squashed;
|
|
278
|
+
//
|
|
279
|
+
//
|
|
280
|
+
//
|
|
281
|
+
// let attrs = rawStatement.method.split(
|
|
282
|
+
// new RegExp(
|
|
283
|
+
// `(${[QueryClause.FIND_BY, QueryClause.SELECT, QueryClause.ORDER_BY, QueryClause.GROUP_BY, QueryClause.AND, QueryClause.OR].join("|")})`,
|
|
284
|
+
// "i"
|
|
285
|
+
// )
|
|
286
|
+
// );
|
|
287
|
+
//
|
|
288
|
+
// attrs = attrs
|
|
289
|
+
// .map((s) => s.trim())
|
|
290
|
+
// .filter(Boolean)
|
|
291
|
+
// .filter(
|
|
292
|
+
// (s) =>
|
|
293
|
+
// ![
|
|
294
|
+
// QueryClause.FIND_BY,
|
|
295
|
+
// QueryClause.SELECT,
|
|
296
|
+
// QueryClause.ORDER_BY,
|
|
297
|
+
// QueryClause.GROUP_BY,
|
|
298
|
+
// toPascalCase(OrderDirection.ASC),
|
|
299
|
+
// toPascalCase(OrderDirection.DSC),
|
|
300
|
+
// ].find((c) => s.includes(c))
|
|
301
|
+
// );
|
|
302
|
+
//
|
|
303
|
+
// const fullOrderBy = rawStatement.method.split(QueryClause.ORDER_BY);
|
|
304
|
+
// let orderBy: any;
|
|
305
|
+
// if (fullOrderBy.length) {
|
|
306
|
+
// orderBy = fullOrderBy[1]
|
|
307
|
+
// .split(
|
|
308
|
+
// new RegExp(
|
|
309
|
+
// `${[toPascalCase(OrderDirection.ASC), toPascalCase(OrderDirection.DSC), QueryClause.GROUP_BY + ".*", QueryClause.THEN_BY].join("|")}`,
|
|
310
|
+
// "i"
|
|
311
|
+
// )
|
|
312
|
+
// )
|
|
313
|
+
// .map((s) => s.trim())
|
|
314
|
+
// .filter(Boolean);
|
|
315
|
+
// orderBy = [
|
|
316
|
+
// orderBy[0] as any,
|
|
317
|
+
// fullOrderBy[1].includes(toPascalCase(OrderDirection.ASC))
|
|
318
|
+
// ? OrderDirection.ASC
|
|
319
|
+
// : OrderDirection.DSC,
|
|
320
|
+
// ];
|
|
321
|
+
// }
|
|
322
|
+
//
|
|
323
|
+
// const canBeSquashed = (!attrs.length
|
|
324
|
+
// || (attrs.length === 1 && attrs[0] === orderBy[0]
|
|
325
|
+
//
|
|
326
|
+
// if (attrs.length === 1 && attrs[0] === orderBy[0]) {
|
|
327
|
+
// // there's an order by
|
|
328
|
+
// const attr = attrs[0];
|
|
329
|
+
// if (attrFromWhere && attrFromWhere !== attr) {
|
|
330
|
+
// return rawStatement;
|
|
331
|
+
// }
|
|
332
|
+
// return Object.assign({}, rawStatement, {
|
|
333
|
+
// method: PreparedStatementKeys.LIST_BY,
|
|
334
|
+
// args: [toCamelCase(attr), orderBy[1]],
|
|
335
|
+
// // args: [toCamelCase(attr), orderBy[1], this.size],
|
|
336
|
+
// });
|
|
337
|
+
// } else {
|
|
338
|
+
// // there's no orderBy
|
|
339
|
+
// return Object.assign({}, rawStatement, {
|
|
340
|
+
// method: rawStatement.method.replace(QueryClause.FIND_BY, PreparedStatementKeys.LIST_BY),
|
|
341
|
+
// args: [...rawStatement.args],
|
|
342
|
+
// // args: [...rawStatement.args, this.size],
|
|
343
|
+
// });
|
|
344
|
+
// }
|
|
345
|
+
}
|
|
346
|
+
async prepare(ctx) {
|
|
347
|
+
ctx =
|
|
348
|
+
ctx ||
|
|
349
|
+
(await this.adapter.context(persistence_1.PersistenceKeys.QUERY, {}, this.fromSelector));
|
|
350
|
+
if (ctx.get("squashSimpleQueries")) {
|
|
351
|
+
const squashed = this.squash(ctx);
|
|
352
|
+
if (squashed) {
|
|
353
|
+
this.prepared = squashed;
|
|
354
|
+
return this;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
const args = [];
|
|
358
|
+
const params = {};
|
|
359
|
+
const prepared = {
|
|
360
|
+
class: this.fromSelector,
|
|
361
|
+
args,
|
|
362
|
+
params,
|
|
363
|
+
};
|
|
364
|
+
const method = [types_1.QueryClause.FIND_BY];
|
|
365
|
+
if (this.whereCondition) {
|
|
366
|
+
const parsed = this.prepareCondition(this.whereCondition, ctx);
|
|
367
|
+
method.push(parsed.method);
|
|
368
|
+
if (parsed.args && parsed.args.length)
|
|
369
|
+
args.push(...parsed.args);
|
|
370
|
+
}
|
|
371
|
+
if (this.selectSelector)
|
|
372
|
+
method.push(types_1.QueryClause.SELECT, this.selectSelector.join(` ${types_1.QueryClause.AND.toLowerCase()} `));
|
|
373
|
+
if (this.orderBySelector)
|
|
374
|
+
method.push(types_1.QueryClause.ORDER_BY, ...this.orderBySelector);
|
|
375
|
+
if (this.groupBySelector)
|
|
376
|
+
method.push(types_1.QueryClause.GROUP_BY, this.groupBySelector);
|
|
377
|
+
if (this.limitSelector)
|
|
378
|
+
params.limit = this.limitSelector;
|
|
379
|
+
if (this.offsetSelector) {
|
|
380
|
+
params.skip = this.offsetSelector;
|
|
381
|
+
}
|
|
382
|
+
prepared.method = (0, logging_1.toCamelCase)(method.join(" "));
|
|
383
|
+
prepared.params = params;
|
|
384
|
+
this.prepared = prepared;
|
|
385
|
+
if (!ctx.get("squashSimpleQueries") ||
|
|
386
|
+
(this.selectSelector && this.selectSelector.length) ||
|
|
387
|
+
this.groupBySelector ||
|
|
388
|
+
this.countSelector ||
|
|
389
|
+
this.maxSelector ||
|
|
390
|
+
this.minSelector) {
|
|
391
|
+
return this;
|
|
392
|
+
}
|
|
393
|
+
this.prepared = prepared;
|
|
394
|
+
return this;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* @description Creates a paginator for the query
|
|
398
|
+
* @summary Builds the query and wraps it in a RamPaginator to enable pagination of results.
|
|
399
|
+
* This allows retrieving large result sets in smaller chunks.
|
|
400
|
+
* @param {number} size - The page size (number of results per page)
|
|
401
|
+
* @return {Promise<Paginator<M, R, RawRamQuery<M>>>} A promise that resolves to a paginator for the query
|
|
402
|
+
*/
|
|
403
|
+
async paginate(size, ...args) {
|
|
404
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
405
|
+
const ctx = args.pop(); // handled by prefix. kept for example for overrides
|
|
406
|
+
try {
|
|
407
|
+
const query = this.build();
|
|
408
|
+
return this.adapter.Paginator(query, size, this.fromSelector);
|
|
409
|
+
}
|
|
410
|
+
catch (e) {
|
|
411
|
+
throw new errors_1.QueryError(e);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
160
414
|
toString() {
|
|
161
415
|
return `${this.adapter.flavour} statement`;
|
|
162
416
|
}
|
package/lib/query/Statement.d.ts
CHANGED
|
@@ -2,13 +2,14 @@ import { Model } from "@decaf-ts/decorator-validation";
|
|
|
2
2
|
import type { Executor, RawExecutor } from "../interfaces";
|
|
3
3
|
import type { FromSelector, GroupBySelector, OrderBySelector, SelectSelector } from "./selectors";
|
|
4
4
|
import { Condition } from "./Condition";
|
|
5
|
-
import type { CountOption, DistinctOption, LimitOption, MaxOption, MinOption, OffsetOption, OrderAndGroupOption, SelectOption, WhereOption } from "./options";
|
|
5
|
+
import type { CountOption, DistinctOption, LimitOption, MaxOption, MinOption, OffsetOption, OrderAndGroupOption, PreparableStatementExecutor, SelectOption, StatementExecutor, WhereOption } from "./options";
|
|
6
6
|
import { Paginatable } from "../interfaces/Paginatable";
|
|
7
7
|
import { Paginator } from "./Paginator";
|
|
8
8
|
import { Adapter, type ContextOf } from "../persistence";
|
|
9
9
|
import { Logger } from "@decaf-ts/logging";
|
|
10
10
|
import { Constructor } from "@decaf-ts/decoration";
|
|
11
11
|
import { type ContextualArgs, ContextualLoggedClass, type MaybeContextualArg } from "../utils/index";
|
|
12
|
+
import { PreparedStatement } from "./types";
|
|
12
13
|
/**
|
|
13
14
|
* @description Base class for database query statements
|
|
14
15
|
* @summary Provides a foundation for building and executing database queries
|
|
@@ -73,6 +74,7 @@ export declare abstract class Statement<M extends Model, A extends Adapter<any,
|
|
|
73
74
|
protected groupBySelector?: GroupBySelector<M>;
|
|
74
75
|
protected limitSelector?: number;
|
|
75
76
|
protected offsetSelector?: number;
|
|
77
|
+
protected prepared?: PreparedStatement<M>;
|
|
76
78
|
protected constructor(adapter: Adapter<any, any, Q, any>);
|
|
77
79
|
protected get log(): Logger;
|
|
78
80
|
select<S extends readonly SelectSelector<M>[]>(): SelectOption<M, M[]>;
|
|
@@ -83,14 +85,24 @@ export declare abstract class Statement<M extends Model, A extends Adapter<any,
|
|
|
83
85
|
count<S extends SelectSelector<M>>(selector?: S): CountOption<M, number>;
|
|
84
86
|
from(selector: FromSelector<M>): WhereOption<M, R>;
|
|
85
87
|
where(condition: Condition<M>): OrderAndGroupOption<M, R>;
|
|
86
|
-
orderBy(selector: OrderBySelector<M>): LimitOption<M, R> & OffsetOption<R>;
|
|
88
|
+
orderBy(selector: OrderBySelector<M>): LimitOption<M, R> & OffsetOption<M, R>;
|
|
87
89
|
groupBy(selector: GroupBySelector<M>): LimitOption<M, R>;
|
|
88
|
-
limit(value: number): OffsetOption<R>;
|
|
89
|
-
offset(value: number):
|
|
90
|
+
limit(value: number): OffsetOption<M, R>;
|
|
91
|
+
offset(value: number): PreparableStatementExecutor<M, R>;
|
|
90
92
|
execute(...args: MaybeContextualArg<ContextOf<A>>): Promise<R>;
|
|
91
93
|
raw<R>(rawInput: Q, ...args: ContextualArgs<ContextOf<A>>): Promise<R>;
|
|
94
|
+
protected prepareCondition(condition: Condition<any>, ctx: ContextOf<A>): PreparedStatement<any>;
|
|
95
|
+
protected squash(ctx: ContextOf<A>): PreparedStatement<any> | undefined;
|
|
96
|
+
prepare(ctx?: ContextOf<A>): Promise<StatementExecutor<M, R>>;
|
|
92
97
|
protected abstract build(): Q;
|
|
93
98
|
protected abstract parseCondition(condition: Condition<M>, ...args: any[]): Q;
|
|
94
|
-
|
|
99
|
+
/**
|
|
100
|
+
* @description Creates a paginator for the query
|
|
101
|
+
* @summary Builds the query and wraps it in a RamPaginator to enable pagination of results.
|
|
102
|
+
* This allows retrieving large result sets in smaller chunks.
|
|
103
|
+
* @param {number} size - The page size (number of results per page)
|
|
104
|
+
* @return {Promise<Paginator<M, R, RawRamQuery<M>>>} A promise that resolves to a paginator for the query
|
|
105
|
+
*/
|
|
106
|
+
paginate(size: number, ...args: MaybeContextualArg<ContextOf<A>>): Promise<Paginator<M, R, Q>>;
|
|
95
107
|
toString(): string;
|
|
96
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Statement.js","sourceRoot":"","sources":["../../src/query/Statement.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Statement.js","sourceRoot":"","sources":["../../src/query/Statement.ts"],"names":[],"mappings":"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"}
|
package/lib/query/constants.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GroupOperator = exports.Operator = void 0;
|
|
3
|
+
exports.PreparedStatementKeys = exports.GroupOperator = exports.Operator = void 0;
|
|
4
|
+
const types_1 = require("./types.cjs");
|
|
4
5
|
/**
|
|
5
6
|
* @description Comparison operators for query conditions
|
|
6
7
|
* @summary Enum defining the available operators for comparing values in database queries
|
|
@@ -45,4 +46,11 @@ var GroupOperator;
|
|
|
45
46
|
/** Logical OR operator - at least one condition must be true */
|
|
46
47
|
GroupOperator["OR"] = "OR";
|
|
47
48
|
})(GroupOperator || (exports.GroupOperator = GroupOperator = {}));
|
|
49
|
+
var PreparedStatementKeys;
|
|
50
|
+
(function (PreparedStatementKeys) {
|
|
51
|
+
PreparedStatementKeys["LIST_BY"] = "listBy";
|
|
52
|
+
PreparedStatementKeys["FIND_BY"] = "findBy";
|
|
53
|
+
PreparedStatementKeys["FIND_ONE_BY"] = "findOneBy";
|
|
54
|
+
PreparedStatementKeys["PAGE_BY"] = "paginateBy";
|
|
55
|
+
})(PreparedStatementKeys || (exports.PreparedStatementKeys = PreparedStatementKeys = {}));
|
|
48
56
|
//# sourceMappingURL=constants.js.map
|
package/lib/query/constants.d.ts
CHANGED
|
@@ -38,3 +38,9 @@ export declare enum GroupOperator {
|
|
|
38
38
|
/** Logical OR operator - at least one condition must be true */
|
|
39
39
|
OR = "OR"
|
|
40
40
|
}
|
|
41
|
+
export declare enum PreparedStatementKeys {
|
|
42
|
+
LIST_BY = "listBy",
|
|
43
|
+
FIND_BY = "findBy",
|
|
44
|
+
FIND_ONE_BY = "findOneBy",
|
|
45
|
+
PAGE_BY = "paginateBy"
|
|
46
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/query/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,IAAY,QAqBX;AArBD,WAAY,QAAQ;IAClB,2BAA2B;IAC3B,2BAAe,CAAA;IACf,gCAAgC;IAChC,mCAAuB,CAAA;IACvB,kCAAkC;IAClC,6BAAiB,CAAA;IACjB,4CAA4C;IAC5C,mCAAuB,CAAA;IACvB,+BAA+B;IAC/B,+BAAmB,CAAA;IACnB,yCAAyC;IACzC,qCAAyB,CAAA;IACzB,uBAAuB;IACvB,8BAA8B;IAC9B,uBAAW,CAAA;IACX,8BAA8B;IAC9B,qBAAS,CAAA;IACT,aAAa;IACb,kCAAkC;IAClC,6BAAiB,CAAA;AACnB,CAAC,EArBW,QAAQ,wBAAR,QAAQ,QAqBnB;AAED;;;;;;GAMG;AACH,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,yDAAyD;IACzD,4BAAW,CAAA;IACX,gEAAgE;IAChE,0BAAS,CAAA;AACX,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/query/constants.ts"],"names":[],"mappings":";;;AAAA,uCAAsC;AAEtC;;;;;;GAMG;AACH,IAAY,QAqBX;AArBD,WAAY,QAAQ;IAClB,2BAA2B;IAC3B,2BAAe,CAAA;IACf,gCAAgC;IAChC,mCAAuB,CAAA;IACvB,kCAAkC;IAClC,6BAAiB,CAAA;IACjB,4CAA4C;IAC5C,mCAAuB,CAAA;IACvB,+BAA+B;IAC/B,+BAAmB,CAAA;IACnB,yCAAyC;IACzC,qCAAyB,CAAA;IACzB,uBAAuB;IACvB,8BAA8B;IAC9B,uBAAW,CAAA;IACX,8BAA8B;IAC9B,qBAAS,CAAA;IACT,aAAa;IACb,kCAAkC;IAClC,6BAAiB,CAAA;AACnB,CAAC,EArBW,QAAQ,wBAAR,QAAQ,QAqBnB;AAED;;;;;;GAMG;AACH,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,yDAAyD;IACzD,4BAAW,CAAA;IACX,gEAAgE;IAChE,0BAAS,CAAA;AACX,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB;AAED,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,2CAAkB,CAAA;IAClB,2CAA6B,CAAA;IAC7B,kDAAyB,CAAA;IACzB,+CAAsB,CAAA;AACxB,CAAC,EALW,qBAAqB,qCAArB,qBAAqB,QAKhC"}
|
package/lib/query/decorators.cjs
CHANGED
|
@@ -68,7 +68,17 @@ function query(options = {}) {
|
|
|
68
68
|
});
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
|
-
|
|
71
|
+
const fields = MethodQueryBuilder_1.MethodQueryBuilder.getFieldsFromMethodName(prop);
|
|
72
|
+
// const paramNames = descriptor.value
|
|
73
|
+
// .toString()
|
|
74
|
+
// .match(/\(([^)]*)\)/)?.[1]
|
|
75
|
+
// .split(",")
|
|
76
|
+
// .map((x) => x.trim())
|
|
77
|
+
// .filter(Boolean);
|
|
78
|
+
return (0, decoration_1.apply)((0, decoration_1.methodMetadata)(decoration_1.Metadata.key(constants_1.PersistenceKeys.QUERY, prop), {
|
|
79
|
+
...options,
|
|
80
|
+
fields,
|
|
81
|
+
}), prepared(), innerQuery(options))(obj, prop, descriptor);
|
|
72
82
|
};
|
|
73
83
|
}
|
|
74
84
|
return decoration_1.Decoration.for(constants_1.PersistenceKeys.QUERY)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/query/decorators.ts"],"names":[],"mappings":";;AAWA,4BAcC;AAED,
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/query/decorators.ts"],"names":[],"mappings":"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"}
|
package/lib/query/options.d.ts
CHANGED
|
@@ -4,6 +4,11 @@ import { Model } from "@decaf-ts/decorator-validation";
|
|
|
4
4
|
import { Condition } from "./Condition";
|
|
5
5
|
import { Paginatable } from "../interfaces/Paginatable";
|
|
6
6
|
import { Constructor } from "@decaf-ts/decoration";
|
|
7
|
+
export interface StatementExecutor<M extends Model, R> extends Executor<R>, Paginatable<M, R, any> {
|
|
8
|
+
}
|
|
9
|
+
export interface PreparableStatementExecutor<M extends Model, R> extends StatementExecutor<M, R> {
|
|
10
|
+
prepare(...args: any[]): Promise<StatementExecutor<M, R>>;
|
|
11
|
+
}
|
|
7
12
|
/**
|
|
8
13
|
* @summary GroupBy Option interface
|
|
9
14
|
* @description Exposes the GROUP BY method and remaining options
|
|
@@ -12,7 +17,7 @@ import { Constructor } from "@decaf-ts/decoration";
|
|
|
12
17
|
* @memberOf module:core
|
|
13
18
|
*/
|
|
14
19
|
export interface GroupByOption<M extends Model, R> extends Executor<R> {
|
|
15
|
-
groupBy(selector: GroupBySelector<M>):
|
|
20
|
+
groupBy(selector: GroupBySelector<M>): PreparableStatementExecutor<M, R>;
|
|
16
21
|
}
|
|
17
22
|
/**
|
|
18
23
|
* @summary Offset Option interface
|
|
@@ -21,8 +26,8 @@ export interface GroupByOption<M extends Model, R> extends Executor<R> {
|
|
|
21
26
|
* @interface GroupByOption
|
|
22
27
|
* @memberOf module:core
|
|
23
28
|
*/
|
|
24
|
-
export interface OffsetOption<R> extends
|
|
25
|
-
offset(selector: OffsetSelector):
|
|
29
|
+
export interface OffsetOption<M extends Model, R> extends PreparableStatementExecutor<M, R> {
|
|
30
|
+
offset(selector: OffsetSelector): PreparableStatementExecutor<M, R>;
|
|
26
31
|
}
|
|
27
32
|
/**
|
|
28
33
|
* @summary Limit Option interface
|
|
@@ -31,8 +36,8 @@ export interface OffsetOption<R> extends Executor<R> {
|
|
|
31
36
|
* @interface LimitOption
|
|
32
37
|
* @memberOf module:core
|
|
33
38
|
*/
|
|
34
|
-
export interface LimitOption<M extends Model, R> extends
|
|
35
|
-
limit(selector: LimitSelector): OffsetOption<R>;
|
|
39
|
+
export interface LimitOption<M extends Model, R> extends PreparableStatementExecutor<M, R> {
|
|
40
|
+
limit(selector: LimitSelector): OffsetOption<M, R>;
|
|
36
41
|
}
|
|
37
42
|
/**
|
|
38
43
|
* @summary OrderBy Option interface
|
|
@@ -41,8 +46,8 @@ export interface LimitOption<M extends Model, R> extends Executor<R>, Paginatabl
|
|
|
41
46
|
* @interface OrderByOption
|
|
42
47
|
* @memberOf module:core
|
|
43
48
|
*/
|
|
44
|
-
export interface OrderByOption<M extends Model, R> extends
|
|
45
|
-
orderBy(selector: OrderBySelector<M>): LimitOption<M, R> & OffsetOption<R>;
|
|
49
|
+
export interface OrderByOption<M extends Model, R> extends PreparableStatementExecutor<M, R> {
|
|
50
|
+
orderBy(selector: OrderBySelector<M>): LimitOption<M, R> & OffsetOption<M, R>;
|
|
46
51
|
}
|
|
47
52
|
/**
|
|
48
53
|
* @summary OrderBy Option interface
|
|
@@ -51,7 +56,7 @@ export interface OrderByOption<M extends Model, R> extends Executor<R>, Paginata
|
|
|
51
56
|
* @interface ThenByOption
|
|
52
57
|
* @memberOf module:core
|
|
53
58
|
*/
|
|
54
|
-
export interface ThenByOption<M extends Model, R> extends LimitOption<M, R>, OffsetOption<
|
|
59
|
+
export interface ThenByOption<M extends Model, R> extends LimitOption<M, R>, OffsetOption<M, R>, PreparableStatementExecutor<M, R> {
|
|
55
60
|
thenBy(selector: OrderBySelector<M>): ThenByOption<M, R>;
|
|
56
61
|
}
|
|
57
62
|
/**
|
|
@@ -64,7 +69,7 @@ export interface ThenByOption<M extends Model, R> extends LimitOption<M, R>, Off
|
|
|
64
69
|
* @extends OffsetOption
|
|
65
70
|
* @memberOf module:core
|
|
66
71
|
*/
|
|
67
|
-
export interface OrderAndGroupOption<M extends Model, R> extends OrderByOption<M, R>,
|
|
72
|
+
export interface OrderAndGroupOption<M extends Model, R> extends OrderByOption<M, R>, PreparableStatementExecutor<M, R>, GroupByOption<M, R>, LimitOption<M, R>, OffsetOption<M, R> {
|
|
68
73
|
}
|
|
69
74
|
/**
|
|
70
75
|
* @summary Where Option interface
|
package/lib/query/types.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { Condition } from "./Condition";
|
|
2
2
|
import { OrderBySelector } from "./selectors";
|
|
3
|
+
import { Model } from "@decaf-ts/decorator-validation";
|
|
4
|
+
import { Constructor } from "@decaf-ts/decoration";
|
|
5
|
+
import { OrderDirection } from "../repository/constants";
|
|
3
6
|
/**
|
|
4
7
|
* @description
|
|
5
8
|
* Options for configuring query building behavior.
|
|
@@ -17,6 +20,22 @@ export type QueryOptions = {
|
|
|
17
20
|
allowOrderBy?: boolean;
|
|
18
21
|
throws?: boolean;
|
|
19
22
|
};
|
|
23
|
+
export type OrderLimitOffsetExtract = {
|
|
24
|
+
orderBy?: OrderBySelector<any>[];
|
|
25
|
+
limit?: number;
|
|
26
|
+
offset?: number;
|
|
27
|
+
};
|
|
28
|
+
export type DirectionLimitOffset = {
|
|
29
|
+
direction?: OrderDirection;
|
|
30
|
+
limit?: number;
|
|
31
|
+
offset?: number;
|
|
32
|
+
};
|
|
33
|
+
export type PreparedStatement<M extends Model> = {
|
|
34
|
+
class: Constructor<M>;
|
|
35
|
+
method: string;
|
|
36
|
+
args: any[];
|
|
37
|
+
params: DirectionLimitOffset;
|
|
38
|
+
};
|
|
20
39
|
/**
|
|
21
40
|
* @description
|
|
22
41
|
* Structured query object representing parsed query clauses.
|
|
@@ -34,7 +53,7 @@ export type QueryOptions = {
|
|
|
34
53
|
export interface QueryAssist {
|
|
35
54
|
action: "find";
|
|
36
55
|
select: undefined | string[];
|
|
37
|
-
where
|
|
56
|
+
where?: Condition<any>;
|
|
38
57
|
groupBy?: string[];
|
|
39
58
|
orderBy?: OrderBySelector<any>[];
|
|
40
59
|
limit: number | undefined;
|
package/lib/query/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/query/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/query/types.ts"],"names":[],"mappings":";;;AAmEA;;;;;;;;;;GAUG;AACH,IAAY,WASX;AATD,WAAY,WAAW;IACrB,iCAAkB,CAAA;IAClB,gCAAiB,CAAA;IACjB,0BAAW,CAAA;IACX,wBAAS,CAAA;IACT,mCAAoB,CAAA;IACpB,mCAAoB,CAAA;IACpB,4BAAa,CAAA;IACb,iCAAkB,CAAA;AACpB,CAAC,EATW,WAAW,2BAAX,WAAW,QAStB"}
|
package/lib/ram/RamAdapter.cjs
CHANGED
|
@@ -9,6 +9,7 @@ const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
|
9
9
|
const handlers_1 = require("./handlers.cjs");
|
|
10
10
|
const constants_1 = require("./constants.cjs");
|
|
11
11
|
const decoration_1 = require("@decaf-ts/decoration");
|
|
12
|
+
const RamPaginator_1 = require("./RamPaginator.cjs");
|
|
12
13
|
/**
|
|
13
14
|
* @description In-memory adapter for data persistence
|
|
14
15
|
* @summary The RamAdapter provides an in-memory implementation of the persistence layer.
|
|
@@ -55,7 +56,6 @@ const decoration_1 = require("@decaf-ts/decoration");
|
|
|
55
56
|
class RamAdapter extends persistence_1.Adapter {
|
|
56
57
|
constructor(conf = {}, alias) {
|
|
57
58
|
super(conf, constants_1.RamFlavour, alias);
|
|
58
|
-
this.Context = db_decorators_1.Context;
|
|
59
59
|
this.indexes = {};
|
|
60
60
|
this.lock = new transactional_decorators_1.Lock();
|
|
61
61
|
}
|
|
@@ -403,6 +403,9 @@ class RamAdapter extends persistence_1.Adapter {
|
|
|
403
403
|
Statement() {
|
|
404
404
|
return new RamStatement_1.RamStatement(this);
|
|
405
405
|
}
|
|
406
|
+
Paginator(query, size, clazz) {
|
|
407
|
+
return new RamPaginator_1.RamPaginator(this, query, size, clazz);
|
|
408
|
+
}
|
|
406
409
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
407
410
|
for(config, ...args) {
|
|
408
411
|
if (!this.proxies)
|
package/lib/ram/RamAdapter.d.ts
CHANGED
|
@@ -5,7 +5,8 @@ import { Dispatch } from "../persistence/Dispatch";
|
|
|
5
5
|
import { Adapter } from "../persistence";
|
|
6
6
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
7
7
|
import { BaseError, OperationKeys, PrimaryKeyType } from "@decaf-ts/db-decorators";
|
|
8
|
-
import { Constructor } from "@decaf-ts/decoration";
|
|
8
|
+
import type { Constructor } from "@decaf-ts/decoration";
|
|
9
|
+
import { RamPaginator } from "./RamPaginator";
|
|
9
10
|
/**
|
|
10
11
|
* @description In-memory adapter for data persistence
|
|
11
12
|
* @summary The RamAdapter provides an in-memory implementation of the persistence layer.
|
|
@@ -71,7 +72,6 @@ export declare class RamAdapter extends Adapter<RamConfig, RamStorage, RawRamQue
|
|
|
71
72
|
*/
|
|
72
73
|
flags<M extends Model<boolean>>(operation: OperationKeys, model: Constructor<M>, flags: Partial<RamFlags>): Promise<RamFlags>;
|
|
73
74
|
protected Dispatch(): Dispatch<RamAdapter>;
|
|
74
|
-
Context: Constructor<RamContext>;
|
|
75
75
|
private indexes;
|
|
76
76
|
private lock;
|
|
77
77
|
/**
|
|
@@ -296,6 +296,7 @@ export declare class RamAdapter extends Adapter<RamConfig, RamStorage, RawRamQue
|
|
|
296
296
|
* @return {RamStatement<M, any>} A new statement builder instance
|
|
297
297
|
*/
|
|
298
298
|
Statement<M extends Model<boolean>>(): RamStatement<M, any, Adapter<any, any, RawRamQuery<M>, RamContext>>;
|
|
299
|
+
Paginator<M extends Model<boolean>>(query: RawRamQuery, size: number, clazz: Constructor<M>): RamPaginator<M, any>;
|
|
299
300
|
for(config: Partial<RamConfig>, ...args: any[]): typeof this;
|
|
300
301
|
/**
|
|
301
302
|
* @description Sets up RAM-specific decorations for model properties
|