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.
Files changed (64) hide show
  1. package/CHANGELOG.md +611 -531
  2. package/LICENSE +20 -20
  3. package/README.md +221 -1243
  4. package/README.pt-BR.md +221 -1246
  5. package/dist/VSRepoAdapter.d.ts +12 -0
  6. package/dist/VSRepoAdapter.js.map +1 -1
  7. package/dist/VSRepository.d.ts +93 -5
  8. package/dist/VSRepository.js +116 -35
  9. package/dist/VSRepository.js.map +1 -1
  10. package/dist/decorators/dynamic-method.decorator.d.ts +1 -1
  11. package/dist/decorators/dynamic-method.decorator.js +2 -4
  12. package/dist/decorators/dynamic-method.decorator.js.map +1 -1
  13. package/dist/decorators/query-method.decorator.d.ts +3 -24
  14. package/dist/decorators/query-method.decorator.js +4 -27
  15. package/dist/decorators/query-method.decorator.js.map +1 -1
  16. package/dist/index.d.ts +5 -0
  17. package/dist/index.js +7 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/internal/enums/vsrepo-error-type.enum.d.ts +3 -1
  20. package/dist/internal/enums/vsrepo-error-type.enum.js +2 -0
  21. package/dist/internal/enums/vsrepo-error-type.enum.js.map +1 -1
  22. package/dist/internal/resolvers/dynamic-methods.resolver.d.ts +7 -1
  23. package/dist/internal/resolvers/dynamic-methods.resolver.js +191 -112
  24. package/dist/internal/resolvers/dynamic-methods.resolver.js.map +1 -1
  25. package/dist/internal/utils/vs-logger.util.js.map +1 -1
  26. package/dist/internal/utils/vs-placeholder-parser.util.d.ts +2 -0
  27. package/dist/internal/utils/vs-placeholder-parser.util.js +62 -0
  28. package/dist/internal/utils/vs-placeholder-parser.util.js.map +1 -0
  29. package/dist/internal/utils/vs-query-builder.util.d.ts +239 -0
  30. package/dist/internal/utils/vs-query-builder.util.js +401 -0
  31. package/dist/internal/utils/vs-query-builder.util.js.map +1 -0
  32. package/dist/internal/utils/vs-raw-query-builder.util.d.ts +238 -0
  33. package/dist/internal/utils/vs-raw-query-builder.util.js +433 -0
  34. package/dist/internal/utils/vs-raw-query-builder.util.js.map +1 -0
  35. package/dist/internal/utils/vs-sql.util.d.ts +100 -0
  36. package/dist/internal/utils/vs-sql.util.js +151 -0
  37. package/dist/internal/utils/vs-sql.util.js.map +1 -0
  38. package/dist/internal/utils/with-db.util.js.map +1 -1
  39. package/dist/internal/validators/decorators.validator.js +3 -7
  40. package/dist/internal/validators/decorators.validator.js.map +1 -1
  41. package/dist/internal/validators/schemas/pagination.schema.d.ts +2 -2
  42. package/dist/internal/validators/schemas/pagination.schema.js +2 -2
  43. package/dist/internal/validators/schemas/pagination.schema.js.map +1 -1
  44. package/dist/internal/validators/schemas/relations.schema.d.ts +4 -0
  45. package/dist/internal/validators/schemas/relations.schema.js +39 -0
  46. package/dist/internal/validators/schemas/relations.schema.js.map +1 -0
  47. package/dist/internal/validators/schemas/see-mode.schema.d.ts +3 -0
  48. package/dist/internal/validators/schemas/see-mode.schema.js +38 -0
  49. package/dist/internal/validators/schemas/see-mode.schema.js.map +1 -0
  50. package/dist/internal/validators/schemas/select.schema.d.ts +4 -0
  51. package/dist/internal/validators/schemas/select.schema.js +39 -0
  52. package/dist/internal/validators/schemas/select.schema.js.map +1 -0
  53. package/dist/internal/validators/vsrepo.validator.js +7 -5
  54. package/dist/internal/validators/vsrepo.validator.js.map +1 -1
  55. package/dist/types/dynamic-methods/dynamic-method-info.type.d.ts +1 -0
  56. package/dist/types/utils/query-args.type.d.ts +1 -4
  57. package/dist/types/vsrepo/vs-raw-query-builder-cte-query.type.d.ts +8 -0
  58. package/dist/types/vsrepo/vs-raw-query-builder-cte-query.type.js +3 -0
  59. package/dist/types/vsrepo/vs-raw-query-builder-cte-query.type.js.map +1 -0
  60. package/dist/types/vsrepo/vs-raw-query-builder-target.type.d.ts +7 -0
  61. package/dist/types/vsrepo/vs-raw-query-builder-target.type.js +3 -0
  62. package/dist/types/vsrepo/vs-raw-query-builder-target.type.js.map +1 -0
  63. package/dist/types/vsrepo/vsrepo-options.type.d.ts +27 -0
  64. package/package.json +88 -80
