@venizia/ignis 0.0.5-2 → 0.0.5-20

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 (146) hide show
  1. package/dist/base/applications/abstract.d.ts.map +1 -1
  2. package/dist/base/applications/abstract.js +1 -0
  3. package/dist/base/applications/abstract.js.map +1 -1
  4. package/dist/base/applications/base.d.ts.map +1 -1
  5. package/dist/base/applications/base.js +8 -1
  6. package/dist/base/applications/base.js.map +1 -1
  7. package/dist/base/applications/types.d.ts +10 -1
  8. package/dist/base/applications/types.d.ts.map +1 -1
  9. package/dist/base/controllers/abstract.d.ts +1 -0
  10. package/dist/base/controllers/abstract.d.ts.map +1 -1
  11. package/dist/base/controllers/abstract.js +12 -1
  12. package/dist/base/controllers/abstract.js.map +1 -1
  13. package/dist/base/controllers/common/types.d.ts +5 -1
  14. package/dist/base/controllers/common/types.d.ts.map +1 -1
  15. package/dist/base/controllers/factory/controller.d.ts +15 -6
  16. package/dist/base/controllers/factory/controller.d.ts.map +1 -1
  17. package/dist/base/controllers/factory/controller.js +46 -21
  18. package/dist/base/controllers/factory/controller.js.map +1 -1
  19. package/dist/base/datasources/base.d.ts.map +1 -1
  20. package/dist/base/datasources/base.js +10 -1
  21. package/dist/base/datasources/base.js.map +1 -1
  22. package/dist/base/metadata/index.d.ts +1 -0
  23. package/dist/base/metadata/index.d.ts.map +1 -1
  24. package/dist/base/metadata/index.js +1 -0
  25. package/dist/base/metadata/index.js.map +1 -1
  26. package/dist/base/metadata/request-context.d.ts +3 -0
  27. package/dist/base/metadata/request-context.d.ts.map +1 -0
  28. package/dist/base/metadata/request-context.js +9 -0
  29. package/dist/base/metadata/request-context.js.map +1 -0
  30. package/dist/base/metadata/routes.d.ts +30 -40
  31. package/dist/base/metadata/routes.d.ts.map +1 -1
  32. package/dist/base/metadata/routes.js +15 -5
  33. package/dist/base/metadata/routes.js.map +1 -1
  34. package/dist/base/middlewares/app-error.middleware.d.ts +1 -0
  35. package/dist/base/middlewares/app-error.middleware.d.ts.map +1 -1
  36. package/dist/base/middlewares/app-error.middleware.js +10 -8
  37. package/dist/base/middlewares/app-error.middleware.js.map +1 -1
  38. package/dist/base/middlewares/request-spy.middleware.d.ts.map +1 -1
  39. package/dist/base/middlewares/request-spy.middleware.js +12 -0
  40. package/dist/base/middlewares/request-spy.middleware.js.map +1 -1
  41. package/dist/base/mixins/component.mixin.d.ts.map +1 -1
  42. package/dist/base/mixins/controller.mixin.d.ts.map +1 -1
  43. package/dist/base/mixins/repository.mixin.d.ts.map +1 -1
  44. package/dist/base/mixins/service.mixin.d.ts.map +1 -1
  45. package/dist/base/models/enrichers/id.enricher.d.ts +15 -10
  46. package/dist/base/models/enrichers/id.enricher.d.ts.map +1 -1
  47. package/dist/base/models/enrichers/id.enricher.js +3 -3
  48. package/dist/base/models/enrichers/id.enricher.js.map +1 -1
  49. package/dist/base/models/enrichers/principal.enricher.d.ts +7 -9
  50. package/dist/base/models/enrichers/principal.enricher.d.ts.map +1 -1
  51. package/dist/base/models/enrichers/principal.enricher.js.map +1 -1
  52. package/dist/base/models/enrichers/user-audit.enricher.d.ts +3 -2
  53. package/dist/base/models/enrichers/user-audit.enricher.d.ts.map +1 -1
  54. package/dist/base/models/enrichers/user-audit.enricher.js +47 -11
  55. package/dist/base/models/enrichers/user-audit.enricher.js.map +1 -1
  56. package/dist/base/repositories/common/constants.d.ts +59 -0
  57. package/dist/base/repositories/common/constants.d.ts.map +1 -1
  58. package/dist/base/repositories/common/constants.js +51 -2
  59. package/dist/base/repositories/common/constants.js.map +1 -1
  60. package/dist/base/repositories/common/types.d.ts +482 -44
  61. package/dist/base/repositories/common/types.d.ts.map +1 -1
  62. package/dist/base/repositories/common/types.js +164 -17
  63. package/dist/base/repositories/common/types.js.map +1 -1
  64. package/dist/base/repositories/core/abstract.d.ts +450 -0
  65. package/dist/base/repositories/core/abstract.d.ts.map +1 -0
  66. package/dist/base/repositories/core/abstract.js +287 -0
  67. package/dist/base/repositories/core/abstract.js.map +1 -0
  68. package/dist/base/repositories/core/default-crud.d.ts +2 -2
  69. package/dist/base/repositories/core/default-crud.d.ts.map +1 -1
  70. package/dist/base/repositories/core/index.d.ts +1 -1
  71. package/dist/base/repositories/core/index.d.ts.map +1 -1
  72. package/dist/base/repositories/core/index.js +1 -1
  73. package/dist/base/repositories/core/index.js.map +1 -1
  74. package/dist/base/repositories/core/persistable.d.ts +91 -36
  75. package/dist/base/repositories/core/persistable.d.ts.map +1 -1
  76. package/dist/base/repositories/core/persistable.js +139 -37
  77. package/dist/base/repositories/core/persistable.js.map +1 -1
  78. package/dist/base/repositories/core/readable.d.ts +166 -62
  79. package/dist/base/repositories/core/readable.d.ts.map +1 -1
  80. package/dist/base/repositories/core/readable.js +185 -56
  81. package/dist/base/repositories/core/readable.js.map +1 -1
  82. package/dist/base/repositories/mixins/default-filter.d.ts +65 -0
  83. package/dist/base/repositories/mixins/default-filter.d.ts.map +1 -0
  84. package/dist/base/repositories/mixins/default-filter.js +97 -0
  85. package/dist/base/repositories/mixins/default-filter.js.map +1 -0
  86. package/dist/base/repositories/mixins/fields-visibility.d.ts +74 -0
  87. package/dist/base/repositories/mixins/fields-visibility.d.ts.map +1 -0
  88. package/dist/base/repositories/mixins/fields-visibility.js +129 -0
  89. package/dist/base/repositories/mixins/fields-visibility.js.map +1 -0
  90. package/dist/base/repositories/mixins/index.d.ts +3 -0
  91. package/dist/base/repositories/mixins/index.d.ts.map +1 -0
  92. package/dist/base/repositories/mixins/index.js +19 -0
  93. package/dist/base/repositories/mixins/index.js.map +1 -0
  94. package/dist/base/repositories/operators/filter.d.ts +146 -12
  95. package/dist/base/repositories/operators/filter.d.ts.map +1 -1
  96. package/dist/base/repositories/operators/filter.js +432 -112
  97. package/dist/base/repositories/operators/filter.js.map +1 -1
  98. package/dist/base/repositories/operators/query.d.ts +69 -0
  99. package/dist/base/repositories/operators/query.d.ts.map +1 -1
  100. package/dist/base/repositories/operators/query.js +190 -2
  101. package/dist/base/repositories/operators/query.js.map +1 -1
  102. package/dist/base/repositories/operators/relation.d.ts +33 -0
  103. package/dist/base/repositories/operators/relation.d.ts.map +1 -1
  104. package/dist/base/repositories/operators/relation.js +36 -0
  105. package/dist/base/repositories/operators/relation.js.map +1 -1
  106. package/dist/common/statuses.d.ts +26 -7
  107. package/dist/common/statuses.d.ts.map +1 -1
  108. package/dist/common/statuses.js +96 -9
  109. package/dist/common/statuses.js.map +1 -1
  110. package/dist/components/auth/authenticate/common/constants.d.ts +1 -0
  111. package/dist/components/auth/authenticate/common/constants.d.ts.map +1 -1
  112. package/dist/components/auth/authenticate/common/constants.js +1 -0
  113. package/dist/components/auth/authenticate/common/constants.js.map +1 -1
  114. package/dist/components/auth/authenticate/common/types.d.ts +7 -0
  115. package/dist/components/auth/authenticate/common/types.d.ts.map +1 -1
  116. package/dist/components/auth/authenticate/controllers/factory.d.ts +1 -0
  117. package/dist/components/auth/authenticate/controllers/factory.d.ts.map +1 -1
  118. package/dist/components/auth/authenticate/strategies/strategy-registry.d.ts.map +1 -1
  119. package/dist/components/auth/authenticate/strategies/strategy-registry.js +3 -0
  120. package/dist/components/auth/authenticate/strategies/strategy-registry.js.map +1 -1
  121. package/dist/components/auth/models/entities/user-role.model.d.ts +1 -1
  122. package/dist/components/auth/models/entities/user-role.model.d.ts.map +1 -1
  123. package/dist/components/auth/models/entities/user-role.model.js +1 -1
  124. package/dist/components/auth/models/entities/user-role.model.js.map +1 -1
  125. package/dist/components/health-check/controller.d.ts +4 -5
  126. package/dist/components/health-check/controller.d.ts.map +1 -1
  127. package/dist/components/health-check/controller.js +12 -12
  128. package/dist/components/health-check/controller.js.map +1 -1
  129. package/dist/components/static-asset/component.d.ts +0 -1
  130. package/dist/components/static-asset/component.d.ts.map +1 -1
  131. package/dist/components/static-asset/component.js +0 -2
  132. package/dist/components/static-asset/component.js.map +1 -1
  133. package/dist/components/static-asset/controller/factory.d.ts +1 -0
  134. package/dist/components/static-asset/controller/factory.d.ts.map +1 -1
  135. package/dist/components/static-asset/controller/factory.js +1 -1
  136. package/dist/components/static-asset/controller/factory.js.map +1 -1
  137. package/dist/components/static-asset/models/base.model.d.ts +10 -10
  138. package/dist/components/static-asset/models/base.model.js +1 -1
  139. package/dist/components/static-asset/models/base.model.js.map +1 -1
  140. package/dist/helpers/inversion/common/types.d.ts +35 -1
  141. package/dist/helpers/inversion/common/types.d.ts.map +1 -1
  142. package/package.json +4 -5
  143. package/dist/base/repositories/core/base.d.ts +0 -264
  144. package/dist/base/repositories/core/base.d.ts.map +0 -1
  145. package/dist/base/repositories/core/base.js +0 -197
  146. package/dist/base/repositories/core/base.js.map +0 -1
