litedbmodel 2.2.7 → 2.2.8

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 (120) hide show
  1. package/README.md +2 -1
  2. package/dist/Column.d.ts +13 -2
  3. package/dist/Column.d.ts.map +1 -1
  4. package/dist/Column.js +30 -10
  5. package/dist/Column.js.map +1 -1
  6. package/dist/DBModel.d.ts +15 -2
  7. package/dist/DBModel.d.ts.map +1 -1
  8. package/dist/DBModel.js +40 -25
  9. package/dist/DBModel.js.map +1 -1
  10. package/dist/TypeCast.d.ts +2 -2
  11. package/dist/TypeCast.d.ts.map +1 -1
  12. package/dist/TypeCast.js +7 -9
  13. package/dist/TypeCast.js.map +1 -1
  14. package/dist/decorators.d.ts +8 -0
  15. package/dist/decorators.d.ts.map +1 -1
  16. package/dist/decorators.js +29 -18
  17. package/dist/decorators.js.map +1 -1
  18. package/dist/drivers/MysqlHelper.d.ts +3 -3
  19. package/dist/drivers/MysqlHelper.d.ts.map +1 -1
  20. package/dist/drivers/MysqlHelper.js +3 -17
  21. package/dist/drivers/MysqlHelper.js.map +1 -1
  22. package/dist/drivers/MysqlSqlBuilder.d.ts.map +1 -1
  23. package/dist/drivers/MysqlSqlBuilder.js +2 -13
  24. package/dist/drivers/MysqlSqlBuilder.js.map +1 -1
  25. package/dist/drivers/PostgresHelper.d.ts +3 -2
  26. package/dist/drivers/PostgresHelper.d.ts.map +1 -1
  27. package/dist/drivers/PostgresHelper.js +3 -16
  28. package/dist/drivers/PostgresHelper.js.map +1 -1
  29. package/dist/drivers/PostgresSqlBuilder.d.ts.map +1 -1
  30. package/dist/drivers/PostgresSqlBuilder.js +2 -14
  31. package/dist/drivers/PostgresSqlBuilder.js.map +1 -1
  32. package/dist/drivers/SqliteHelper.d.ts +4 -2
  33. package/dist/drivers/SqliteHelper.d.ts.map +1 -1
  34. package/dist/drivers/SqliteHelper.js +4 -2
  35. package/dist/drivers/SqliteHelper.js.map +1 -1
  36. package/dist/drivers/SqliteSqlBuilder.d.ts.map +1 -1
  37. package/dist/drivers/SqliteSqlBuilder.js +2 -13
  38. package/dist/drivers/SqliteSqlBuilder.js.map +1 -1
  39. package/dist/index.cjs +666 -687
  40. package/dist/scp/decorator-adapter.d.ts +1 -0
  41. package/dist/scp/decorator-adapter.d.ts.map +1 -1
  42. package/dist/scp/decorator-adapter.js +2 -0
  43. package/dist/scp/decorator-adapter.js.map +1 -1
  44. package/dist/scp/index.cjs +63 -52
  45. package/dist/scp/index.mjs +63 -52
  46. package/docs/BENCHMARK.md +1 -1
  47. package/docs/COMPARISON.md +1 -1
  48. package/docs/api/README.md +1 -1
  49. package/docs/api/classes/Conditions.md +10 -10
  50. package/docs/api/classes/DBHandler.md +1 -1
  51. package/docs/api/classes/DBModel.md +81 -81
  52. package/docs/api/classes/LimitExceededError.md +1 -1
  53. package/docs/api/classes/Middleware.md +1 -1
  54. package/docs/api/classes/SqlRaw.md +1 -1
  55. package/docs/api/classes/SqlRef.md +1 -1
  56. package/docs/api/classes/Values.md +6 -6
  57. package/docs/api/classes/WriteInReadOnlyContextError.md +1 -1
  58. package/docs/api/classes/WriteOutsideTransactionError.md +1 -1
  59. package/docs/api/functions/belongsTo.md +2 -2
  60. package/docs/api/functions/closeAllPools.md +1 -1
  61. package/docs/api/functions/condsToRecord.md +4 -3
  62. package/docs/api/functions/createMiddleware.md +1 -1
  63. package/docs/api/functions/createPostgresDriver.md +1 -1
  64. package/docs/api/functions/createSqliteDriver.md +1 -1
  65. package/docs/api/functions/dbCast.md +1 -1
  66. package/docs/api/functions/dbCastIn.md +1 -1
  67. package/docs/api/functions/dbDynamic.md +1 -1
  68. package/docs/api/functions/dbFalse.md +1 -1
  69. package/docs/api/functions/dbImmediate.md +1 -1
  70. package/docs/api/functions/dbIn.md +1 -1
  71. package/docs/api/functions/dbNotNull.md +1 -1
  72. package/docs/api/functions/dbNow.md +1 -1
  73. package/docs/api/functions/dbNull.md +1 -1
  74. package/docs/api/functions/dbRaw.md +1 -1
  75. package/docs/api/functions/dbTrue.md +1 -1
  76. package/docs/api/functions/dbUuid.md +1 -1
  77. package/docs/api/functions/dbUuidIn.md +1 -1
  78. package/docs/api/functions/formatLocalDate.md +2 -2
  79. package/docs/api/functions/formatUTCDate.md +2 -2
  80. package/docs/api/functions/getDBConfig.md +1 -1
  81. package/docs/api/functions/getDBHandler.md +1 -1
  82. package/docs/api/functions/getTransactionConnection.md +2 -2
  83. package/docs/api/functions/getTransactionContext.md +2 -2
  84. package/docs/api/functions/hasMany.md +2 -2
  85. package/docs/api/functions/hasOne.md +2 -2
  86. package/docs/api/functions/initDBHandler.md +1 -1
  87. package/docs/api/functions/isAnySqlFragment.md +1 -1
  88. package/docs/api/functions/isConnectionError.md +1 -1
  89. package/docs/api/functions/isSqlCondition.md +1 -1
  90. package/docs/api/functions/isSqlFragment.md +1 -1
  91. package/docs/api/functions/isSqlRaw.md +1 -1
  92. package/docs/api/functions/isSqlRef.md +1 -1
  93. package/docs/api/functions/isSqlTypedFragment.md +1 -1
  94. package/docs/api/functions/model.md +4 -4
  95. package/docs/api/functions/parentRef.md +1 -1
  96. package/docs/api/functions/sql.md +1 -1
  97. package/docs/api/globals.md +24 -21
  98. package/docs/api/interfaces/Column.md +32 -31
  99. package/docs/api/interfaces/ColumnDecorator.md +1 -1
  100. package/docs/api/interfaces/ColumnOptions.md +1 -1
  101. package/docs/api/interfaces/CreatedMiddlewareClass.md +1 -1
  102. package/docs/api/interfaces/DBConfig.md +1 -1
  103. package/docs/api/interfaces/DBConfigOptions.md +1 -1
  104. package/docs/api/interfaces/DeleteOptions.md +1 -1
  105. package/docs/api/interfaces/InsertOptions.md +1 -1
  106. package/docs/api/interfaces/LimitConfig.md +1 -1
  107. package/docs/api/interfaces/MiddlewareConfig.md +1 -1
  108. package/docs/api/interfaces/ModelClassDecorator.md +4 -4
  109. package/docs/api/interfaces/ModelOptions.md +1 -1
  110. package/docs/api/interfaces/PkeyResult.md +1 -1
  111. package/docs/api/interfaces/RelationDecorator.md +1 -1
  112. package/docs/api/interfaces/SelectOptions.md +1 -1
  113. package/docs/api/interfaces/SqlCondition.md +1 -1
  114. package/docs/api/interfaces/SqlFragment.md +1 -1
  115. package/docs/api/interfaces/SqlTypedFragment.md +1 -1
  116. package/docs/api/interfaces/TransactionOptions.md +1 -1
  117. package/docs/api/interfaces/UpdateManyOptions.md +1 -1
  118. package/docs/api/interfaces/UpdateOptions.md +1 -1
  119. package/docs/architecture.md +12 -8
  120. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- [**litedbmodel v2.2.7**](../README.md)