@@ -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;CA4MlC;AA5MD,sCA4MC"}
1
+ {"version":3,"file":"VSRepoAdapter.js","sourceRoot":"","sources":["../src/VSRepoAdapter.ts"],"names":[],"mappings":";;;AAQA;;;;;;;;;;;GAWG;AACH,MAAsB,aAAa;CA6LlC;AA7LD,sCA6LC"}
@@ -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
- * Use placeholders for values passed via `options.args` — never interpolate
74
- * values directly into `query`, to avoid SQL injection. The placeholder
75
- * syntax depends on the database/driver behind your adapter.
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) — see {@link VSRepoQueryOptions.singleResult}.
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. */
@@ -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
- $vsrepocache = new Map();
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
- const dynamicMethodsResolver = new dynamic_methods_resolver_1.DynamicMethodsResolver(this.logger, this.adapter, this.mergeWheresResolver, this.validator, this.defaultOrdering);
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.logger.logInfo(`${this.constructor.name} ready (${dynamicMethodsCount} dynamic method(s), ${queryMethodsCount} query method(s) resolved)`);
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
- * Executes a raw query/statement directly against the underlying database.
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
- * Use placeholders for values passed via `options.args` — never interpolate
150
- * values directly into `query`, to avoid SQL injection. The placeholder
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.query<User[]>(
159
- * 'SELECT * FROM "user" WHERE email = $1',
160
- * { args: ["joao@email.com"] },
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
- * const affected = await userRepository.query<number>(
164
- * 'UPDATE "user" SET active = true WHERE id = $1',
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
- * // Only one row is ever expected here, so `singleResult` collapses the
169
- * // array into a single object (or `null` when no row matches).
170
- * const user = await userRepository.query<User | null>(
171
- * 'SELECT * FROM "user" WHERE id = $1 LIMIT 1',
172
- * { args: ["123"], singleResult: true },
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
- async query(query, options) {
177
- if (typeof query !== "string") {
178
- this.fail("'query' must be a valid string", vsrepo_error_type_enum_1.VSRepoErrorType.BASE);
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
  }
@@ -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. `findByEmail`, `findManyByStatusPaginated`,
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. `findByEmail`, `findManyByStatusPaginated`,
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,sCAYC;AAxCD,qGAAyF;AACzF,sFAAkF;AAIlF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAgB,aAAa,CAAU,OAAiC;IACpE,MAAM,gBAAgB,GAAG,OAAO;QAC5B,CAAC,CAAC,0CAAmB,CAAC,4BAA4B,CAAC,OAAO,CAAC;QAC3D,CAAC,CAAC,SAAS,CAAC;IAEhB,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"}
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":";;AA0DA,kCAgBC;AA1ED,uDAAoD;AACpD,iGAAqF;AACrF,qFAA2E;AAC3E,sFAAkF;AAIlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;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,OAAO;QAC/C,CAAC,CAAC,0CAAmB,CAAC,0BAA0B,CAAC,OAAO,CAAC;QACzD,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAE3B,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"}
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";