@@ -0,0 +1,287 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractRepository = void 0;
4
+ const inversion_1 = require("../../../helpers/inversion");
5
+ const ignis_helpers_1 = require("@venizia/ignis-helpers");
6
+ const common_1 = require("../common");
7
+ const mixins_1 = require("../mixins");
8
+ const operators_1 = require("../operators");
9
+ // -----------------------------------------------------------------------------
10
+ // Abstract Repository
11
+ // -----------------------------------------------------------------------------
12
+ /**
13
+ * Abstract base repository class with dependency injection support.
14
+ *
15
+ * This class provides the foundation for all repository implementations,
16
+ * combining {@link FieldsVisibilityMixin} and {@link DefaultFilterMixin}
17
+ * for automatic hidden field exclusion and default filter application.
18
+ *
19
+ * @template EntitySchema - The Drizzle table schema type with an 'id' column
20
+ * @template DataObject - The type of objects returned from queries
21
+ * @template PersistObject - The type for insert/update operations
22
+ * @template ExtraOptions - Additional options type extending IExtraOptions
23
+ *
24
+ * @example
25
+ * **1. Zero boilerplate - dataSource auto-injected from @repository metadata:**
26
+ * ```typescript
27
+ * @repository({ model: User, dataSource: PostgresDataSource })
28
+ * export class UserRepository extends DefaultCRUDRepository<typeof User.schema> {
29
+ * // No constructor needed - datasource auto-injected!
30
+ * }
31
+ * ```
32
+ *
33
+ * @example
34
+ * **2. Explicit @inject:**
35
+ * ```typescript
36
+ * @repository({ model: User })
37
+ * export class UserRepository extends DefaultCRUDRepository<typeof User.schema> {
38
+ * constructor(
39
+ * @inject({ key: 'datasources.PostgresDataSource' })
40
+ * dataSource: PostgresDataSource,
41
+ * ) {
42
+ * super(dataSource);
43
+ * }
44
+ * }
45
+ * ```
46
+ */
47
+ class AbstractRepository extends (0, mixins_1.DefaultFilterMixin)((0, mixins_1.FieldsVisibilityMixin)(ignis_helpers_1.BaseHelper)) {
48
+ // ---------------------------------------------------------------------------
49
+ // Constructor
50
+ // ---------------------------------------------------------------------------
51
+ /**
52
+ * Creates a new repository instance.
53
+ *
54
+ * @param ds - DataSource (auto-injected from @repository decorator or passed explicitly)
55
+ * @param opts - Optional configuration
56
+ * @param opts.scope - Custom scope name for logging
57
+ * @param opts.entityClass - Entity class if not using @repository decorator
58
+ * @param opts.operationScope - Operation scope (defaults to READ_ONLY)
59
+ */
60
+ constructor(ds, opts) {
61
+ const scopeName = (opts?.scope ?? opts?.entityClass?.name)
62
+ ? [opts?.entityClass?.name, 'Repository'].join('')
63
+ : new.target.name;
64
+ super({ scope: scopeName });
65
+ this._operationScope = opts?.operationScope ?? common_1.RepositoryOperationScopes.READ_ONLY;
66
+ this._filterBuilder = new operators_1.FilterBuilder();
67
+ if (ds) {
68
+ this._dataSource = ds;
69
+ }
70
+ if (opts?.entityClass) {
71
+ this._entity = new opts.entityClass();
72
+ }
73
+ }
74
+ // ---------------------------------------------------------------------------
75
+ // Public Accessors
76
+ // ---------------------------------------------------------------------------
77
+ /**
78
+ * Gets the data source for database operations.
79
+ * @throws Error if dataSource is not available
80
+ */
81
+ get dataSource() {
82
+ if (!this._dataSource) {
83
+ throw (0, ignis_helpers_1.getError)({
84
+ message: `[${this.constructor.name}] DataSource not available. Use @repository({ model: YourModel, dataSource: YourDataSource }) or pass dataSource in constructor.`,
85
+ });
86
+ }
87
+ return this._dataSource;
88
+ }
89
+ /** Sets the data source for database operations. */
90
+ set dataSource(value) {
91
+ this._dataSource = value;
92
+ }
93
+ /**
94
+ * Gets the entity instance.
95
+ * Auto-resolves from @repository metadata if not explicitly set.
96
+ */
97
+ get entity() {
98
+ if (!this._entity) {
99
+ this._entity = this.resolveEntity();
100
+ }
101
+ return this._entity;
102
+ }
103
+ /** Sets the entity instance. */
104
+ set entity(value) {
105
+ this._entity = value;
106
+ }
107
+ /** Gets the current operation scope (READ_ONLY, WRITE_ONLY, or READ_WRITE). */
108
+ get operationScope() {
109
+ return this._operationScope;
110
+ }
111
+ /** Gets the filter builder instance. */
112
+ get filterBuilder() {
113
+ return this._filterBuilder;
114
+ }
115
+ /** Gets the database connector from the data source. */
116
+ get connector() {
117
+ return this.dataSource.connector;
118
+ }
119
+ // ---------------------------------------------------------------------------
120
+ // Public Instance Methods
121
+ // ---------------------------------------------------------------------------
122
+ /**
123
+ * Sets the data source for this repository.
124
+ * @param opts - Options containing the data source
125
+ */
126
+ setDataSource(opts) {
127
+ this._dataSource = opts.dataSource;
128
+ }
129
+ /**
130
+ * Returns the entity instance associated with this repository.
131
+ * @returns The entity instance
132
+ */
133
+ getEntity() {
134
+ return this.entity;
135
+ }
136
+ /**
137
+ * Returns the Drizzle table schema for this entity.
138
+ * @returns The table schema
139
+ */
140
+ getEntitySchema() {
141
+ return this.entity.schema;
142
+ }
143
+ /**
144
+ * Returns the database connector from the data source.
145
+ * @returns The database connector
146
+ */
147
+ getConnector() {
148
+ return this.connector;
149
+ }
150
+ /**
151
+ * Begins a new database transaction.
152
+ * @param opts - Optional transaction configuration
153
+ * @returns Promise resolving to the transaction instance
154
+ */
155
+ async beginTransaction(opts) {
156
+ return this.dataSource.beginTransaction(opts);
157
+ }
158
+ /**
159
+ * Builds Drizzle query options from a filter object.
160
+ * Handles field visibility by excluding hidden properties.
161
+ *
162
+ * @param opts - Options containing the filter to convert
163
+ * @returns Drizzle-compatible query options
164
+ */
165
+ buildQuery(opts) {
166
+ const result = this.filterBuilder.build({
167
+ tableName: this.entity.name,
168
+ schema: this.entity.schema,
169
+ filter: opts.filter,
170
+ });
171
+ if (!this.hasHiddenProperties()) {
172
+ return result;
173
+ }
174
+ const hiddenProps = this.getHiddenProperties();
175
+ if (result.columns) {
176
+ // User specified fields - filter out hidden (single loop)
177
+ const filteredColumns = {};
178
+ for (const key in result.columns) {
179
+ if (!hiddenProps.has(key)) {
180
+ filteredColumns[key] = result.columns[key];
181
+ }
182
+ }
183
+ result.columns = filteredColumns;
184
+ return result;
185
+ }
186
+ // No fields specified - use cached visible properties keys
187
+ const visibleProps = this.getVisibleProperties();
188
+ if (visibleProps) {
189
+ const filteredColumns = {};
190
+ for (const key in visibleProps) {
191
+ filteredColumns[key] = true;
192
+ }
193
+ result.columns = filteredColumns;
194
+ }
195
+ return result;
196
+ }
197
+ // ---------------------------------------------------------------------------
198
+ // Entity Resolution (protected)
199
+ // ---------------------------------------------------------------------------
200
+ /**
201
+ * Resolves the entity instance from @repository metadata.
202
+ * Called lazily when entity is first accessed.
203
+ *
204
+ * @returns The resolved entity instance
205
+ * @throws Error if entity cannot be resolved from metadata
206
+ */
207
+ resolveEntity() {
208
+ const registry = inversion_1.MetadataRegistry.getInstance();
209
+ const binding = registry.getRepositoryBinding({
210
+ name: this.constructor.name,
211
+ });
212
+ if (!binding?.model) {
213
+ throw (0, ignis_helpers_1.getError)({
214
+ message: `[${this.constructor.name}] Cannot resolve entity. Either pass entityClass in constructor or use @repository decorator with model option.`,
215
+ });
216
+ }
217
+ // Cast to TClass - at runtime this is always a class constructor
218
+ const ctor = (0, ignis_helpers_1.resolveValue)(binding.model);
219
+ return new ctor();
220
+ }
221
+ // ---------------------------------------------------------------------------
222
+ // Transaction Support (protected)
223
+ // ---------------------------------------------------------------------------
224
+ /**
225
+ * Resolves the database connector, using transaction connector if provided.
226
+ *
227
+ * @param opts - Options containing optional transaction
228
+ * @returns The database connector (from transaction or default data source)
229
+ * @throws Error if transaction is no longer active
230
+ */
231
+ resolveConnector(opts) {
232
+ const transaction = opts?.transaction;
233
+ if (!transaction) {
234
+ return this.dataSource.connector;
235
+ }
236
+ if (!transaction.isActive) {
237
+ throw (0, ignis_helpers_1.getError)({
238
+ message: `[${this.constructor.name}][resolveConnector] Transaction is no longer active`,
239
+ });
240
+ }
241
+ return transaction.connector;
242
+ }
243
+ /**
244
+ * Gets the Drizzle query interface for this entity.
245
+ * Validates that the schema is properly registered in the connector.
246
+ *
247
+ * @param opts - Options containing extra options with optional transaction
248
+ * @returns The Drizzle query interface for this entity
249
+ * @throws Error if connector.query is not available
250
+ * @throws Error if entity schema is not registered in connector
251
+ */
252
+ getQueryInterface(opts) {
253
+ const connector = this.resolveConnector({ transaction: opts?.options?.transaction });
254
+ // Validate connector.query exists
255
+ if (!connector.query) {
256
+ throw (0, ignis_helpers_1.getError)({
257
+ message: `[${this.constructor.name}] Connector query interface not available | Ensure datasource is properly configured with schema`,
258
+ });
259
+ }
260
+ const queryInterface = connector.query[this.entity.name];
261
+ if (!queryInterface) {
262
+ const availableKeys = Object.keys(connector.query);
263
+ throw (0, ignis_helpers_1.getError)({
264
+ message: `[${this.constructor.name}] Schema key mismatch | Entity name '${this.entity.name}' not found in connector.query | Available keys: [${availableKeys.join(', ')}] | Ensure the model's TABLE_NAME matches the schema registration key`,
265
+ });
266
+ }
267
+ return queryInterface;
268
+ }
269
+ updateBy(opts) {
270
+ if (opts.options?.shouldReturn === false) {
271
+ const strictOpts = opts;
272
+ return this.updateAll(strictOpts);
273
+ }
274
+ const strictOpts = opts;
275
+ return this.updateAll(strictOpts);
276
+ }
277
+ deleteBy(opts) {
278
+ if (opts.options?.shouldReturn === false) {
279
+ const strictOpts = opts;
280
+ return this.deleteAll(strictOpts);
281
+ }
282
+ const strictOpts = opts;
283
+ return this.deleteAll(strictOpts);
284
+ }
285
+ }
286
+ exports.AbstractRepository = AbstractRepository;
287
+ //# sourceMappingURL=abstract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract.js","sourceRoot":"","sources":["../../../../src/base/repositories/core/abstract.ts"],"names":[],"mappings":";;;AAEA,mDAAuD;AACvD,0DAA+F;AAC/F,sCAWmB;AACnB,sCAAsE;AACtE,4CAA6C;AAE7C,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAsB,kBAMpB,SAAQ,IAAA,2BAAkB,EAAC,IAAA,8BAAqB,EAAC,0BAAU,CAAC,CAAC;IA+B7D,8EAA8E;IAC9E,cAAc;IACd,8EAA8E;IAE9E;;;;;;;;OAQG;IACH,YACE,EAAgB,EAChB,IAIC;QAED,MAAM,SAAS,GACb,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC;YACtC,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAEtB,KAAK,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5B,IAAI,CAAC,eAAe,GAAG,IAAI,EAAE,cAAc,IAAI,kCAAyB,CAAC,SAAS,CAAC;QACnF,IAAI,CAAC,cAAc,GAAG,IAAI,yBAAa,EAAE,CAAC;QAE1C,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACxB,CAAC;QAED,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,mBAAmB;IACnB,8EAA8E;IAE9E;;;OAGG;IACH,IAAI,UAAU;QACZ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAA,wBAAQ,EAAC;gBACb,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,kIAAkI;aACrK,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,oDAAoD;IACpD,IAAI,UAAU,CAAC,KAAkB;QAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,gCAAgC;IAChC,IAAI,MAAM,CAAC,KAA+B;QACxC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,+EAA+E;IAC/E,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,wCAAwC;IACxC,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,wDAAwD;IACxD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IACnC,CAAC;IAED,8EAA8E;IAC9E,0BAA0B;IAC1B,8EAA8E;IAE9E;;;OAGG;IACH,aAAa,CAAC,IAAiC;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAA0B;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,IAAqC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YACtC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,0DAA0D;YAC1D,MAAM,eAAe,GAA4B,EAAE,CAAC;YACpD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,eAAe,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;YACD,MAAM,CAAC,OAAO,GAAG,eAAe,CAAC;YACjC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,2DAA2D;QAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACjD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,eAAe,GAA4B,EAAE,CAAC;YACpD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC/B,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAC9B,CAAC;YACD,MAAM,CAAC,OAAO,GAAG,eAAe,CAAC;QACnC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,8EAA8E;IAC9E,gCAAgC;IAChC,8EAA8E;IAE9E;;;;;;OAMG;IACO,aAAa;QACrB,MAAM,QAAQ,GAAG,4BAAgB,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,oBAAoB,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;SAC5B,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YACpB,MAAM,IAAA,wBAAQ,EAAC;gBACb,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,iHAAiH;aACpJ,CAAC,CAAC;QACL,CAAC;QAED,iEAAiE;QACjE,MAAM,IAAI,GAAG,IAAA,4BAAY,EAAC,OAAO,CAAC,KAAK,CAAqC,CAAC;QAC7E,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,8EAA8E;IAC9E,kCAAkC;IAClC,8EAA8E;IAE9E;;;;;;OAMG;IACO,gBAAgB,CAAC,IAAqC;QAC9D,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,CAAC;QAEtC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAA,wBAAQ,EAAC;gBACb,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,qDAAqD;aACxF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,WAAW,CAAC,SAAS,CAAC;IAC/B,CAAC;IAED;;;;;;;;OAQG;IACO,iBAAiB,CAAC,IAAiC;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAErF,kCAAkC;QAClC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,IAAA,wBAAQ,EAAC;gBACb,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,kGAAkG;aACrI,CAAC,CAAC;QACL,CAAC;QAED,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,IAAA,wBAAQ,EAAC;gBACb,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,wCAAwC,IAAI,CAAC,MAAM,CAAC,IAAI,qDAAqD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,uEAAuE;aAC/O,CAAC,CAAC;QACL,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IA4JD,QAAQ,CAAiB,IAIxB;QACC,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,IAQlB,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,UAAU,GAAG,IAQlB,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAI,UAAU,CAAC,CAAC;IACvC,CAAC;IAsDD,QAAQ,CAAiB,IAGxB;QACC,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY,KAAK,KAAK,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,IAGlB,CAAC;YACF,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,UAAU,GAAG,IAGlB,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAI,UAAU,CAAC,CAAC;IACvC,CAAC;CACF;AA/iBD,gDA+iBC"}
@@ -1,5 +1,5 @@
1
1
  import { TTableInsert, TTableObject, TTableSchemaWithId } from '../../../base/models';