1
+ [**litedbmodel v2.2.8**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  # Abstract Class: DBModel
8
8
 
9
- Defined in: [DBModel.ts:139](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L139)
9
+ Defined in: [DBModel.ts:140](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L140)
10
10
 
11
11
  Base class for all database models in litedbmodel.
12
12
  Provides CRUD operations, relations, transactions, and middleware support.
@@ -63,7 +63,7 @@ const john = await User.findOne([[User.email, 'john@example.com']]);
63
63
  new DBModel(): DBModel;
64
64
  ```
65
65
 
66
- Defined in: [DBModel.ts:1865](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1865)
66
+ Defined in: [DBModel.ts:1882](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1882)
67
67
 
68
68
  #### Returns
69
69
 
@@ -73,19 +73,19 @@ Defined in: [DBModel.ts:1865](https://github.com/foo-ogawa/litedbmodel/blob/main
73
73
 
74
74
  | Property | Modifier | Type | Default value | Description | Defined in |
75
75
  | ------ | ------ | ------ | ------ | ------ | ------ |
76
- | <a id="query"></a> `QUERY` | `static` | \| `string` \| [`SqlFragment`](../interfaces/SqlFragment.md) \| [`SqlTypedFragment`](../interfaces/SqlTypedFragment.md)\<`unknown`, `unknown`\> \| [`SqlCondition`](../interfaces/SqlCondition.md)\<`unknown`\> \| `null` | `null` | SQL query for query-based models (view models, aggregations, etc.) When defined, the model uses this query as a CTE instead of TABLE_NAME. **Example** `// Static query static QUERY = ` SELECT users.id, COUNT(posts.id) as post_count FROM users LEFT JOIN posts ON users.id = posts.user_id GROUP BY users.id `;` | [DBModel.ts:198](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L198) |
77
- | <a id="_dbconfig"></a> `_dbConfig` | `static` | [`DBConfig`](../interfaces/DBConfig.md) \| `null` | `null` | Database config | [DBModel.ts:220](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L220) |
78
- | <a id="_limitconfig"></a> `_limitConfig` | `static` | [`LimitConfig`](../interfaces/LimitConfig.md) | `{}` | Limit config for safety guards | [DBModel.ts:223](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L223) |
79
- | <a id="_configoptions"></a> `_configOptions` | `static` | [`DBConfigOptions`](../interfaces/DBConfigOptions.md) | `undefined` | Configuration options for reader/writer separation | [DBModel.ts:226](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L226) |
80
- | <a id="_lasttransactiontime"></a> `_lastTransactionTime` | `static` | `number` | `0` | Last transaction completion time (for writer sticky) | [DBModel.ts:232](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L232) |
81
- | <a id="true"></a> `true` | `readonly` | `DBBoolValue` | `undefined` | Boolean TRUE value | [DBModel.ts:1440](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1440) |
82
- | <a id="false"></a> `false` | `readonly` | `DBBoolValue` | `undefined` | Boolean FALSE value | [DBModel.ts:1443](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1443) |
83
- | <a id="null"></a> `null` | `readonly` | `DBNullValue` | `undefined` | NULL value | [DBModel.ts:1446](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1446) |
84
- | <a id="notnull"></a> `notNull` | `readonly` | `DBNotNullValue` | `undefined` | NOT NULL value | [DBModel.ts:1449](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1449) |
85
- | <a id="now"></a> `now` | `readonly` | `DBImmediateValue` | `undefined` | NOW() value | [DBModel.ts:1452](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1452) |
86
- | <a id="_modelclass"></a> `_modelClass` | `protected` | *typeof* `DBModel` | `undefined` | Instance reference to the static class | [DBModel.ts:1854](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1854) |
87
- | <a id="_relationcache"></a> `_relationCache` | `protected` | `Map`\<`string`, `unknown`\> \| `null` | `null` | Per-instance cache for loaded relations (lazy-initialized) | [DBModel.ts:1857](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1857) |
88
- | <a id="_deferredcontext"></a> `_deferredContext` | `public` | \[*typeof* `DBModel`, `DBModel`[]\] \| `null` | `null` | Deferred context info: [sourceClass, records] set by _select, resolved on first relation access | [DBModel.ts:1863](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1863) |
76
+ | <a id="query"></a> `QUERY` | `static` | \| `string` \| [`SqlFragment`](../interfaces/SqlFragment.md) \| [`SqlTypedFragment`](../interfaces/SqlTypedFragment.md)\<`unknown`, `unknown`\> \| [`SqlCondition`](../interfaces/SqlCondition.md)\<`unknown`\> \| `null` | `null` | SQL query for query-based models (view models, aggregations, etc.) When defined, the model uses this query as a CTE instead of TABLE_NAME. **Example** `// Static query static QUERY = ` SELECT users.id, COUNT(posts.id) as post_count FROM users LEFT JOIN posts ON users.id = posts.user_id GROUP BY users.id `;` | [DBModel.ts:199](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L199) |
77
+ | <a id="_dbconfig"></a> `_dbConfig` | `static` | [`DBConfig`](../interfaces/DBConfig.md) \| `null` | `null` | Database config | [DBModel.ts:221](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L221) |
78
+ | <a id="_limitconfig"></a> `_limitConfig` | `static` | [`LimitConfig`](../interfaces/LimitConfig.md) | `{}` | Limit config for safety guards | [DBModel.ts:224](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L224) |
79
+ | <a id="_configoptions"></a> `_configOptions` | `static` | [`DBConfigOptions`](../interfaces/DBConfigOptions.md) | `undefined` | Configuration options for reader/writer separation | [DBModel.ts:227](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L227) |
80
+ | <a id="_lasttransactiontime"></a> `_lastTransactionTime` | `static` | `number` | `0` | Last transaction completion time (for writer sticky) | [DBModel.ts:233](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L233) |
81
+ | <a id="true"></a> `true` | `readonly` | `DBBoolValue` | `undefined` | Boolean TRUE value | [DBModel.ts:1469](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1469) |
82
+ | <a id="false"></a> `false` | `readonly` | `DBBoolValue` | `undefined` | Boolean FALSE value | [DBModel.ts:1472](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1472) |
83
+ | <a id="null"></a> `null` | `readonly` | `DBNullValue` | `undefined` | NULL value | [DBModel.ts:1475](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1475) |
84
+ | <a id="notnull"></a> `notNull` | `readonly` | `DBNotNullValue` | `undefined` | NOT NULL value | [DBModel.ts:1478](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1478) |
85
+ | <a id="now"></a> `now` | `readonly` | `DBImmediateValue` | `undefined` | NOW() value | [DBModel.ts:1481](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1481) |
86
+ | <a id="_modelclass"></a> `_modelClass` | `protected` | *typeof* `DBModel` | `undefined` | Instance reference to the static class | [DBModel.ts:1871](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1871) |
87
+ | <a id="_relationcache"></a> `_relationCache` | `protected` | `Map`\<`string`, `unknown`\> \| `null` | `null` | Per-instance cache for loaded relations (lazy-initialized) | [DBModel.ts:1874](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1874) |
88
+ | <a id="_deferredcontext"></a> `_deferredContext` | `public` | \[*typeof* `DBModel`, `DBModel`[]\] \| `null` | `null` | Deferred context info: [sourceClass, records] set by _select, resolved on first relation access | [DBModel.ts:1880](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1880) |
89
89
 
90
90
  ## Methods
91
91
 
@@ -95,7 +95,7 @@ Defined in: [DBModel.ts:1865](https://github.com/foo-ogawa/litedbmodel/blob/main
95
95
  static asModel<T>(this: T): T & ColumnsOf<InstanceType<T>>;
96
96
  ```
97
97
 
98
- Defined in: [DBModel.ts:165](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L165)
98
+ Defined in: [DBModel.ts:166](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L166)
99
99
 
100
100
  Returns the model class with type-safe column properties.
101
101
  Use this instead of manual casting with `ColumnsOf`.
@@ -139,7 +139,7 @@ await User.find([[User.name, 'John']]);
139
139
  static setConfig(config: DBConfig, options?: DBConfigOptions): void;
140
140
  ```
141
141
 
142
- Defined in: [DBModel.ts:391](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L391)
142
+ Defined in: [DBModel.ts:392](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L392)
143
143
 
144
144
  Initialize DBModel with database config.
145
145
  Call this once at application startup.
@@ -188,7 +188,7 @@ DBModel.setConfig(
188
188
  static getLimitConfig(): LimitConfig;
189
189
  ```
190
190
 
191
- Defined in: [DBModel.ts:420](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L420)
191
+ Defined in: [DBModel.ts:421](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L421)
192
192
 
193
193
  Get current limit configuration.
194
194
 
@@ -204,7 +204,7 @@ Get current limit configuration.
204
204
  static setLimitConfig(config: LimitConfig): void;
205
205
  ```
206
206
 
207
- Defined in: [DBModel.ts:435](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L435)
207
+ Defined in: [DBModel.ts:436](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L436)
208
208
 
209
209
  Update limit configuration.
210
210
 
@@ -236,7 +236,7 @@ DBModel.setLimitConfig({ findHardLimit: null, hasManyHardLimit: null });
236
236
  static getDBConfig(): DBConfig | null;
237
237
  ```
238
238
 
239
- Defined in: [DBModel.ts:442](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L442)
239
+ Defined in: [DBModel.ts:443](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L443)
240
240
 
241
241
  Get database config
242
242
 
@@ -252,7 +252,7 @@ Get database config
252
252
  static getDriverType(): "postgres" | "mysql" | "sqlite";
253
253
  ```
254
254
 
255
- Defined in: [DBModel.ts:450](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L450)
255
+ Defined in: [DBModel.ts:451](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L451)
256
256
 
257
257
  Get the database driver type.
258
258
  Returns 'postgres', 'mysql', or 'sqlite'.
@@ -269,7 +269,7 @@ Returns 'postgres', 'mysql', or 'sqlite'.
269
269
  protected static getHandler(): DBHandler;
270
270
  ```
271
271
 
272
- Defined in: [DBModel.ts:476](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L476)
272
+ Defined in: [DBModel.ts:505](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L505)
273
273
 
274
274
  Get a DBHandler instance for this model.
275
275
  Connection priority:
@@ -290,7 +290,7 @@ Connection priority:
290
290
  protected static _shouldUseWriterSticky(): boolean;
291
291
  ```
292
292
 
293
- Defined in: [DBModel.ts:505](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L505)
293
+ Defined in: [DBModel.ts:534](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L534)
294
294
 
295
295
  Check if we should use writer due to sticky after transaction.
296
296
 
@@ -306,7 +306,7 @@ Check if we should use writer due to sticky after transaction.
306
306
  protected static _getTransactionContext(): AsyncLocalStorage<TransactionContext>;
307
307
  ```
308
308
 
309
- Defined in: [DBModel.ts:517](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L517)
309
+ Defined in: [DBModel.ts:546](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L546)
310
310
 
311
311
  Get transaction context storage.
312
312
  Override in subclass to use independent transaction context.
@@ -323,7 +323,7 @@ Override in subclass to use independent transaction context.
323
323
  protected static _getWriterContext(): AsyncLocalStorage<WriterContext>;
324
324
  ```
325
325
 
326
- Defined in: [DBModel.ts:525](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L525)
326
+ Defined in: [DBModel.ts:554](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L554)
327
327
 
328
328
  Get writer context storage.
329
329
  Override in subclass to use independent writer context.
@@ -340,7 +340,7 @@ Override in subclass to use independent writer context.
340
340
  static inWriterContext(): boolean;
341
341
  ```
342
342
 
343
- Defined in: [DBModel.ts:532](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L532)
343
+ Defined in: [DBModel.ts:561](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L561)
344
344
 
345
345
  Check if currently in a withWriter context.
346
346
 
@@ -356,7 +356,7 @@ Check if currently in a withWriter context.
356
356
  static use(MiddlewareClass: MiddlewareClass): () => void;
357
357
  ```
358
358
 
359
- Defined in: [DBModel.ts:575](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L575)
359
+ Defined in: [DBModel.ts:604](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L604)
360
360
 
361
361
  Register a middleware class to intercept DBModel methods.
362
362
 
@@ -407,7 +407,7 @@ console.log(LoggerMiddleware.getCurrentContext().getLogs());
407
407
  static createMiddleware<S>(config: MiddlewareConfig<S>): CreatedMiddlewareClass<S>;
408
408
  ```
409
409
 
410
- Defined in: [DBModel.ts:627](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L627)
410
+ Defined in: [DBModel.ts:656](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L656)
411
411
 
412
412
  Create a middleware class from a configuration object.
413
413
 
@@ -473,7 +473,7 @@ TenantMiddleware.getCurrentContext().tenantId = 123;
473
473
  static removeMiddleware(MiddlewareClass: MiddlewareClass): boolean;
474
474
  ```
475
475
 
476
- Defined in: [DBModel.ts:638](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L638)
476
+ Defined in: [DBModel.ts:667](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L667)
477
477
 
478
478
  Remove a middleware class
479
479
 
@@ -497,7 +497,7 @@ true if middleware was found and removed
497
497
  static clearMiddlewares(): void;
498
498
  ```
499
499
 
500
- Defined in: [DBModel.ts:650](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L650)
500
+ Defined in: [DBModel.ts:679](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L679)
501
501
 
502
502
  Clear all middlewares (useful for testing)
503
503
 
@@ -513,7 +513,7 @@ Clear all middlewares (useful for testing)
513
513
  static getMiddlewares(): readonly MiddlewareClass[];
514
514
  ```
515
515
 
516
- Defined in: [DBModel.ts:657](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L657)
516
+ Defined in: [DBModel.ts:686](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L686)
517
517
 
518
518
  Get registered middleware classes
519
519
 
@@ -536,7 +536,7 @@ static buildSelectSQL<T>(
536
536
  };
537
537
  ```
538
538
 
539
- Defined in: [DBModel.ts:847](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L847)
539
+ Defined in: [DBModel.ts:876](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L876)
540
540
 
541
541
  Build SELECT SQL without executing.
542
542
  Useful for constructing CTE/subquery SQL fragments.
@@ -570,8 +570,8 @@ Object with sql and params
570
570
 
571
571
  | Name | Type | Defined in |
572
572
  | ------ | ------ | ------ |
573
- | `sql` | `string` | [DBModel.ts:852](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L852) |
574
- | `params` | `unknown`[] | [DBModel.ts:852](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L852) |
573
+ | `sql` | `string` | [DBModel.ts:881](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L881) |
574
+ | `params` | `unknown`[] | [DBModel.ts:881](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L881) |
575
575
 
576
576
  #### Example
577
577
 
@@ -593,7 +593,7 @@ const { sql, params } = User.buildSelectSQL(
593
593
  protected static _mergeFindFilter(conditions: ConditionObject): ConditionObject;
594
594
  ```
595
595
 
596
- Defined in: [DBModel.ts:934](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L934)
596
+ Defined in: [DBModel.ts:963](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L963)
597
597
 
598
598
  Merge FIND_FILTER (the model's default filter) into a condition object (v1 `_buildSelectSQL` parity).
599
599
 
@@ -618,7 +618,7 @@ static inSubquery<T, S>(
618
618
  conditions?: readonly [Column<any, S>, unknown][]): readonly [string, DBSubquery];
619
619
  ```
620
620
 
621
- Defined in: [DBModel.ts:1498](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1498)
621
+ Defined in: [DBModel.ts:1527](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1527)
622
622
 
623
623
  IN subquery condition.
624
624
  Creates a condition like: column IN (SELECT selectColumn FROM targetModel WHERE ...)
@@ -686,7 +686,7 @@ static notInSubquery<T, S>(
686
686
  conditions?: readonly [Column<any, S>, unknown][]): readonly [string, DBSubquery];
687
687
  ```
688
688
 
689
- Defined in: [DBModel.ts:1546](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1546)
689
+ Defined in: [DBModel.ts:1572](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1572)
690
690
 
691
691
  NOT IN subquery condition.
692
692
  Creates a condition like: table.column NOT IN (SELECT table.column FROM targetModel WHERE ...)
@@ -739,7 +739,7 @@ await User.find([
739
739
  static exists<S>(conditions: readonly [Column<any, S>, unknown][]): readonly [string, DBExists];
740
740
  ```
741
741
 
742
- Defined in: [DBModel.ts:1589](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1589)
742
+ Defined in: [DBModel.ts:1612](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1612)
743
743
 
744
744
  EXISTS subquery condition.
745
745
  Creates a condition like: EXISTS (SELECT 1 FROM targetModel WHERE table.column = ...)
@@ -786,7 +786,7 @@ await User.find([
786
786
  static notExists<S>(conditions: readonly [Column<any, S>, unknown][]): readonly [string, DBExists];
787
787
  ```
788
788
 
789
- Defined in: [DBModel.ts:1624](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1624)
789
+ Defined in: [DBModel.ts:1644](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1644)
790
790
 
791
791
  NOT EXISTS subquery condition.
792
792
  Creates a condition like: NOT EXISTS (SELECT 1 FROM targetModel WHERE table.column = ...)
@@ -832,7 +832,7 @@ await User.find([
832
832
  static getTableName(): string;
833
833
  ```
834
834
 
835
- Defined in: [DBModel.ts:1705](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1705)
835
+ Defined in: [DBModel.ts:1722](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1722)
836
836
 
837
837
  Get table name for SELECT queries.
838
838
  For query-based models, returns the CTE alias (TABLE_NAME).
@@ -849,7 +849,7 @@ For query-based models, returns the CTE alias (TABLE_NAME).
849
849
  static isQueryBased(): boolean;
850
850
  ```
851
851
 
852
- Defined in: [DBModel.ts:1763](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1763)
852
+ Defined in: [DBModel.ts:1780](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1780)
853
853
 
854
854
  Check if this model is query-based (uses QUERY instead of TABLE_NAME)
855
855
 
@@ -872,7 +872,7 @@ static withQuery<T>(this: T, queryConfig:
872
872
  }): T;
873
873
  ```
874
874
 
875
- Defined in: [DBModel.ts:1792](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1792)
875
+ Defined in: [DBModel.ts:1809](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1809)
876
876
 
877
877
  Create a new model class bound to specific query parameters.
878
878
  Used for parameterized query-based models.
@@ -923,7 +923,7 @@ class SalesReportModel extends DBModel {
923
923
  static getUpdateTableName(): string;
924
924
  ```
925
925
 
926
- Defined in: [DBModel.ts:1842](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1842)
926
+ Defined in: [DBModel.ts:1859](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1859)
927
927
 
928
928
  Get table name for UPDATE/DELETE queries.
929
929
  Query-based models cannot be updated/deleted directly.
@@ -940,7 +940,7 @@ Query-based models cannot be updated/deleted directly.
940
940
  clearRelationCache(): void;
941
941
  ```
942
942
 
943
- Defined in: [DBModel.ts:1906](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1906)
943
+ Defined in: [DBModel.ts:1923](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L1923)
944
944
 
945
945
  Clear the relation cache for this instance.
946
946
  Also clears the context cache to force reload from DB.
@@ -957,7 +957,7 @@ Also clears the context cache to force reload from DB.
957
957
  typeCastFromDB(): void;
958
958
  ```
959
959
 
960
- Defined in: [DBModel.ts:2046](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2046)
960
+ Defined in: [DBModel.ts:2065](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2065)
961
961
 
962
962
  Called after loading from DB to convert types
963
963
  Override in derived class to implement type conversions
@@ -983,7 +983,7 @@ typeCastFromDB(): void {
983
983
  getPkey(): Record<string, unknown> | null;
984
984
  ```
985
985
 
986
- Defined in: [DBModel.ts:2058](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2058)
986
+ Defined in: [DBModel.ts:2077](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2077)
987
987
 
988
988
  Get primary key as object
989
989
 
@@ -1001,7 +1001,7 @@ Object with primary key column names and values, or null if not set
1001
1001
  setPkey(key: unknown): void;
1002
1002
  ```
1003
1003
 
1004
- Defined in: [DBModel.ts:2079](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2079)
1004
+ Defined in: [DBModel.ts:2098](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2098)
1005
1005
 
1006
1006
  Set primary key value
1007
1007
 
@@ -1023,7 +1023,7 @@ Set primary key value
1023
1023
  getPkeyString(): string;
1024
1024
  ```
1025
1025
 
1026
- Defined in: [DBModel.ts:2097](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2097)
1026
+ Defined in: [DBModel.ts:2116](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2116)
1027
1027
 
1028
1028
  Get primary key as string (for logging, caching, etc.)
1029
1029
 
@@ -1039,7 +1039,7 @@ Get primary key as string (for logging, caching, etc.)
1039
1039
  getSingleColId(): unknown;
1040
1040
  ```
1041
1041
 
1042
- Defined in: [DBModel.ts:2109](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2109)
1042
+ Defined in: [DBModel.ts:2128](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2128)
1043
1043
 
1044
1044
  Get single-column ID value
1045
1045
 
@@ -1057,7 +1057,7 @@ ID value or undefined
1057
1057
  clone<T>(this: T): T;
1058
1058
  ```
1059
1059
 
1060
- Defined in: [DBModel.ts:2124](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2124)
1060
+ Defined in: [DBModel.ts:2143](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2143)
1061
1061
 
1062
1062
  Create a shallow copy of the model instance
1063
1063
 
@@ -1085,7 +1085,7 @@ Create a shallow copy of the model instance
1085
1085
  assign(source: Partial<this>): this;
1086
1086
  ```
1087
1087
 
1088
- Defined in: [DBModel.ts:2132](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2132)
1088
+ Defined in: [DBModel.ts:2151](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2151)
1089
1089
 
1090
1090
  Copy properties from another object
1091
1091
 
@@ -1107,7 +1107,7 @@ Copy properties from another object
1107
1107
  toObject(): Record<string, unknown>;
1108
1108
  ```
1109
1109
 
1110
- Defined in: [DBModel.ts:2143](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2143)
1110
+ Defined in: [DBModel.ts:2162](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2162)
1111
1111
 
1112
1112
  Convert to plain object
1113
1113
 
@@ -1123,7 +1123,7 @@ Convert to plain object
1123
1123
  toJSON(): Record<string, unknown>;
1124
1124
  ```
1125
1125
 
1126
- Defined in: [DBModel.ts:2156](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2156)
1126
+ Defined in: [DBModel.ts:2175](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2175)
1127
1127
 
1128
1128
  Convert to JSON-serializable object
1129
1129
 
@@ -1139,7 +1139,7 @@ Convert to JSON-serializable object
1139
1139
  static fromObject<T>(this: () => T, obj: Record<string, unknown>): T;
1140
1140
  ```
1141
1141
 
1142
- Defined in: [DBModel.ts:2167](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2167)
1142
+ Defined in: [DBModel.ts:2186](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2186)
1143
1143
 
1144
1144
  Create an instance from a plain object
1145
1145
 
@@ -1168,7 +1168,7 @@ Create an instance from a plain object
1168
1168
  static fromObjects<T>(this: () => T, objs: Record<string, unknown>[]): T[];
1169
1169
  ```
1170
1170
 
1171
- Defined in: [DBModel.ts:2180](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2180)
1171
+ Defined in: [DBModel.ts:2199](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2199)
1172
1172
 
1173
1173
  Create multiple instances from an array of plain objects
1174
1174
 
@@ -1197,7 +1197,7 @@ Create multiple instances from an array of plain objects
1197
1197
  static columnList<T>(records: T[], columnName: string): unknown[];
1198
1198
  ```
1199
1199
 
1200
- Defined in: [DBModel.ts:2190](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2190)
1200
+ Defined in: [DBModel.ts:2209](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2209)
1201
1201
 
1202
1202
  Get column values from an array of model instances
1203
1203
 
@@ -1226,7 +1226,7 @@ Get column values from an array of model instances
1226
1226
  static hashByProperty<T>(records: T[], propertyKey: string): Record<string, T>;
1227
1227
  ```
1228
1228
 
1229
- Defined in: [DBModel.ts:2200](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2200)
1229
+ Defined in: [DBModel.ts:2219](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2219)
1230
1230
 
1231
1231
  Create a hash map by property value
1232
1232
 
@@ -1255,7 +1255,7 @@ Create a hash map by property value
1255
1255
  static groupByProperty<T>(records: T[], propertyKey: string): Record<string, T[]>;
1256
1256
  ```
1257
1257
 
1258
- Defined in: [DBModel.ts:2215](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2215)
1258
+ Defined in: [DBModel.ts:2234](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2234)
1259
1259
 
1260
1260
  Group records by property value
1261
1261
 
@@ -1284,7 +1284,7 @@ Group records by property value
1284
1284
  static idList<T>(records: T[], column?: string): unknown[];
1285
1285
  ```
1286
1286
 
1287
- Defined in: [DBModel.ts:2233](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2233)
1287
+ Defined in: [DBModel.ts:2252](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2252)
1288
1288
 
1289
1289
  Get ID list from records
1290
1290
 
@@ -1316,7 +1316,7 @@ static makeLikeString(
1316
1316
  back?: boolean): string;
1317
1317
  ```
1318
1318
 
1319
- Defined in: [DBModel.ts:2241](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2241)
1319
+ Defined in: [DBModel.ts:2260](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2260)
1320
1320
 
1321
1321
  Generate LIKE pattern string
1322
1322
 
@@ -1340,7 +1340,7 @@ Generate LIKE pattern string
1340
1340
  static or<T>(this: T, ...condGroups: readonly CondsOf<T>[]): OrCondOf<T>;
1341
1341
  ```
1342
1342
 
1343
- Defined in: [DBModel.ts:2278](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2278)
1343
+ Defined in: [DBModel.ts:2297](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2297)
1344
1344
 
1345
1345
  Create a type-safe OR condition for this model.
1346
1346
  All columns in the conditions must belong to this model.
@@ -1391,7 +1391,7 @@ static find<T>(
1391
1391
  options?: SelectOptions): Promise<InstanceType<T>[]>;
1392
1392
  ```
1393
1393
 
1394
- Defined in: [DBModel.ts:2314](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2314)
1394
+ Defined in: [DBModel.ts:2333](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2333)
1395
1395
 
1396
1396
  Find all records using type-safe condition tuples.
1397
1397
  All columns in conditions must belong to this model.
@@ -1445,7 +1445,7 @@ static findOne<T>(
1445
1445
  options?: SelectOptions): Promise<InstanceType<T> | null>;
1446
1446
  ```
1447
1447
 
1448
- Defined in: [DBModel.ts:2360](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2360)
1448
+ Defined in: [DBModel.ts:2379](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2379)
1449
1449
 
1450
1450
  Find first record using type-safe condition tuples.
1451
1451
 
@@ -1488,7 +1488,7 @@ static findById<T>(
1488
1488
  options?: SelectOptions): Promise<InstanceType<T>[]>;
1489
1489
  ```
1490
1490
 
1491
- Defined in: [DBModel.ts:2399](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2399)
1491
+ Defined in: [DBModel.ts:2418](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2418)
1492
1492
 
1493
1493
  Find records by primary key using PkeyResult format.
1494
1494
  Efficiently fetches multiple records by their primary keys.
@@ -1540,7 +1540,7 @@ const users = await User.findById(result);
1540
1540
  static count<T>(this: T, conditions: CondsOf<T>): Promise<number>;
1541
1541
  ```
1542
1542
 
1543
- Defined in: [DBModel.ts:2464](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2464)
1543
+ Defined in: [DBModel.ts:2483](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2483)
1544
1544
 
1545
1545
  Count records using type-safe condition tuples.
1546
1546
 
@@ -1580,7 +1580,7 @@ static create<T, P>(
1580
1580
  options?: InsertOptions<InstanceType<T>>): Promise<PkeyResult | null>;
1581
1581
  ```
1582
1582
 
1583
- Defined in: [DBModel.ts:2499](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2499)
1583
+ Defined in: [DBModel.ts:2518](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2518)
1584
1584
 
1585
1585
  Create a new record using type-safe column-value tuples.
1586
1586
  Value types are validated at compile time.
@@ -1634,7 +1634,7 @@ static createMany<T>(
1634
1634
  options?: InsertOptions<InstanceType<T>>): Promise<PkeyResult | null>;
1635
1635
  ```
1636
1636
 
1637
- Defined in: [DBModel.ts:2569](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2569)
1637
+ Defined in: [DBModel.ts:2588](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2588)
1638
1638
 
1639
1639
  Create multiple records using type-safe column-value tuples.
1640
1640
 
@@ -1687,7 +1687,7 @@ static update<T, V>(
1687
1687
  options?: UpdateOptions): Promise<PkeyResult | null>;
1688
1688
  ```
1689
1689
 
1690
- Defined in: [DBModel.ts:2639](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2639)
1690
+ Defined in: [DBModel.ts:2658](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2658)
1691
1691
 
1692
1692
  Update records using type-safe column-value tuples.
1693
1693
  Value types are validated at compile time.
@@ -1743,7 +1743,7 @@ static delete<T>(
1743
1743
  options?: DeleteOptions): Promise<PkeyResult | null>;
1744
1744
  ```
1745
1745
 
1746
- Defined in: [DBModel.ts:2718](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2718)
1746
+ Defined in: [DBModel.ts:2737](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2737)
1747
1747
 
1748
1748
  Delete records matching conditions
1749
1749
 
@@ -1789,7 +1789,7 @@ static updateMany<T>(
1789
1789
  options: UpdateManyOptions): Promise<PkeyResult | null>;
1790
1790
  ```
1791
1791
 
1792
- Defined in: [DBModel.ts:2796](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2796)
1792
+ Defined in: [DBModel.ts:2815](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2815)
1793
1793
 
1794
1794
  Update multiple records with different values per row.
1795
1795
  Uses efficient bulk update strategies (UNNEST for PostgreSQL, VALUES for MySQL/SQLite).
@@ -1841,7 +1841,7 @@ const users = await User.findById(result);
1841
1841
  static execute(sql: string, params?: unknown[]): Promise<ExecuteResult>;
1842
1842
  ```
1843
1843
 
1844
- Defined in: [DBModel.ts:2939](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2939)
1844
+ Defined in: [DBModel.ts:2958](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2958)
1845
1845
 
1846
1846
  Execute raw SQL query.
1847
1847
  Accepts either a SQL string with params, or a `SqlFragment` from `sql` tagged template.
@@ -1884,7 +1884,7 @@ static execute(fragment:
1884
1884
  | SqlCondition<unknown>): Promise<ExecuteResult>;
1885
1885
  ```
1886
1886
 
1887
- Defined in: [DBModel.ts:2940](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2940)
1887
+ Defined in: [DBModel.ts:2959](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L2959)
1888
1888
 
1889
1889
  Execute raw SQL query.
1890
1890
  Accepts either a SQL string with params, or a `SqlFragment` from `sql` tagged template.
@@ -1928,7 +1928,7 @@ static query<T>(
1928
1928
  params?: unknown[]): Promise<InstanceType<T>[]>;
1929
1929
  ```
1930
1930
 
1931
- Defined in: [DBModel.ts:3004](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3004)
1931
+ Defined in: [DBModel.ts:3023](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3023)
1932
1932
 
1933
1933
  Execute raw SQL and return model instances.
1934
1934
  The SQL should return columns matching the model's properties.
@@ -1977,7 +1977,7 @@ const posts = await Post.query(`
1977
1977
  static inTransaction(): boolean;
1978
1978
  ```
1979
1979
 
1980
- Defined in: [DBModel.ts:3036](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3036)
1980
+ Defined in: [DBModel.ts:3055](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3055)
1981
1981
 
1982
1982
  Check if currently in a transaction
1983
1983
 
@@ -1993,7 +1993,7 @@ Check if currently in a transaction
1993
1993
  static transaction<R>(func: () => Promise<R>, options?: TransactionOptions): Promise<R>;
1994
1994
  ```
1995
1995
 
1996
- Defined in: [DBModel.ts:3074](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3074)
1996
+ Defined in: [DBModel.ts:3093](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3093)
1997
1997
 
1998
1998
  Execute a function within a transaction
1999
1999
  All model operations inside the callback will use the same database connection.
@@ -2052,7 +2052,7 @@ await DBModel.transaction(
2052
2052
  static getCurrentConnection(): DBConnection | null;
2053
2053
  ```
2054
2054
 
2055
- Defined in: [DBModel.ts:3218](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3218)
2055
+ Defined in: [DBModel.ts:3237](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3237)
2056
2056
 
2057
2057
  Get current transaction connection
2058
2058
  Use this to execute raw SQL queries within a transaction
@@ -2082,7 +2082,7 @@ await DBModel.transaction(async () => {
2082
2082
  static getCurrentClient(): DBConnection | null;
2083
2083
  ```
2084
2084
 
2085
- Defined in: [DBModel.ts:3226](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3226)
2085
+ Defined in: [DBModel.ts:3245](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3245)
2086
2086
 
2087
2087
  #### Returns
2088
2088
 
@@ -2100,7 +2100,7 @@ Use getCurrentConnection() instead
2100
2100
  static withWriter<R>(func: () => Promise<R>): Promise<R>;
2101
2101
  ```
2102
2102
 
2103
- Defined in: [DBModel.ts:3251](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3251)
2103
+ Defined in: [DBModel.ts:3270](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3270)
2104
2104
 
2105
2105
  Execute a function with explicit writer connection access.
2106
2106
  Use this when you need to read from writer to avoid replication lag.
@@ -2146,7 +2146,7 @@ await DBModel.withWriter(async () => {
2146
2146
  static createDBBase(config: DBConfig, options?: DBConfigOptions): typeof DBModel;
2147
2147
  ```
2148
2148
 
2149
- Defined in: [DBModel.ts:3313](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3313)
2149
+ Defined in: [DBModel.ts:3332](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3332)
2150
2150
 
2151
2151
  Create an independent database base class.
2152
2152
  Use this to connect to multiple databases with isolated configurations.
@@ -2205,7 +2205,7 @@ await BaseDB.transaction(async () => {
2205
2205
  reload(forUpdate?: boolean): Promise<DBModel | null>;
2206
2206
  ```
2207
2207
 
2208
- Defined in: [DBModel.ts:3387](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3387)
2208
+ Defined in: [DBModel.ts:3406](https://github.com/foo-ogawa/litedbmodel/blob/main/src/DBModel.ts#L3406)
2209
2209
 
2210
2210
  Reload this instance from the database
2211
2211
 
@@ -1,4 +1,4 @@
1
- [**litedbmodel v2.2.7**](../README.md)
1
+ [**litedbmodel v2.2.8**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**litedbmodel v2.2.7**](../README.md)
1
+ [**litedbmodel v2.2.8**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**litedbmodel v2.2.7**](../README.md)
1
+ [**litedbmodel v2.2.8**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -1,4 +1,4 @@
1
- [**litedbmodel v2.2.7**](../README.md)
1
+ [**litedbmodel v2.2.8**](../README.md)
2
2
 
3
3
  ***
4
4