vsrepo 2.5.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +611 -531
- package/LICENSE +20 -20
- package/README.md +221 -1243
- package/README.pt-BR.md +221 -1246
- package/dist/VSRepoAdapter.d.ts +12 -0
- package/dist/VSRepoAdapter.js.map +1 -1
- package/dist/VSRepository.d.ts +93 -5
- package/dist/VSRepository.js +116 -35
- package/dist/VSRepository.js.map +1 -1
- package/dist/decorators/dynamic-method.decorator.d.ts +1 -1
- package/dist/decorators/dynamic-method.decorator.js +2 -4
- package/dist/decorators/dynamic-method.decorator.js.map +1 -1
- package/dist/decorators/query-method.decorator.d.ts +3 -24
- package/dist/decorators/query-method.decorator.js +4 -27
- package/dist/decorators/query-method.decorator.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/enums/vsrepo-error-type.enum.d.ts +3 -1
- package/dist/internal/enums/vsrepo-error-type.enum.js +2 -0
- package/dist/internal/enums/vsrepo-error-type.enum.js.map +1 -1
- package/dist/internal/resolvers/dynamic-methods.resolver.d.ts +7 -1
- package/dist/internal/resolvers/dynamic-methods.resolver.js +191 -112
- package/dist/internal/resolvers/dynamic-methods.resolver.js.map +1 -1
- package/dist/internal/utils/vs-logger.util.js.map +1 -1
- package/dist/internal/utils/vs-placeholder-parser.util.d.ts +2 -0
- package/dist/internal/utils/vs-placeholder-parser.util.js +62 -0
- package/dist/internal/utils/vs-placeholder-parser.util.js.map +1 -0
- package/dist/internal/utils/vs-query-builder.util.d.ts +239 -0
- package/dist/internal/utils/vs-query-builder.util.js +401 -0
- package/dist/internal/utils/vs-query-builder.util.js.map +1 -0
- package/dist/internal/utils/vs-raw-query-builder.util.d.ts +238 -0
- package/dist/internal/utils/vs-raw-query-builder.util.js +433 -0
- package/dist/internal/utils/vs-raw-query-builder.util.js.map +1 -0
- package/dist/internal/utils/vs-sql.util.d.ts +100 -0
- package/dist/internal/utils/vs-sql.util.js +151 -0
- package/dist/internal/utils/vs-sql.util.js.map +1 -0
- package/dist/internal/utils/with-db.util.js.map +1 -1
- package/dist/internal/validators/decorators.validator.js +3 -7
- package/dist/internal/validators/decorators.validator.js.map +1 -1
- package/dist/internal/validators/schemas/pagination.schema.d.ts +2 -2
- package/dist/internal/validators/schemas/pagination.schema.js +2 -2
- package/dist/internal/validators/schemas/pagination.schema.js.map +1 -1
- package/dist/internal/validators/schemas/relations.schema.d.ts +4 -0
- package/dist/internal/validators/schemas/relations.schema.js +39 -0
- package/dist/internal/validators/schemas/relations.schema.js.map +1 -0
- package/dist/internal/validators/schemas/see-mode.schema.d.ts +3 -0
- package/dist/internal/validators/schemas/see-mode.schema.js +38 -0
- package/dist/internal/validators/schemas/see-mode.schema.js.map +1 -0
- package/dist/internal/validators/schemas/select.schema.d.ts +4 -0
- package/dist/internal/validators/schemas/select.schema.js +39 -0
- package/dist/internal/validators/schemas/select.schema.js.map +1 -0
- package/dist/internal/validators/vsrepo.validator.js +7 -5
- package/dist/internal/validators/vsrepo.validator.js.map +1 -1
- package/dist/types/dynamic-methods/dynamic-method-info.type.d.ts +1 -0
- package/dist/types/utils/query-args.type.d.ts +1 -4
- package/dist/types/vsrepo/vs-raw-query-builder-cte-query.type.d.ts +8 -0
- package/dist/types/vsrepo/vs-raw-query-builder-cte-query.type.js +3 -0
- package/dist/types/vsrepo/vs-raw-query-builder-cte-query.type.js.map +1 -0
- package/dist/types/vsrepo/vs-raw-query-builder-target.type.d.ts +7 -0
- package/dist/types/vsrepo/vs-raw-query-builder-target.type.js +3 -0
- package/dist/types/vsrepo/vs-raw-query-builder-target.type.js.map +1 -0
- package/dist/types/vsrepo/vsrepo-options.type.d.ts +27 -0
- package/package.json +88 -80
package/dist/VSRepoAdapter.d.ts
CHANGED
|
@@ -108,4 +108,16 @@ export declare abstract class VSRepoAdapter<T> {
|
|
|
108
108
|
abstract max(field: NumericKeys<T>, where?: VSRepoWhere<T>, options?: AdapterMethodOptions<T>): Promise<number | null>;
|
|
109
109
|
/** Optional method for the adapter itself to return the "pkName", instead of the user having to configure it manually in the VSRepository constructor. */
|
|
110
110
|
getPkName?(): string;
|
|
111
|
+
/**
|
|
112
|
+
* Optional method for the adapter to declare the placeholder syntax its
|
|
113
|
+
* database/driver expects in a raw `query()` string, given the 0-based
|
|
114
|
+
* position of the parameter in the `args` array (e.g. Postgres would
|
|
115
|
+
* return `` `$${index + 1}` ``, SQLite/MySQL would ignore `index` and
|
|
116
|
+
* always return `"?"`).
|
|
117
|
+
*
|
|
118
|
+
* Implementing this is what lets `VSRepository.query()` accept a `VSSql`
|
|
119
|
+
* fragment (built with `VSSql.sql`/`raw`/`join`/`empty`) in addition to a
|
|
120
|
+
* plain string: without it, passing a `VSSql` fragment throws.
|
|
121
|
+
*/
|
|
122
|
+
getPlaceholder?(index: number): string;
|
|
111
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VSRepoAdapter.js","sourceRoot":"","sources":["../src/VSRepoAdapter.ts"],"names":[],"mappings":";;;AAQA;;;;;;;;;;;GAWG;AACH,MAAsB,aAAa;
|
|
1
|
+
{"version":3,"file":"VSRepoAdapter.js","sourceRoot":"","sources":["../src/VSRepoAdapter.ts"],"names":[],"mappings":";;;AAQA;;;;;;;;;;;GAWG;AACH,MAAsB,aAAa;CA6LlC;AA7LD,sCA6LC"}
|
package/dist/VSRepository.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import "reflect-metadata";
|
|
2
1
|
import { VSRepoOptions } from "./types/vsrepo/vsrepo-options.type";
|
|
3
2
|
import { CountResult } from "./types/utils/count-result.type";
|
|
4
3
|
import { DeepPartial } from "./types/utils/deep-partial.type";
|
|
@@ -12,6 +11,9 @@ import { Pagination } from "./types/utils/pagination.type";
|
|
|
12
11
|
import { VSRepoQueryOptions } from "./types/vsrepo/vsrepo-query-options.type";
|
|
13
12
|
import { NumericKeys } from "./types/utils/numeric-keys.type";
|
|
14
13
|
import { RestrictMethodOptions } from "./types/utils/restrict-method-options.type";
|
|
14
|
+
import { VSQueryBuilder } from "./internal/utils/vs-query-builder.util";
|
|
15
|
+
import { VSRawQueryBuilder } from "./internal/utils/vs-raw-query-builder.util";
|
|
16
|
+
import { VSSql } from "./internal/utils/vs-sql.util";
|
|
15
17
|
/**
|
|
16
18
|
* ORM-agnostic base repository, exposing a complete set of ready-to-use CRUD
|
|
17
19
|
* and soft-delete methods around an entity, plus any `@DynamicMethod`/`@QueryMethod`
|
|
@@ -51,11 +53,35 @@ export declare abstract class VSRepository<Entity, PKType, OrmTypes extends VSRe
|
|
|
51
53
|
private readonly validator;
|
|
52
54
|
private readonly softRemoveKey?;
|
|
53
55
|
private readonly defaultOrdering?;
|
|
56
|
+
private readonly vsPlaceholders;
|
|
57
|
+
/**
|
|
58
|
+
* Whether `resolveDynamicMethods` has already run once for this instance.
|
|
59
|
+
* Used to warn on redundant re-resolutions (e.g. calling it manually
|
|
60
|
+
* more than once, or on top of an already-eager resolution).
|
|
61
|
+
*/
|
|
62
|
+
private dynamicMethodsResolved;
|
|
54
63
|
/**
|
|
55
64
|
* Creates a configured instance of `VSRepository`, resolving and validating
|
|
56
65
|
* every `@DynamicMethod`/`@QueryMethod` declared on the subclass.
|
|
57
66
|
*/
|
|
58
67
|
constructor(options: VSRepoOptions<Entity, PKType>);
|
|
68
|
+
/**
|
|
69
|
+
* Resolves every `@DynamicMethod`/`@QueryMethod` field declared on the
|
|
70
|
+
* subclass, assigning each one a working implementation on `this`.
|
|
71
|
+
*
|
|
72
|
+
* Called automatically at the end of the constructor unless
|
|
73
|
+
* `lazyDynamicMethods: true` was passed in the options — in that case,
|
|
74
|
+
* the subclass is responsible for calling it manually to make its
|
|
75
|
+
* dynamic/query methods available.
|
|
76
|
+
*
|
|
77
|
+
* Calling this method again after it has already resolved once is
|
|
78
|
+
* harmless but redundant — it just re-runs the resolution and logs a
|
|
79
|
+
* `WARN`, since it's usually a sign of a mistake.
|
|
80
|
+
*/
|
|
81
|
+
protected resolveDynamicMethods(): {
|
|
82
|
+
dynamicMethodsCount: number;
|
|
83
|
+
queryMethodsCount: number;
|
|
84
|
+
};
|
|
59
85
|
private fail;
|
|
60
86
|
private wherePk;
|
|
61
87
|
private wherePkIn;
|
|
@@ -67,15 +93,64 @@ export declare abstract class VSRepository<Entity, PKType, OrmTypes extends VSRe
|
|
|
67
93
|
transaction<R, TX = OrmTypes["dbTransaction"]>(fn: (tx: TX) => Promise<R>, options?: VSRepoTransactionOptions): Promise<R>;
|
|
68
94
|
/** Returns the underlying ORM client instance used outside of transactions. */
|
|
69
95
|
getDbClient<DB extends any = OrmTypes["dbClient"]>(): DB;
|
|
96
|
+
/**
|
|
97
|
+
* Creates a fluent {@link VSQueryBuilder} for queries assembled at runtime (optional filters,
|
|
98
|
+
* user-controlled ordering and pagination, ...). Nothing runs until one of its terminal methods
|
|
99
|
+
* (`getResult`, `getCount`, `getResultAndCount`, ...) is called.
|
|
100
|
+
*
|
|
101
|
+
* @param db Client or transaction the query runs on. Defaults to the repository's client; it can
|
|
102
|
+
* also be set later with {@link VSQueryBuilder.setDb}.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* const users = await userRepository
|
|
107
|
+
* .createQueryBuilder()
|
|
108
|
+
* .where({ active: true })
|
|
109
|
+
* .orderBy({ createdAt: "desc" })
|
|
110
|
+
* .limit(10)
|
|
111
|
+
* .getResult();
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
createQueryBuilder(db?: OrmTypes["dbClient"] | OrmTypes["dbTransaction"]): VSQueryBuilder<Entity, OrmTypes>;
|
|
115
|
+
/**
|
|
116
|
+
* Returns a fluent {@link VSRawQueryBuilder}, for hand-written `SELECT` queries whose SQL is
|
|
117
|
+
* too specific (window functions, vendor-specific syntax, ad-hoc subqueries, ...) for
|
|
118
|
+
* {@link VSRepository.createQueryBuilder}'s `where`/`relations` model.
|
|
119
|
+
*
|
|
120
|
+
* Goes through the same adapter as every other method, and requires the adapter to implement
|
|
121
|
+
* `getPlaceholder()` (see {@link VSSql}). Nothing runs until
|
|
122
|
+
* {@link VSRawQueryBuilder.execute} is called.
|
|
123
|
+
*
|
|
124
|
+
* @param db Client or transaction to run in. Defaults to the repository's own client — see
|
|
125
|
+
* `VSRawQueryBuilder.setDb()` to change it later, or run inside a `transaction()`.
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* const rows = await userRepository
|
|
130
|
+
* .createRawQueryBuilder()
|
|
131
|
+
* .select("id", "name")
|
|
132
|
+
* .from("user")
|
|
133
|
+
* .where(VSSql.sql`active = ${true}`)
|
|
134
|
+
* .orderBy("name")
|
|
135
|
+
* .limit(20)
|
|
136
|
+
* .execute<User[]>();
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
createRawQueryBuilder(db?: OrmTypes["dbClient"] | OrmTypes["dbTransaction"]): VSRawQueryBuilder<OrmTypes>;
|
|
70
140
|
/**
|
|
71
141
|
* Executes a raw query/statement directly against the underlying database.
|
|
72
142
|
*
|
|
73
|
-
*
|
|
74
|
-
* values directly into `query`, to
|
|
75
|
-
*
|
|
143
|
+
* Accepts either a plain SQL string — use placeholders for values passed
|
|
144
|
+
* via `options.args`, never interpolate values directly into `query`, to
|
|
145
|
+
* avoid SQL injection; the placeholder syntax depends on the
|
|
146
|
+
* database/driver behind your adapter — or a `VSSql` fragment built with
|
|
147
|
+
* `VSSql.sql`/`raw`/`join`/`empty`, which is parameterized automatically
|
|
148
|
+
* and compiled using your adapter's own placeholder syntax (requires the
|
|
149
|
+
* adapter to implement `getPlaceholder()`; see {@link VSSql}).
|
|
150
|
+
*
|
|
76
151
|
* Set `options.modifying: true` for `INSERT`/`UPDATE`/`DELETE` statements.
|
|
77
152
|
* Set `options.singleResult: true` to collapse an array result into its
|
|
78
|
-
* first element (`null` if empty)
|
|
153
|
+
* first element (`null` if empty).
|
|
79
154
|
*
|
|
80
155
|
* @example
|
|
81
156
|
* ```typescript
|
|
@@ -95,9 +170,22 @@ export declare abstract class VSRepository<Entity, PKType, OrmTypes extends VSRe
|
|
|
95
170
|
* 'SELECT * FROM "user" WHERE id = $1 LIMIT 1',
|
|
96
171
|
* { args: ["123"], singleResult: true },
|
|
97
172
|
* );
|
|
173
|
+
*
|
|
174
|
+
* // Same thing, built with a `VSSql` fragment instead of a hand-written
|
|
175
|
+
* // placeholder string — `email` is still sent as a parameter.
|
|
176
|
+
* const usersViaSql = await userRepository.query<User[]>(VSSql.sql`SELECT * FROM "user" WHERE email = ${"joao@email.com"}`);
|
|
177
|
+
*
|
|
178
|
+
* // With `vsPlaceholders: true` in the constructor options, plain
|
|
179
|
+
* // strings use VSRepository's own `?1`, `?2`, ... placeholders instead
|
|
180
|
+
* // of the adapter's native syntax — `?1` may repeat to reuse an arg.
|
|
181
|
+
* const usersViaVsPlaceholders = await userRepository.query<User[]>(
|
|
182
|
+
* 'SELECT * FROM "user" WHERE email = ?1',
|
|
183
|
+
* { args: ["joao@email.com"] },
|
|
184
|
+
* );
|
|
98
185
|
* ```
|
|
99
186
|
*/
|
|
100
187
|
query<T = any>(query: string, options?: VSRepoQueryOptions<OrmTypes>): Promise<T>;
|
|
188
|
+
query<T = any>(sql: VSSql, options?: Omit<VSRepoQueryOptions<OrmTypes>, "args">): Promise<T>;
|
|
101
189
|
/** Fetches a record by its primary key (PK). */
|
|
102
190
|
get(pk: PKType, options?: MethodOptions<Entity, OrmTypes>): Promise<Entity | null>;
|
|
103
191
|
/** Fetches a record by PK and throws an Error if not found. */
|
package/dist/VSRepository.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.VSRepository = void 0;
|
|
4
|
-
require("reflect-metadata");
|
|
5
4
|
const merge_wheres_resolver_1 = require("./internal/resolvers/merge-wheres.resolver");
|
|
6
5
|
const vs_logger_util_1 = require("./internal/utils/vs-logger.util");
|
|
7
6
|
const vs_log_level_enum_1 = require("./internal/enums/vs-log-level.enum");
|
|
@@ -9,6 +8,10 @@ const vsrepo_validator_1 = require("./internal/validators/vsrepo.validator");
|
|
|
9
8
|
const dynamic_methods_resolver_1 = require("./internal/resolvers/dynamic-methods.resolver");
|
|
10
9
|
const VSRepoError_1 = require("./errors/VSRepoError");
|
|
11
10
|
const vsrepo_error_type_enum_1 = require("./internal/enums/vsrepo-error-type.enum");
|
|
11
|
+
const vs_query_builder_util_1 = require("./internal/utils/vs-query-builder.util");
|
|
12
|
+
const vs_raw_query_builder_util_1 = require("./internal/utils/vs-raw-query-builder.util");
|
|
13
|
+
const vs_sql_util_1 = require("./internal/utils/vs-sql.util");
|
|
14
|
+
const vs_placeholder_parser_util_1 = require("./internal/utils/vs-placeholder-parser.util");
|
|
12
15
|
/**
|
|
13
16
|
* ORM-agnostic base repository, exposing a complete set of ready-to-use CRUD
|
|
14
17
|
* and soft-delete methods around an entity, plus any `@DynamicMethod`/`@QueryMethod`
|
|
@@ -48,11 +51,18 @@ class VSRepository {
|
|
|
48
51
|
validator;
|
|
49
52
|
softRemoveKey;
|
|
50
53
|
defaultOrdering;
|
|
54
|
+
vsPlaceholders;
|
|
55
|
+
/**
|
|
56
|
+
* Whether `resolveDynamicMethods` has already run once for this instance.
|
|
57
|
+
* Used to warn on redundant re-resolutions (e.g. calling it manually
|
|
58
|
+
* more than once, or on top of an already-eager resolution).
|
|
59
|
+
*/
|
|
60
|
+
dynamicMethodsResolved = false;
|
|
51
61
|
/**
|
|
52
62
|
* This is a property managed by VSRepository, please don't modify it!!
|
|
53
63
|
* @internal
|
|
54
64
|
*/
|
|
55
|
-
|
|
65
|
+
_vsrepocache = new Map();
|
|
56
66
|
/**
|
|
57
67
|
* Creates a configured instance of `VSRepository`, resolving and validating
|
|
58
68
|
* every `@DynamicMethod`/`@QueryMethod` declared on the subclass.
|
|
@@ -72,17 +82,47 @@ class VSRepository {
|
|
|
72
82
|
}
|
|
73
83
|
this.softRemoveKey = optionsValidated.softRemoveKey;
|
|
74
84
|
this.defaultOrdering = optionsValidated.defaultOrdering;
|
|
85
|
+
this.vsPlaceholders = optionsValidated.vsPlaceholders ?? false;
|
|
86
|
+
if (this.vsPlaceholders && !this.adapter.getPlaceholder) {
|
|
87
|
+
throw new VSRepoError_1.VSRepoError("'vsPlaceholders' is enabled but your adapter did not implement the 'getPlaceholder' method; try updating your adapter to a newer version or disable 'vsPlaceholders'.", vsrepo_error_type_enum_1.VSRepoErrorType.VALIDATOR);
|
|
88
|
+
}
|
|
75
89
|
this.mergeWheresResolver = new merge_wheres_resolver_1.MergeWheresResolver(this.softRemoveKey);
|
|
76
90
|
this.logger = new vs_logger_util_1.VSLogger(optionsValidated.logLevel ?? vs_log_level_enum_1.VSLogLevel.WARN, this.constructor.name + "Logger", optionsValidated.logSlowThresholdMs);
|
|
77
91
|
this.validator.setLogger(this.logger);
|
|
78
92
|
this.logger.logInfo(`Initializing ${this.constructor.name} (pk: '${String(this.pkName)}'` +
|
|
79
93
|
(this.softRemoveKey ? `, softRemoveKey: '${String(this.softRemoveKey)}'` : "") +
|
|
80
|
-
(this.defaultOrdering
|
|
81
|
-
? `, defaultOrdering: ${JSON.stringify(this.defaultOrdering)}`
|
|
82
|
-
: "") +
|
|
94
|
+
(this.defaultOrdering ? `, defaultOrdering: ${JSON.stringify(this.defaultOrdering)}` : "") +
|
|
83
95
|
`, adapter: ${this.adapter.constructor.name}` +
|
|
84
96
|
`)`);
|
|
85
|
-
|
|
97
|
+
let dynamicMethodsCount;
|
|
98
|
+
let queryMethodsCount;
|
|
99
|
+
if (!optionsValidated.lazyDynamicMethods) {
|
|
100
|
+
const result = this.resolveDynamicMethods();
|
|
101
|
+
dynamicMethodsCount = result.dynamicMethodsCount;
|
|
102
|
+
queryMethodsCount = result.queryMethodsCount;
|
|
103
|
+
}
|
|
104
|
+
this.logger.logInfo(`${this.constructor.name} ready (${optionsValidated.lazyDynamicMethods ? "Resolution of dynamic methods postponed" : `${dynamicMethodsCount} dynamic method(s), ${queryMethodsCount} query method(s) resolved`})`);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Resolves every `@DynamicMethod`/`@QueryMethod` field declared on the
|
|
108
|
+
* subclass, assigning each one a working implementation on `this`.
|
|
109
|
+
*
|
|
110
|
+
* Called automatically at the end of the constructor unless
|
|
111
|
+
* `lazyDynamicMethods: true` was passed in the options — in that case,
|
|
112
|
+
* the subclass is responsible for calling it manually to make its
|
|
113
|
+
* dynamic/query methods available.
|
|
114
|
+
*
|
|
115
|
+
* Calling this method again after it has already resolved once is
|
|
116
|
+
* harmless but redundant — it just re-runs the resolution and logs a
|
|
117
|
+
* `WARN`, since it's usually a sign of a mistake.
|
|
118
|
+
*/
|
|
119
|
+
resolveDynamicMethods() {
|
|
120
|
+
if (this.dynamicMethodsResolved) {
|
|
121
|
+
this.logger.logWarn(`resolveDynamicMethods() was called more than once on ${this.constructor.name}. ` +
|
|
122
|
+
`If you are calling it manually, make sure lazyDynamicMethods is set to true ` +
|
|
123
|
+
`in the constructor options to skip the automatic resolution.`);
|
|
124
|
+
}
|
|
125
|
+
const dynamicMethodsResolver = new dynamic_methods_resolver_1.DynamicMethodsResolver(this.logger, this.adapter, this.mergeWheresResolver, this.validator, this.defaultOrdering, this.vsPlaceholders);
|
|
86
126
|
let dynamicMethodsCount = 0;
|
|
87
127
|
let queryMethodsCount = 0;
|
|
88
128
|
try {
|
|
@@ -97,7 +137,8 @@ class VSRepository {
|
|
|
97
137
|
this.logger.logError(`Failed to initialize ${this.constructor.name}`, err);
|
|
98
138
|
throw err;
|
|
99
139
|
}
|
|
100
|
-
this.
|
|
140
|
+
this.dynamicMethodsResolved = true;
|
|
141
|
+
return { dynamicMethodsCount, queryMethodsCount };
|
|
101
142
|
}
|
|
102
143
|
// * Loga o erro antes de lançar, pra guard clauses (mau uso da API) não passarem em silêncio
|
|
103
144
|
fail(message, type) {
|
|
@@ -144,41 +185,83 @@ class VSRepository {
|
|
|
144
185
|
return this.adapter.getDbClient();
|
|
145
186
|
}
|
|
146
187
|
/**
|
|
147
|
-
*
|
|
188
|
+
* Creates a fluent {@link VSQueryBuilder} for queries assembled at runtime (optional filters,
|
|
189
|
+
* user-controlled ordering and pagination, ...). Nothing runs until one of its terminal methods
|
|
190
|
+
* (`getResult`, `getCount`, `getResultAndCount`, ...) is called.
|
|
148
191
|
*
|
|
149
|
-
*
|
|
150
|
-
*
|
|
151
|
-
* syntax depends on the database/driver behind your adapter.
|
|
152
|
-
* Set `options.modifying: true` for `INSERT`/`UPDATE`/`DELETE` statements.
|
|
153
|
-
* Set `options.singleResult: true` to collapse an array result into its
|
|
154
|
-
* first element (`null` if empty) — see {@link VSRepoQueryOptions.singleResult}.
|
|
192
|
+
* @param db Client or transaction the query runs on. Defaults to the repository's client; it can
|
|
193
|
+
* also be set later with {@link VSQueryBuilder.setDb}.
|
|
155
194
|
*
|
|
156
195
|
* @example
|
|
157
196
|
* ```typescript
|
|
158
|
-
* const users = await userRepository
|
|
159
|
-
*
|
|
160
|
-
* {
|
|
161
|
-
* )
|
|
197
|
+
* const users = await userRepository
|
|
198
|
+
* .createQueryBuilder()
|
|
199
|
+
* .where({ active: true })
|
|
200
|
+
* .orderBy({ createdAt: "desc" })
|
|
201
|
+
* .limit(10)
|
|
202
|
+
* .getResult();
|
|
203
|
+
* ```
|
|
204
|
+
*/
|
|
205
|
+
createQueryBuilder(db) {
|
|
206
|
+
return new vs_query_builder_util_1.VSQueryBuilder(db ?? this.adapter.getDbClient(), this.adapter, this.mergeWheresResolver, this.logger);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Returns a fluent {@link VSRawQueryBuilder}, for hand-written `SELECT` queries whose SQL is
|
|
210
|
+
* too specific (window functions, vendor-specific syntax, ad-hoc subqueries, ...) for
|
|
211
|
+
* {@link VSRepository.createQueryBuilder}'s `where`/`relations` model.
|
|
212
|
+
*
|
|
213
|
+
* Goes through the same adapter as every other method, and requires the adapter to implement
|
|
214
|
+
* `getPlaceholder()` (see {@link VSSql}). Nothing runs until
|
|
215
|
+
* {@link VSRawQueryBuilder.execute} is called.
|
|
162
216
|
*
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
* { args: ["123"], modifying: true },
|
|
166
|
-
* );
|
|
217
|
+
* @param db Client or transaction to run in. Defaults to the repository's own client — see
|
|
218
|
+
* `VSRawQueryBuilder.setDb()` to change it later, or run inside a `transaction()`.
|
|
167
219
|
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
* const
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```typescript
|
|
222
|
+
* const rows = await userRepository
|
|
223
|
+
* .createRawQueryBuilder()
|
|
224
|
+
* .select("id", "name")
|
|
225
|
+
* .from("user")
|
|
226
|
+
* .where(VSSql.sql`active = ${true}`)
|
|
227
|
+
* .orderBy("name")
|
|
228
|
+
* .limit(20)
|
|
229
|
+
* .execute<User[]>();
|
|
174
230
|
* ```
|
|
175
231
|
*/
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
232
|
+
createRawQueryBuilder(db) {
|
|
233
|
+
return new vs_raw_query_builder_util_1.VSRawQueryBuilder(db ?? this.adapter.getDbClient(), this.adapter, this.logger);
|
|
234
|
+
}
|
|
235
|
+
async query(queryOrSql, options) {
|
|
236
|
+
let query;
|
|
237
|
+
let args = options?.args;
|
|
238
|
+
const sqlFragment = queryOrSql instanceof vs_sql_util_1.VSSql
|
|
239
|
+
? queryOrSql
|
|
240
|
+
: typeof queryOrSql === "string" && this.vsPlaceholders
|
|
241
|
+
? vs_placeholder_parser_util_1.VSPlaceholdersParser.parse(queryOrSql, args ?? [])
|
|
242
|
+
: undefined;
|
|
243
|
+
if (sqlFragment) {
|
|
244
|
+
if (!this.adapter.getPlaceholder) {
|
|
245
|
+
this.fail("Your adapter did not implement the 'getPlaceholder' method, required to compile a 'VSSql' fragment or a 'vsPlaceholders' query; try updating your adapter to a newer version.", vsrepo_error_type_enum_1.VSRepoErrorType.VALIDATOR);
|
|
246
|
+
}
|
|
247
|
+
const compiled = sqlFragment.compile(index => this.adapter.getPlaceholder(index));
|
|
248
|
+
query = compiled.text;
|
|
249
|
+
args = compiled.args;
|
|
250
|
+
}
|
|
251
|
+
else if (typeof queryOrSql === "string") {
|
|
252
|
+
query = queryOrSql;
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
this.fail("'query' must be a valid string or a 'VSSql' fragment", vsrepo_error_type_enum_1.VSRepoErrorType.BASE);
|
|
179
256
|
}
|
|
180
|
-
const optionsValidated = this.validator.validateQueryOptions(options);
|
|
257
|
+
const optionsValidated = this.validator.validateQueryOptions({ ...options, args });
|
|
181
258
|
optionsValidated.db ??= this.getDbClient();
|
|
259
|
+
this.logger.logDebug(`${this.constructor.name} query:`, {
|
|
260
|
+
query,
|
|
261
|
+
args: optionsValidated.args ?? [],
|
|
262
|
+
modifying: optionsValidated.modifying ?? false,
|
|
263
|
+
singleResult: optionsValidated.singleResult ?? false,
|
|
264
|
+
});
|
|
182
265
|
const start = this.logger.startPerformLog("run query");
|
|
183
266
|
try {
|
|
184
267
|
const result = await this.adapter.query(query, {
|
|
@@ -186,9 +269,7 @@ class VSRepository {
|
|
|
186
269
|
db: optionsValidated.db,
|
|
187
270
|
modifying: optionsValidated.modifying ?? false,
|
|
188
271
|
});
|
|
189
|
-
const resolved = optionsValidated.singleResult && Array.isArray(result)
|
|
190
|
-
? (result[0] ?? null)
|
|
191
|
-
: result;
|
|
272
|
+
const resolved = optionsValidated.singleResult && Array.isArray(result) ? (result[0] ?? null) : result;
|
|
192
273
|
this.logger.endPerformLog(start);
|
|
193
274
|
return resolved;
|
|
194
275
|
}
|
package/dist/VSRepository.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VSRepository.js","sourceRoot":"","sources":["../src/VSRepository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VSRepository.js","sourceRoot":"","sources":["../src/VSRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { DynamicMethodOptions } from "../types/decorators/dynamic-method-options
|
|
|
3
3
|
* Property decorator used to declare a dynamic method on a `VSRepository` subclass.
|
|
4
4
|
*
|
|
5
5
|
* Applied to a `declare` class field whose name follows one of the supported
|
|
6
|
-
* dynamic-method patterns (e.g. `
|
|
6
|
+
* dynamic-method patterns (e.g. `findOneByEmail`, `findByStatusPaginated`,
|
|
7
7
|
* `upsertById`), the method's behavior is inferred from the field name at
|
|
8
8
|
* construction time, optionally adjusted via `options`.
|
|
9
9
|
*
|
|
@@ -7,7 +7,7 @@ const decorators_validator_1 = require("../internal/validators/decorators.valida
|
|
|
7
7
|
* Property decorator used to declare a dynamic method on a `VSRepository` subclass.
|
|
8
8
|
*
|
|
9
9
|
* Applied to a `declare` class field whose name follows one of the supported
|
|
10
|
-
* dynamic-method patterns (e.g. `
|
|
10
|
+
* dynamic-method patterns (e.g. `findOneByEmail`, `findByStatusPaginated`,
|
|
11
11
|
* `upsertById`), the method's behavior is inferred from the field name at
|
|
12
12
|
* construction time, optionally adjusted via `options`.
|
|
13
13
|
*
|
|
@@ -27,9 +27,7 @@ const decorators_validator_1 = require("../internal/validators/decorators.valida
|
|
|
27
27
|
* @publicApi
|
|
28
28
|
*/
|
|
29
29
|
function DynamicMethod(options) {
|
|
30
|
-
const validatedOptions = options
|
|
31
|
-
? decorators_validator_1.DecoratorsValidator.validateDynamicMethodOptions(options)
|
|
32
|
-
: undefined;
|
|
30
|
+
const validatedOptions = options ? decorators_validator_1.DecoratorsValidator.validateDynamicMethodOptions(options) : undefined;
|
|
33
31
|
return (target, propertyKey) => {
|
|
34
32
|
const methods = Reflect.getMetadata(dynamic_methods_key_constant_1.DYNAMIC_METHODS_KEY, target) ?? [];
|
|
35
33
|
methods.push({ ...validatedOptions, propertyKey });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic-method.decorator.js","sourceRoot":"","sources":["../../src/decorators/dynamic-method.decorator.ts"],"names":[],"mappings":";;AA4BA,
|
|
1
|
+
{"version":3,"file":"dynamic-method.decorator.js","sourceRoot":"","sources":["../../src/decorators/dynamic-method.decorator.ts"],"names":[],"mappings":";;AA4BA,sCAUC;AAtCD,qGAAyF;AACzF,sFAAkF;AAIlF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAgB,aAAa,CAAU,OAAiC;IACpE,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,0CAAmB,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEzG,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,EAAE;QACpD,MAAM,OAAO,GAAmB,OAAO,CAAC,WAAW,CAAC,kDAAmB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAEvF,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAC;QAEnD,OAAO,CAAC,cAAc,CAAC,kDAAmB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -9,15 +9,12 @@ import type { QueryMethodOptions } from "../types/decorators/query-method-option
|
|
|
9
9
|
* `spreadArgs: true`, via separate positional arguments instead.
|
|
10
10
|
*
|
|
11
11
|
* The placeholder syntax depends on the database/driver behind your adapter. Check your adapter's
|
|
12
|
-
* documentation for the exact syntax before writing queries
|
|
12
|
+
* documentation for the exact syntax before writing queries — or set `vsPlaceholders: true` in the
|
|
13
|
+
* `VSRepository` constructor options to use `?1`, `?2`, ... instead, regardless of adapter.
|
|
13
14
|
*
|
|
14
15
|
* @param value Raw SQL statement to execute. Use placeholders for the values
|
|
15
16
|
* that will be passed via `args` — never interpolate values directly into `value`.
|
|
16
|
-
* @param options Optional configuration; set `modifying: true` for `INSERT`/`UPDATE`/`DELETE` statements
|
|
17
|
-
* `singleResult: true` to collapse an array result into its first element, and
|
|
18
|
-
* `spreadArgs: true` to receive placeholder values as separate arguments instead of a
|
|
19
|
-
* single `QueryMethodArg` object — see {@link QueryMethodOptions.singleResult} and
|
|
20
|
-
* {@link QueryMethodOptions.spreadArgs}.
|
|
17
|
+
* @param options Optional configuration; set `modifying: true` for `INSERT`/`UPDATE`/`DELETE` statements.
|
|
21
18
|
*
|
|
22
19
|
* @example
|
|
23
20
|
* ```typescript
|
|
@@ -27,25 +24,7 @@ import type { QueryMethodOptions } from "../types/decorators/query-method-option
|
|
|
27
24
|
*
|
|
28
25
|
* @QueryMethod('UPDATE "user" SET active = true WHERE id = $1', { modifying: true })
|
|
29
26
|
* declare activateUser: (arg: QueryMethodArg<[id: string]>) => Promise<number>;
|
|
30
|
-
*
|
|
31
|
-
* // Only one row is ever expected here, so `singleResult` collapses the
|
|
32
|
-
* // array into a single object (or `null` when no row matches).
|
|
33
|
-
* @QueryMethod('SELECT * FROM "user" WHERE id = $1 LIMIT 1', { singleResult: true })
|
|
34
|
-
* declare findByIdRaw: (arg: QueryMethodArg<[id: string]>) => Promise<User | null>;
|
|
35
|
-
*
|
|
36
|
-
* // `spreadArgs: true` takes placeholder values as separate arguments,
|
|
37
|
-
* // JpaRepository style, instead of a single `{ args: [...] }` object.
|
|
38
|
-
* // An optional trailing `withDb(tx)` runs the query in a transaction.
|
|
39
|
-
* @QueryMethod('SELECT * FROM "user" WHERE email = $1 AND "userType" = $2', {
|
|
40
|
-
* spreadArgs: true,
|
|
41
|
-
* })
|
|
42
|
-
* declare findByEmailAndType: (
|
|
43
|
-
* ...args: QueryArgs<[email: string, userType: string]>
|
|
44
|
-
* ) => Promise<User[]>;
|
|
45
27
|
* }
|
|
46
|
-
*
|
|
47
|
-
* await userRepository.findByEmailAndType("joao@email.com", "admin");
|
|
48
|
-
* await userRepository.findByEmailAndType("joao@email.com", "admin", withDb(tx));
|
|
49
28
|
* ```
|
|
50
29
|
*
|
|
51
30
|
* @publicApi
|
|
@@ -15,15 +15,12 @@ const decorators_validator_1 = require("../internal/validators/decorators.valida
|
|
|
15
15
|
* `spreadArgs: true`, via separate positional arguments instead.
|
|
16
16
|
*
|
|
17
17
|
* The placeholder syntax depends on the database/driver behind your adapter. Check your adapter's
|
|
18
|
-
* documentation for the exact syntax before writing queries
|
|
18
|
+
* documentation for the exact syntax before writing queries — or set `vsPlaceholders: true` in the
|
|
19
|
+
* `VSRepository` constructor options to use `?1`, `?2`, ... instead, regardless of adapter.
|
|
19
20
|
*
|
|
20
21
|
* @param value Raw SQL statement to execute. Use placeholders for the values
|
|
21
22
|
* that will be passed via `args` — never interpolate values directly into `value`.
|
|
22
|
-
* @param options Optional configuration; set `modifying: true` for `INSERT`/`UPDATE`/`DELETE` statements
|
|
23
|
-
* `singleResult: true` to collapse an array result into its first element, and
|
|
24
|
-
* `spreadArgs: true` to receive placeholder values as separate arguments instead of a
|
|
25
|
-
* single `QueryMethodArg` object — see {@link QueryMethodOptions.singleResult} and
|
|
26
|
-
* {@link QueryMethodOptions.spreadArgs}.
|
|
23
|
+
* @param options Optional configuration; set `modifying: true` for `INSERT`/`UPDATE`/`DELETE` statements.
|
|
27
24
|
*
|
|
28
25
|
* @example
|
|
29
26
|
* ```typescript
|
|
@@ -33,25 +30,7 @@ const decorators_validator_1 = require("../internal/validators/decorators.valida
|
|
|
33
30
|
*
|
|
34
31
|
* @QueryMethod('UPDATE "user" SET active = true WHERE id = $1', { modifying: true })
|
|
35
32
|
* declare activateUser: (arg: QueryMethodArg<[id: string]>) => Promise<number>;
|
|
36
|
-
*
|
|
37
|
-
* // Only one row is ever expected here, so `singleResult` collapses the
|
|
38
|
-
* // array into a single object (or `null` when no row matches).
|
|
39
|
-
* @QueryMethod('SELECT * FROM "user" WHERE id = $1 LIMIT 1', { singleResult: true })
|
|
40
|
-
* declare findByIdRaw: (arg: QueryMethodArg<[id: string]>) => Promise<User | null>;
|
|
41
|
-
*
|
|
42
|
-
* // `spreadArgs: true` takes placeholder values as separate arguments,
|
|
43
|
-
* // JpaRepository style, instead of a single `{ args: [...] }` object.
|
|
44
|
-
* // An optional trailing `withDb(tx)` runs the query in a transaction.
|
|
45
|
-
* @QueryMethod('SELECT * FROM "user" WHERE email = $1 AND "userType" = $2', {
|
|
46
|
-
* spreadArgs: true,
|
|
47
|
-
* })
|
|
48
|
-
* declare findByEmailAndType: (
|
|
49
|
-
* ...args: QueryArgs<[email: string, userType: string]>
|
|
50
|
-
* ) => Promise<User[]>;
|
|
51
33
|
* }
|
|
52
|
-
*
|
|
53
|
-
* await userRepository.findByEmailAndType("joao@email.com", "admin");
|
|
54
|
-
* await userRepository.findByEmailAndType("joao@email.com", "admin", withDb(tx));
|
|
55
34
|
* ```
|
|
56
35
|
*
|
|
57
36
|
* @publicApi
|
|
@@ -60,9 +39,7 @@ function QueryMethod(value, options) {
|
|
|
60
39
|
if (typeof value !== "string") {
|
|
61
40
|
throw new VSRepoError_1.VSRepoError(`'value' must be a valid string`, vsrepo_error_type_enum_1.VSRepoErrorType.DECORATOR);
|
|
62
41
|
}
|
|
63
|
-
const validatedConfig = options
|
|
64
|
-
? decorators_validator_1.DecoratorsValidator.validateQueryMethodOptions(options)
|
|
65
|
-
: { modifying: false };
|
|
42
|
+
const validatedConfig = decorators_validator_1.DecoratorsValidator.validateQueryMethodOptions(options);
|
|
66
43
|
return (target, propertyKey) => {
|
|
67
44
|
const methods = Reflect.getMetadata(query_methods_key_constant_1.QUERY_METHODS_KEY, target) ?? [];
|
|
68
45
|
methods.push({ ...validatedConfig, value, propertyKey });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-method.decorator.js","sourceRoot":"","sources":["../../src/decorators/query-method.decorator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"query-method.decorator.js","sourceRoot":"","sources":["../../src/decorators/query-method.decorator.ts"],"names":[],"mappings":";;AAqCA,kCAcC;AAnDD,uDAAoD;AACpD,iGAAqF;AACrF,qFAA2E;AAC3E,sFAAkF;AAIlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAgB,WAAW,CAAC,KAAa,EAAE,OAA4B;IACnE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,yBAAW,CAAC,gCAAgC,EAAE,wCAAe,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,eAAe,GAAuB,0CAAmB,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAEpG,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,EAAE;QACpD,MAAM,OAAO,GAAkB,OAAO,CAAC,WAAW,CAAC,8CAAiB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAEpF,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAEzD,OAAO,CAAC,cAAc,CAAC,8CAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC;AACN,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,9 @@ export { VSRepoAdapter } from "./VSRepoAdapter.js";
|
|
|
4
4
|
export { VSRepoError } from "./errors/VSRepoError.js";
|
|
5
5
|
export { VSRepoAdapterError } from "./errors/VSRepoAdapterError.js";
|
|
6
6
|
export { DbArg } from "./internal/utils/db-arg.util.js";
|
|
7
|
+
export { VSQueryBuilder } from "./internal/utils/vs-query-builder.util.js";
|
|
8
|
+
export { VSRawQueryBuilder } from "./internal/utils/vs-raw-query-builder.util.js";
|
|
9
|
+
export { VSSql } from "./internal/utils/vs-sql.util.js";
|
|
7
10
|
export { DynamicMethod } from "./decorators/dynamic-method.decorator.js";
|
|
8
11
|
export { QueryMethod } from "./decorators/query-method.decorator.js";
|
|
9
12
|
export { VSRepoErrorType } from "./internal/enums/vsrepo-error-type.enum.js";
|
|
@@ -40,4 +43,6 @@ export type { NumericKeys } from "./types/utils/numeric-keys.type.js";
|
|
|
40
43
|
export type { NumericLike } from "./types/utils/numeric-like.type.js";
|
|
41
44
|
export type { RestrictMethodOptions } from "./types/utils/restrict-method-options.type.js";
|
|
42
45
|
export type { QueryArgs } from "./types/utils/query-args.type.js";
|
|
46
|
+
export type { VSRawQueryBuilderTarget } from "./types/vsrepo/vs-raw-query-builder-target.type.js";
|
|
47
|
+
export type { VSRawQueryBuilderCteQuery } from "./types/vsrepo/vs-raw-query-builder-cte-query.type.js";
|
|
43
48
|
export { VSLogger } from "./internal/utils/vs-logger.util.js";
|