@squiz/db-lib 1.64.0 → 1.65.0

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@squiz/db-lib",
3
- "version": "1.64.0",
3
+ "version": "1.65.0",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "private": false,
@@ -18,15 +18,15 @@
18
18
  "license": "ISC",
19
19
  "devDependencies": {
20
20
  "@types/jest": "28.1.8",
21
- "@types/node": "18.15.2",
21
+ "@types/node": "20.12.4",
22
22
  "@types/pg": "8.6.6",
23
23
  "eslint": "8.33.0",
24
24
  "fs-extra": "11.1.0",
25
25
  "jest": "29.4.1",
26
- "rimraf": "4.1.2",
26
+ "rimraf": "5.0.7",
27
27
  "ts-jest": "29.0.5",
28
28
  "ts-loader": "9.3.1",
29
- "ts-node": "10.9.1",
29
+ "ts-node": "10.9.2",
30
30
  "typescript": "4.9.4"
31
31
  },
32
32
  "dependencies": {
@@ -56,18 +56,19 @@ export abstract class AbstractRepository<SHAPE extends object, DATA_CLASS extend
56
56
  return await this.pool.connect();
57
57
  }
58
58
 
59
- async create(value: DATA_CLASS, transactionClient: PoolClient | null = null): Promise<SHAPE> {
60
- const columns = Object.keys(value)
59
+ async create(value: SHAPE, transactionClient: PoolClient | null = null): Promise<SHAPE> {
60
+ const valueAsClass = new this.classRef(value as Record<string, unknown>);
61
+ const columns = Object.keys(valueAsClass)
61
62
  .map((a) => `"${this.modelPropertyToSqlColumn[a as keyof SHAPE]}"`)
62
63
  .join(', ');
63
64
 
64
- const values = Object.values(value)
65
+ const values = Object.values(valueAsClass)
65
66
  .map((a, index) => `$${index + 1}`)
66
67
  .join(', ');
67
68
 
68
69
  const result = await this.executeQuery(
69
70
  `INSERT INTO ${this.tableName} (${columns}) VALUES (${values}) RETURNING *`,
70
- Object.values(value),
71
+ Object.values(valueAsClass),
71
72
  transactionClient,
72
73
  );
73
74