2
- import { TTransactionOption } from '../common';
2
+ import { IExtraOptions } from '../common';
3
3
  import { PersistableRepository } from './persistable';
4
4
  /**
5
5
  * Default CRUD repository with dependency injection support.
@@ -37,6 +37,6 @@ import { PersistableRepository } from './persistable';
37
37
  * ```
38
38
  * Note: When @inject is at param index 0, auto-injection is skipped (your @inject takes precedence).
39
39
  */
40
- export declare class DefaultCRUDRepository<EntitySchema extends TTableSchemaWithId = TTableSchemaWithId, DataObject extends TTableObject<EntitySchema> = TTableObject<EntitySchema>, PersistObject extends TTableInsert<EntitySchema> = TTableInsert<EntitySchema>, ExtraOptions extends TTransactionOption = TTransactionOption> extends PersistableRepository<EntitySchema, DataObject, PersistObject, ExtraOptions> {
40
+ export declare class DefaultCRUDRepository<EntitySchema extends TTableSchemaWithId = TTableSchemaWithId, DataObject extends TTableObject<EntitySchema> = TTableObject<EntitySchema>, PersistObject extends TTableInsert<EntitySchema> = TTableInsert<EntitySchema>, ExtraOptions extends IExtraOptions = IExtraOptions> extends PersistableRepository<EntitySchema, DataObject, PersistObject, ExtraOptions> {
41
41
  }
42
42
  //# sourceMappingURL=default-crud.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-crud.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/core/default-crud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,qBAAqB,CAChC,YAAY,SAAS,kBAAkB,GAAG,kBAAkB,EAC5D,UAAU,SAAS,YAAY,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,EAC1E,aAAa,SAAS,YAAY,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,EAC7E,YAAY,SAAS,kBAAkB,GAAG,kBAAkB,CAC5D,SAAQ,qBAAqB,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC;CAAG"}
1
+ {"version":3,"file":"default-crud.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/core/default-crud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBAAa,qBAAqB,CAChC,YAAY,SAAS,kBAAkB,GAAG,kBAAkB,EAC5D,UAAU,SAAS,YAAY,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,EAC1E,aAAa,SAAS,YAAY,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,EAC7E,YAAY,SAAS,aAAa,GAAG,aAAa,CAClD,SAAQ,qBAAqB,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC;CAAG"}
@@ -1,4 +1,4 @@
1
- export * from './base';
1
+ export * from './abstract';
2
2
  export * from './default-crud';
3
3
  export * from './persistable';
4
4
  export * from './readable';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./base"), exports);
17
+ __exportStar(require("./abstract"), exports);
18
18
  __exportStar(require("./default-crud"), exports);
19
19
  __exportStar(require("./persistable"), exports);
20
20
  __exportStar(require("./readable"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/base/repositories/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,iDAA+B;AAC/B,gDAA8B;AAC9B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/base/repositories/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,iDAA+B;AAC/B,gDAA8B;AAC9B,6CAA2B"}
@@ -1,16 +1,68 @@
1
1
  import { IDataSource } from '../../../base/datasources';
2
2
  import { BaseEntity, IdType, TTableInsert, TTableObject, TTableSchemaWithId } from '../../../base/models';
3
3
  import { TClass, TNullable } from '@venizia/ignis-helpers';
4
- import { TCount, TRepositoryLogOptions, TTransactionOption, TWhere } from '../common';
4
+ import { IExtraOptions, TCount, TRepositoryLogOptions, TWhere } from '../common';
5
5
  import { ReadableRepository } from './readable';
6
6
  /**
7
- * Persistable repository with full CRUD operations.
7
+ * Full CRUD repository implementation.
8
+ *
9
+ * Extends {@link ReadableRepository} with create, update, and delete operations.
10
+ * This class provides the complete set of database operations for entities.
11
+ *
12
+ * @template EntitySchema - The Drizzle table schema type with an 'id' column
13
+ * @template DataObject - The type of objects returned from queries
14
+ * @template PersistObject - The type for insert/update operations
15
+ * @template ExtraOptions - Additional options type extending IExtraOptions
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * @repository({ model: User, dataSource: PostgresDataSource })
20
+ * export class UserRepository extends PersistableRepository<typeof User.schema> {
21
+ * async createWithDefaults(email: string) {
22
+ * return this.create({
23
+ * data: { email, role: 'user', isActive: true }
24
+ * });
25
+ * }
26
+ * }
27
+ * ```
8
28
  */
9
- export declare class PersistableRepository<EntitySchema extends TTableSchemaWithId = TTableSchemaWithId, DataObject extends TTableObject<EntitySchema> = TTableObject<EntitySchema>, PersistObject extends TTableInsert<EntitySchema> = TTableInsert<EntitySchema>, ExtraOptions extends TTransactionOption = TTransactionOption> extends ReadableRepository<EntitySchema, DataObject, PersistObject, ExtraOptions> {
29
+ export declare class PersistableRepository<EntitySchema extends TTableSchemaWithId = TTableSchemaWithId, DataObject extends TTableObject<EntitySchema> = TTableObject<EntitySchema>, PersistObject extends TTableInsert<EntitySchema> = TTableInsert<EntitySchema>, ExtraOptions extends IExtraOptions = IExtraOptions> extends ReadableRepository<EntitySchema, DataObject, PersistObject, ExtraOptions> {
30
+ /**
31
+ * Creates a new persistable (read-write) repository instance.
32
+ *
33
+ * @param ds - Optional data source (auto-injected from @repository decorator)
34
+ * @param opts - Optional configuration
35
+ * @param opts.entityClass - Entity class if not using @repository decorator
36
+ */
10
37
  constructor(ds?: IDataSource, opts?: {
11
38
  entityClass?: TClass<BaseEntity<EntitySchema>>;
12
39
  });
13
- protected _create<R = EntitySchema['$inferSelect']>(opts: {
40
+ /**
41
+ * Validates where condition for bulk operations (update/delete).
42
+ * Prevents accidental mass updates/deletes by requiring explicit force flag.
43
+ *
44
+ * @param opts - Validation options
45
+ * @param opts.where - The where condition to validate
46
+ * @param opts.force - If true, allows empty where condition
47
+ * @param opts.operationName - Operation name for error message
48
+ * @returns True if where is empty (used for logging warnings)
49
+ * @throws Error if where is empty and force is not true
50
+ */
51
+ protected validateWhereCondition(opts: {
52
+ where: TWhere<DataObject>;
53
+ force?: boolean;
54
+ operationName: string;
55
+ }): boolean;
56
+ /**
57
+ * Internal create implementation for single or bulk inserts.
58
+ *
59
+ * @template R - Return type (defaults to DataObject)
60
+ * @param opts - Create options
61
+ * @param opts.data - Array of records to insert
62
+ * @param opts.options - Extra options (transaction, logging, shouldReturn)
63
+ * @returns Promise with count and optionally the created records
64
+ */
65
+ protected _create<R = DataObject>(opts: {
14
66
  data: Array<PersistObject>;
15
67
  options: ExtraOptions & {
16
68
  shouldReturn?: boolean;
@@ -23,16 +75,14 @@ export declare class PersistableRepository<EntitySchema extends TTableSchemaWith
23
75
  data: PersistObject;
24
76
  options: ExtraOptions & {
25
77
  shouldReturn: false;
26
- log?: TRepositoryLogOptions;
27
78
  };
28
79
  }): Promise<TCount & {
29
- data: null;
80
+ data: undefined | null;
30
81
  }>;
31
- create<R = EntitySchema['$inferSelect']>(opts: {
82
+ create<R = DataObject>(opts: {
32
83
  data: PersistObject;
33
84
  options?: ExtraOptions & {
34
85
  shouldReturn?: true;
35
- log?: TRepositoryLogOptions;
36
86
  };
37
87
  }): Promise<TCount & {
38
88
  data: R;
@@ -41,27 +91,34 @@ export declare class PersistableRepository<EntitySchema extends TTableSchemaWith
41
91
  data: Array<PersistObject>;
42
92
  options: ExtraOptions & {
43
93
  shouldReturn: false;
44
- log?: TRepositoryLogOptions;
45
94
  };
46
95
  }): Promise<TCount & {
47
- data: null;
96
+ data: undefined | null;
48
97
  }>;
49
- createAll<R = EntitySchema['$inferSelect']>(opts: {
98
+ createAll<R = DataObject>(opts: {
50
99
  data: Array<PersistObject>;
51
100
  options?: ExtraOptions & {
52
101
  shouldReturn?: true;
53
- log?: TRepositoryLogOptions;
54
102
  };
55
103
  }): Promise<TCount & {
56
104
  data: Array<R>;
57
105
  }>;
58
- protected _update<R = EntitySchema['$inferSelect']>(opts: {
106
+ /**
107
+ * Internal update implementation for single or bulk updates.
108
+ *
109
+ * @template R - Return type (defaults to DataObject)
110
+ * @param opts - Update options
111
+ * @param opts.data - Partial data to update
112
+ * @param opts.where - Where condition for selecting records to update
113
+ * @param opts.options - Extra options (transaction, logging, shouldReturn, force)
114
+ * @returns Promise with count and optionally the updated records
115
+ */
116
+ protected _update<R = DataObject>(opts: {
59
117
  data: Partial<PersistObject>;
60
118
  where: TWhere<DataObject>;
61
119
  options?: ExtraOptions & {
62
120
  shouldReturn?: boolean;
63
121
  force?: boolean;
64
- log?: TRepositoryLogOptions;
65
122
  };
66
123
  }): Promise<TCount & {
67
124
  data: TNullable<Array<R>>;
@@ -71,17 +128,15 @@ export declare class PersistableRepository<EntitySchema extends TTableSchemaWith
71
128
  data: Partial<PersistObject>;
72
129
  options: ExtraOptions & {
73
130
  shouldReturn: false;
74
- log?: TRepositoryLogOptions;
75
131
  };
76
132
  }): Promise<TCount & {
77
- data: null;
133
+ data: undefined | null;
78
134
  }>;
79
- updateById<R = EntitySchema['$inferSelect']>(opts: {
135
+ updateById<R = DataObject>(opts: {
80
136
  id: IdType;
81
137
  data: Partial<PersistObject>;
82
138
  options?: ExtraOptions & {
83
139
  shouldReturn?: true;
84
- log?: TRepositoryLogOptions;
85
140
  };
86
141
  }): Promise<TCount & {
87
142
  data: R;
@@ -92,28 +147,34 @@ export declare class PersistableRepository<EntitySchema extends TTableSchemaWith
92
147
  options: ExtraOptions & {
93
148
  shouldReturn: false;
94
149
  force?: boolean;
95
- log?: TRepositoryLogOptions;
96
150
  };
97
151
  }): Promise<TCount & {
98
- data: null;
152
+ data: undefined | null;
99
153
  }>;
100
- updateAll<R = EntitySchema['$inferSelect']>(opts: {
154
+ updateAll<R = DataObject>(opts: {
101
155
  data: Partial<PersistObject>;
102
156
  where: TWhere<DataObject>;
103
157
  options?: ExtraOptions & {
104
158
  shouldReturn?: true;
105
159
  force?: boolean;
106
- log?: TRepositoryLogOptions;
107
160
  };
108
161
  }): Promise<TCount & {
109
162
  data: Array<R>;
110
163
  }>;
111
- protected _delete<R = EntitySchema['$inferSelect']>(opts: {
164
+ /**
165
+ * Internal delete implementation for single or bulk deletes.
166
+ *
167
+ * @template R - Return type (defaults to DataObject)
168
+ * @param opts - Delete options
169
+ * @param opts.where - Where condition for selecting records to delete
170
+ * @param opts.options - Extra options (transaction, logging, shouldReturn, force)
171
+ * @returns Promise with count and optionally the deleted records
172
+ */
173
+ protected _delete<R = DataObject>(opts: {
112
174
  where: TWhere<DataObject>;
113
175
  options?: ExtraOptions & {
114
176
  shouldReturn?: boolean;
115
177
  force?: boolean;
116
- log?: TRepositoryLogOptions;
117
178
  };
118
179
  }): Promise<TCount & {
119
180
  data: TNullable<Array<R>>;
@@ -122,16 +183,14 @@ export declare class PersistableRepository<EntitySchema extends TTableSchemaWith
122
183
  id: IdType;
123
184
  options: ExtraOptions & {
124
185
  shouldReturn: false;
125
- log?: TRepositoryLogOptions;
126
186
  };
127
187
  }): Promise<TCount & {
128
- data: null;
188
+ data: undefined | null;
129
189
  }>;
130
- deleteById<R = EntitySchema['$inferSelect']>(opts: {
190
+ deleteById<R = DataObject>(opts: {
131
191
  id: IdType;
132
192
  options?: ExtraOptions & {
133
193
  shouldReturn?: true;
134
- log?: TRepositoryLogOptions;
135
194
  };
136
195
  }): Promise<TCount & {
137
196
  data: R;
@@ -141,17 +200,15 @@ export declare class PersistableRepository<EntitySchema extends TTableSchemaWith
141
200
  options: ExtraOptions & {
142
201
  shouldReturn: false;
143
202
  force?: boolean;
144
- log?: TRepositoryLogOptions;
145
203
  };
146
204
  }): Promise<TCount & {
147
- data: null;
205
+ data: undefined | null;
148
206
  }>;
149
- deleteAll<R = EntitySchema['$inferSelect']>(opts: {
207
+ deleteAll<R = DataObject>(opts: {
150
208
  where?: TWhere<DataObject>;
151
209
  options?: ExtraOptions & {
152
210
  shouldReturn?: true;
153
211
  force?: boolean;
154
- log?: TRepositoryLogOptions;
155
212
  };
156
213
  }): Promise<TCount & {
157
214
  data: Array<R>;
@@ -161,17 +218,15 @@ export declare class PersistableRepository<EntitySchema extends TTableSchemaWith
161
218
  options: ExtraOptions & {
162
219
  shouldReturn: false;
163
220
  force?: boolean;
164
- log?: TRepositoryLogOptions;
165
221
  };
166
222
  }): Promise<TCount & {
167
- data: null;
223
+ data: undefined | null;
168
224
  }>;
169
- deleteBy<R = EntitySchema['$inferSelect']>(opts: {
225
+ deleteBy<R = DataObject>(opts: {
170
226
  where: TWhere<DataObject>;
171
227
  options?: ExtraOptions & {
172
228
  shouldReturn?: true;
173
229
  force?: boolean;
174
- log?: TRepositoryLogOptions;
175
230
  };
176
231
  }): Promise<TCount & {
177
232
  data: Array<R>;
@@ -1 +1 @@
1
- {"version":3,"file":"persistable.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/core/persistable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistable.d.ts","sourceRoot":"","sources":["../../../../src/base/repositories/core/persistable.ts"],"names":[],"mappings":"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"}