litedbmodel 1.0.1 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -13
- package/dist/DBModel.d.ts +18 -18
- package/dist/DBModel.d.ts.map +1 -1
- package/dist/DBModel.js +9 -9
- package/dist/DBModel.js.map +1 -1
- package/dist/LazyRelation.js +7 -7
- package/dist/LazyRelation.js.map +1 -1
- package/dist/SqlFragment.js +1 -1
- package/dist/SqlFragment.js.map +1 -1
- package/dist/TypeCast.d.ts +4 -0
- package/dist/TypeCast.d.ts.map +1 -1
- package/dist/TypeCast.js +16 -0
- package/dist/TypeCast.js.map +1 -1
- package/dist/decorators.d.ts +6 -7
- package/dist/decorators.d.ts.map +1 -1
- package/dist/decorators.js +21 -15
- package/dist/decorators.js.map +1 -1
- package/dist/drivers/PostgresSqlBuilder.d.ts.map +1 -1
- package/dist/drivers/PostgresSqlBuilder.js +2 -4
- package/dist/drivers/PostgresSqlBuilder.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +0 -9
- package/dist/types.d.ts.map +1 -1
- package/docs/COMPARISON.md +4 -2
- package/docs/api/README.md +61 -9
- package/docs/api/classes/Conditions.md +75 -8
- package/docs/api/classes/DBHandler.md +3 -3
- package/docs/api/classes/DBModel.md +260 -106
- package/docs/api/classes/LimitExceededError.md +1 -1
- package/docs/api/classes/Middleware.md +1 -1
- package/docs/api/classes/SqlRaw.md +53 -0
- package/docs/api/classes/SqlRef.md +59 -0
- package/docs/api/classes/Values.md +6 -6
- package/docs/api/classes/WriteInReadOnlyContextError.md +1 -1
- package/docs/api/classes/WriteOutsideTransactionError.md +1 -1
- package/docs/api/functions/belongsTo.md +2 -2
- package/docs/api/functions/closeAllPools.md +1 -1
- package/docs/api/functions/condsToRecord.md +23 -0
- package/docs/api/functions/createMiddleware.md +68 -0
- package/docs/api/functions/createPostgresDriver.md +2 -2
- package/docs/api/functions/createSqliteDriver.md +1 -1
- package/docs/api/functions/dbCast.md +1 -1
- package/docs/api/functions/dbCastIn.md +1 -1
- package/docs/api/functions/dbDynamic.md +1 -1
- package/docs/api/functions/dbFalse.md +1 -1
- package/docs/api/functions/dbImmediate.md +1 -1
- package/docs/api/functions/dbIn.md +1 -1
- package/docs/api/functions/dbNotNull.md +1 -1
- package/docs/api/functions/dbNow.md +1 -1
- package/docs/api/functions/dbNull.md +1 -1
- package/docs/api/functions/dbRaw.md +1 -1
- package/docs/api/functions/dbTrue.md +1 -1
- package/docs/api/functions/dbUuid.md +1 -1
- package/docs/api/functions/dbUuidIn.md +1 -1
- package/docs/api/functions/getDBConfig.md +1 -1
- package/docs/api/functions/getDBHandler.md +1 -1
- package/docs/api/functions/getTransactionConnection.md +2 -2
- package/docs/api/functions/getTransactionContext.md +2 -2
- package/docs/api/functions/hasMany.md +2 -2
- package/docs/api/functions/hasOne.md +2 -2
- package/docs/api/functions/initDBHandler.md +1 -1
- package/docs/api/functions/isAnySqlFragment.md +25 -0
- package/docs/api/functions/isSqlCondition.md +23 -0
- package/docs/api/functions/isSqlFragment.md +23 -0
- package/docs/api/functions/isSqlRaw.md +23 -0
- package/docs/api/functions/isSqlRef.md +23 -0
- package/docs/api/functions/isSqlTypedFragment.md +23 -0
- package/docs/api/functions/model.md +4 -4
- package/docs/api/functions/parentRef.md +1 -1
- package/docs/api/functions/sql.md +182 -0
- package/docs/api/globals.md +71 -19
- package/docs/api/interfaces/Column.md +31 -31
- package/docs/api/interfaces/ColumnOptions.md +4 -4
- package/docs/api/interfaces/CreatedMiddlewareClass.md +110 -0
- package/docs/api/interfaces/DBConfig.md +2 -2
- package/docs/api/interfaces/DBConfigOptions.md +1 -1
- package/docs/api/interfaces/DeleteOptions.md +1 -1
- package/docs/api/interfaces/InsertOptions.md +2 -2
- package/docs/api/interfaces/LimitConfig.md +1 -1
- package/docs/api/interfaces/MiddlewareConfig.md +40 -0
- package/docs/api/interfaces/ModelOptions.md +1 -1
- package/docs/api/interfaces/PkeyResult.md +1 -1
- package/docs/api/interfaces/SelectOptions.md +1 -1
- package/docs/api/interfaces/SqlCondition.md +27 -0
- package/docs/api/interfaces/SqlFragment.md +20 -0
- package/docs/api/interfaces/SqlTypedFragment.md +29 -0
- package/docs/api/interfaces/TransactionOptions.md +1 -1
- package/docs/api/interfaces/UpdateManyOptions.md +1 -1
- package/docs/api/interfaces/UpdateOptions.md +1 -1
- package/docs/sql-tagged-template.md +5 -5
- package/package.json +1 -1
package/dist/types.d.ts
CHANGED
|
@@ -329,15 +329,6 @@ export type ColumnDefs<T> = {
|
|
|
329
329
|
};
|
|
330
330
|
export interface DBModelStatic<T extends DBModelInstance = DBModelInstance> {
|
|
331
331
|
new (): T;
|
|
332
|
-
TABLE_NAME: string;
|
|
333
|
-
UPDATE_TABLE_NAME: string | null;
|
|
334
|
-
SELECT_COLUMN: string;
|
|
335
|
-
DEFAULT_ORDER: OrderSpec | null;
|
|
336
|
-
DEFAULT_GROUP: Column | Column[] | string | null;
|
|
337
|
-
FIND_FILTER: Conds | null;
|
|
338
|
-
PKEY_COLUMNS: Column[] | null;
|
|
339
|
-
SEQ_NAME: string | null;
|
|
340
|
-
ID_TYPE: 'serial' | 'uuid' | null;
|
|
341
332
|
getTableName(): string;
|
|
342
333
|
getUpdateTableName(): string;
|
|
343
334
|
getGroupByClause(): string | null;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/docs/COMPARISON.md
CHANGED
|
@@ -290,8 +290,8 @@ SKIP also works in `createMany` and `updateMany`:
|
|
|
290
290
|
| Operation | SKIP Behavior |
|
|
291
291
|
|-----------|---------------|
|
|
292
292
|
| `create` / `update` | Column excluded from INSERT/UPDATE |
|
|
293
|
-
| `createMany` | Column excluded → DB DEFAULT applied |
|
|
294
|
-
| `updateMany` | Column excluded → existing value retained |
|
|
293
|
+
| `createMany` | Column excluded → DB DEFAULT applied (see note below) |
|
|
294
|
+
| `updateMany` | Column excluded → existing value retained (single query) |
|
|
295
295
|
|
|
296
296
|
```typescript
|
|
297
297
|
// createMany - records grouped by SKIP pattern for efficient batch INSERT
|
|
@@ -307,6 +307,8 @@ await User.updateMany([
|
|
|
307
307
|
], { keyColumns: User.id });
|
|
308
308
|
```
|
|
309
309
|
|
|
310
|
+
> **Note on `createMany` with SKIP:** `createMany` groups records by their SKIP pattern and issues a separate INSERT per group, because SQL does not allow mixing `DEFAULT` with array-based bulk insert (`UNNEST`). `updateMany` does not have this limitation — it handles SKIP in a single query using boolean flags. For best performance with `createMany`, prefer providing explicit values for all columns instead of using SKIP.
|
|
311
|
+
|
|
310
312
|
---
|
|
311
313
|
|
|
312
314
|
## 4. SQL-Friendly Design
|
package/docs/api/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
**litedbmodel
|
|
1
|
+
**litedbmodel v1.0.1**
|
|
2
2
|
|
|
3
3
|
***
|
|
4
4
|
|
|
@@ -407,8 +407,8 @@ class LoggingMiddleware extends Middleware {
|
|
|
407
407
|
}
|
|
408
408
|
}
|
|
409
409
|
|
|
410
|
-
// Register middleware
|
|
411
|
-
|
|
410
|
+
// Register middleware (applies to ALL models)
|
|
411
|
+
DBModel.use(LoggingMiddleware);
|
|
412
412
|
```
|
|
413
413
|
|
|
414
414
|
See: [Middleware](classes/Middleware.md)
|
|
@@ -463,13 +463,65 @@ await User.updateMany([
|
|
|
463
463
|
], { keyColumns: User.id });
|
|
464
464
|
```
|
|
465
465
|
|
|
466
|
-
###
|
|
466
|
+
### SQL Generation Strategy (Complete Matrix)
|
|
467
|
+
|
|
468
|
+
| DB | Operation | SKIP | SQL Strategy | SQL Example | Test |
|
|
469
|
+
|----|-----------|------|--------------|-------------|------|
|
|
470
|
+
| PostgreSQL | create | No | VALUES | `INSERT INTO t (name, arr, json) VALUES ($1, '{1,2}', '{"a":1}')` | ✅ |
|
|
471
|
+
| PostgreSQL | create | Yes | VALUES (column excluded) | `INSERT INTO t (name, json) VALUES ($1, '{"a":1}')` - arr excluded | ✅ |
|
|
472
|
+
| PostgreSQL | createMany | No | UNNEST | `INSERT INTO t SELECT v.name, (jsonb->arr), v.json::jsonb FROM UNNEST($1::text[], $2::text[], $3::text[]) AS v` | ✅ |
|
|
473
|
+
| PostgreSQL | createMany | Yes | Group by SKIP pattern -> UNNEST per group | Same as above, SKIP columns excluded from INSERT -> DB DEFAULT | ✅ |
|
|
474
|
+
| PostgreSQL | update | No | SET | `UPDATE t SET name=$1, arr='{1,2}', json='{"a":1}' WHERE id=$2` | ✅ |
|
|
475
|
+
| PostgreSQL | update | Yes | SET (column excluded) | `UPDATE t SET name=$1, json='{"a":1}' WHERE id=$2` - arr excluded | ✅ |
|
|
476
|
+
| PostgreSQL | updateMany | No | UNNEST | `UPDATE t SET arr=(jsonb->arr), json=v.json::jsonb FROM UNNEST(...) AS v WHERE t.id=v.id` | ✅ |
|
|
477
|
+
| PostgreSQL | updateMany | Yes | UNNEST + skip_flag column | `SET arr=CASE WHEN v._skip_arr THEN t.arr ELSE (jsonb->arr) END` | ✅ |
|
|
478
|
+
| MySQL | create | No | VALUES | `INSERT INTO t (name, status) VALUES (?, ?)` | ✅ |
|
|
479
|
+
| MySQL | create | Yes | VALUES (column excluded) | `INSERT INTO t (name) VALUES (?)` - status excluded -> DB DEFAULT | ✅ |
|
|
480
|
+
| MySQL | createMany | No | VALUES ROW | `INSERT INTO t (name, status) VALUES ROW(?,?), ROW(?,?)` | ✅ |
|
|
481
|
+
| MySQL | createMany | Yes | Group by SKIP pattern -> VALUES per group | Same as above, SKIP columns excluded from INSERT -> DB DEFAULT | ✅ |
|
|
482
|
+
| MySQL | update | No | SET | `UPDATE t SET name=?, status=? WHERE id=?` | ✅ |
|
|
483
|
+
| MySQL | update | Yes | SET (column excluded) | `UPDATE t SET name=? WHERE id=?` - status excluded | ✅ |
|
|
484
|
+
| MySQL | updateMany | No | JOIN VALUES ROW | `UPDATE t JOIN (VALUES ROW(?,?)) AS v ON t.id=v.id SET t.col=v.col` | ✅ |
|
|
485
|
+
| MySQL | updateMany | Yes | JOIN VALUES + IF(skip_flag) | `SET t.status=IF(v._skip_status, t.status, v.status)` | ✅ |
|
|
486
|
+
| SQLite | create | No | VALUES | `INSERT INTO t (name, status) VALUES (?, ?)` | ✅ |
|
|
487
|
+
| SQLite | create | Yes | VALUES (column excluded) | `INSERT INTO t (name) VALUES (?)` - status excluded -> DB DEFAULT | ✅ |
|
|
488
|
+
| SQLite | createMany | No | VALUES | `INSERT INTO t (name, status) VALUES (?,?), (?,?)` | ✅ |
|
|
489
|
+
| SQLite | createMany | Yes | Group by SKIP pattern -> VALUES per group | Same as above, SKIP columns excluded from INSERT -> DB DEFAULT | ✅ |
|
|
490
|
+
| SQLite | update | No | SET | `UPDATE t SET name=?, status=? WHERE id=?` | ✅ |
|
|
491
|
+
| SQLite | update | Yes | SET (column excluded) | `UPDATE t SET name=? WHERE id=?` - status excluded | ✅ |
|
|
492
|
+
| SQLite | updateMany | No | CASE WHEN | `UPDATE t SET status=CASE WHEN id=? THEN ? WHEN id=? THEN ? END WHERE id IN (?,?)` | ✅ |
|
|
493
|
+
| SQLite | updateMany | Yes | CASE WHEN + column ref | `SET status=CASE WHEN id=1 THEN ? WHEN id=2 THEN t.status END` - SKIP uses column ref | ✅ |
|
|
494
|
+
|
|
495
|
+
**Notes:**
|
|
496
|
+
- PostgreSQL array types: In createMany/updateMany, `JSON.stringify()` -> `text[]` -> `jsonb_array_elements_text()` to deserialize
|
|
497
|
+
- PostgreSQL JSON types: In createMany/updateMany, `JSON.stringify()` -> `text[]` -> `::jsonb` cast
|
|
498
|
+
- MySQL/SQLite: Use `@column.json<T[]>()` for array-like data (stored as JSON text)
|
|
499
|
+
- `(jsonb->arr)` = `COALESCE((SELECT array_agg(elem::int) FROM jsonb_array_elements_text(v.col::jsonb) AS elem), ARRAY[]::int[])`
|
|
500
|
+
|
|
501
|
+
### Architecture: Driver-Specific SQL Building
|
|
502
|
+
|
|
503
|
+
litedbmodel uses a `SqlBuilder` architecture to generate optimized SQL for each database:
|
|
504
|
+
|
|
505
|
+
| Driver | Interface | INSERT Strategy | UPDATE Strategy |
|
|
506
|
+
|--------|-----------|-----------------|-----------------|
|
|
507
|
+
| PostgreSQL | `PostgresSqlBuilder` | VALUES for single, UNNEST for batch (2+) | UNNEST with skip flags |
|
|
508
|
+
| MySQL | `MysqlSqlBuilder` | VALUES ROW | JOIN VALUES + IF |
|
|
509
|
+
| SQLite | `SqliteSqlBuilder` | VALUES clause | CASE WHEN |
|
|
510
|
+
|
|
511
|
+
Each driver also provides `DriverTypeCast` for serialization/deserialization:
|
|
467
512
|
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
513
|
+
```typescript
|
|
514
|
+
interface DriverTypeCast {
|
|
515
|
+
serializeArray<T>(val: T[]): unknown; // JS array -> DB format
|
|
516
|
+
deserializeArray<T>(val: unknown): T[]; // DB value -> JS array
|
|
517
|
+
serializeJson(val: unknown): unknown; // JS object -> DB format
|
|
518
|
+
deserializeJson<T>(val: unknown): T; // DB value -> JS object
|
|
519
|
+
}
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
- **PostgreSQL**: Native array format `{1,2,3}`, native JSONB
|
|
523
|
+
- **MySQL**: JSON column type with automatic serialization
|
|
524
|
+
- **SQLite**: TEXT columns with JSON.stringify/JSON.parse
|
|
473
525
|
|
|
474
526
|
See: [Conditions](classes/Conditions.md), [Values](classes/Values.md), [SKIP](variables/SKIP.md)
|
|
475
527
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[**litedbmodel
|
|
1
|
+
[**litedbmodel v1.0.1**](../README.md)
|
|
2
2
|
|
|
3
3
|
***
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
# Class: Conditions\<Model\>
|
|
8
8
|
|
|
9
|
-
Defined in: Column.ts:
|
|
9
|
+
Defined in: Column.ts:628
|
|
10
10
|
|
|
11
11
|
Type-safe builder for query conditions.
|
|
12
12
|
Use array literals for static conditions, builder for dynamic construction.
|
|
@@ -47,7 +47,7 @@ if (query.active) where.add(User.is_active, true);
|
|
|
47
47
|
new Conditions<Model>(initial?: Conds): Conditions<Model>;
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
Defined in: Column.ts:
|
|
50
|
+
Defined in: Column.ts:634
|
|
51
51
|
|
|
52
52
|
Create a Conditions builder, optionally with initial conditions.
|
|
53
53
|
|
|
@@ -71,7 +71,7 @@ Create a Conditions builder, optionally with initial conditions.
|
|
|
71
71
|
get length(): number;
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
Defined in: Column.ts:
|
|
74
|
+
Defined in: Column.ts:700
|
|
75
75
|
|
|
76
76
|
Get the number of conditions.
|
|
77
77
|
|
|
@@ -87,7 +87,7 @@ Get the number of conditions.
|
|
|
87
87
|
add<V>(column: Column<V, Model>, value: V | null | undefined): this;
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
Defined in: Column.ts:
|
|
90
|
+
Defined in: Column.ts:643
|
|
91
91
|
|
|
92
92
|
Add a type-safe column equality condition.
|
|
93
93
|
|
|
@@ -116,7 +116,7 @@ Add a type-safe column equality condition.
|
|
|
116
116
|
addRaw(condition: string, value?: unknown): this;
|
|
117
117
|
```
|
|
118
118
|
|
|
119
|
-
Defined in: Column.ts:
|
|
119
|
+
Defined in: Column.ts:651
|
|
120
120
|
|
|
121
121
|
Add a raw condition with template literal (e.g., `${User.age} > ?`).
|
|
122
122
|
|
|
@@ -133,13 +133,80 @@ Add a raw condition with template literal (e.g., `${User.age} > ?`).
|
|
|
133
133
|
|
|
134
134
|
***
|
|
135
135
|
|
|
136
|
+
### addSql()
|
|
137
|
+
|
|
138
|
+
#### Call Signature
|
|
139
|
+
|
|
140
|
+
```ts
|
|
141
|
+
addSql<V>(fragment: SqlTypedFragment<V, Model>, value: V): this;
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Defined in: Column.ts:670
|
|
145
|
+
|
|
146
|
+
Add a type-safe sql-tagged condition.
|
|
147
|
+
|
|
148
|
+
##### Type Parameters
|
|
149
|
+
|
|
150
|
+
| Type Parameter |
|
|
151
|
+
| ------ |
|
|
152
|
+
| `V` |
|
|
153
|
+
|
|
154
|
+
##### Parameters
|
|
155
|
+
|
|
156
|
+
| Parameter | Type |
|
|
157
|
+
| ------ | ------ |
|
|
158
|
+
| `fragment` | [`SqlTypedFragment`](../interfaces/SqlTypedFragment.md)\<`V`, `Model`\> |
|
|
159
|
+
| `value` | `V` |
|
|
160
|
+
|
|
161
|
+
##### Returns
|
|
162
|
+
|
|
163
|
+
`this`
|
|
164
|
+
|
|
165
|
+
##### Example
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
const where = new Conditions<User>();
|
|
169
|
+
where.addSql(sql`${User.age} > ?`, 18);
|
|
170
|
+
where.addSql(sql`${User.deleted_at} IS NULL`);
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
#### Call Signature
|
|
174
|
+
|
|
175
|
+
```ts
|
|
176
|
+
addSql(fragment: SqlTypedFragment<any, Model>): this;
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Defined in: Column.ts:671
|
|
180
|
+
|
|
181
|
+
Add a type-safe sql-tagged condition.
|
|
182
|
+
|
|
183
|
+
##### Parameters
|
|
184
|
+
|
|
185
|
+
| Parameter | Type |
|
|
186
|
+
| ------ | ------ |
|
|
187
|
+
| `fragment` | [`SqlTypedFragment`](../interfaces/SqlTypedFragment.md)\<`any`, `Model`\> |
|
|
188
|
+
|
|
189
|
+
##### Returns
|
|
190
|
+
|
|
191
|
+
`this`
|
|
192
|
+
|
|
193
|
+
##### Example
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
const where = new Conditions<User>();
|
|
197
|
+
where.addSql(sql`${User.age} > ?`, 18);
|
|
198
|
+
where.addSql(sql`${User.deleted_at} IS NULL`);
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
***
|
|
202
|
+
|
|
136
203
|
### or()
|
|
137
204
|
|
|
138
205
|
```ts
|
|
139
206
|
or(...condGroups: readonly Conds[]): this;
|
|
140
207
|
```
|
|
141
208
|
|
|
142
|
-
Defined in: Column.ts:
|
|
209
|
+
Defined in: Column.ts:685
|
|
143
210
|
|
|
144
211
|
Add an OR condition group.
|
|
145
212
|
|
|
@@ -161,7 +228,7 @@ Add an OR condition group.
|
|
|
161
228
|
build(): Conds;
|
|
162
229
|
```
|
|
163
230
|
|
|
164
|
-
Defined in: Column.ts:
|
|
231
|
+
Defined in: Column.ts:693
|
|
165
232
|
|
|
166
233
|
Build the final array for use with find/count/delete.
|
|
167
234
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[**litedbmodel
|
|
1
|
+
[**litedbmodel v1.0.1**](../README.md)
|
|
2
2
|
|
|
3
3
|
***
|
|
4
4
|
|
|
@@ -48,7 +48,7 @@ Defined in: DBHandler.ts:180
|
|
|
48
48
|
### getDriverType()
|
|
49
49
|
|
|
50
50
|
```ts
|
|
51
|
-
getDriverType(): "postgres" | "
|
|
51
|
+
getDriverType(): "postgres" | "mysql" | "sqlite";
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
Defined in: DBHandler.ts:198
|
|
@@ -57,7 +57,7 @@ Get the driver type
|
|
|
57
57
|
|
|
58
58
|
#### Returns
|
|
59
59
|
|
|
60
|
-
`"postgres"` \| `"
|
|
60
|
+
`"postgres"` \| `"mysql"` \| `"sqlite"`
|
|
61
61
|
|
|
62
62
|
***
|
|
63
63
|
|