joist-driver-bun-pg 1.285.1 → 1.286.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/BunPgDriver.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { SQL, type TransactionSQL } from "bun";
|
|
2
|
-
import { Driver, EntityManager, ParsedFindQuery } from "joist-orm";
|
|
3
|
-
import { JoinRowTodo, Todo } from "joist-orm/build/Todo";
|
|
2
|
+
import { Driver, EntityManager, JoinRowTodo, ParsedFindQuery, Todo } from "joist-orm";
|
|
4
3
|
export declare class BunPgDriver implements Driver<TransactionSQL> {
|
|
5
4
|
#private;
|
|
6
5
|
constructor(_sql?: SQL);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BunPgDriver.d.ts","sourceRoot":"","sources":["../src/BunPgDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,GAAG,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACpD,OAAO,EACL,MAAM,
|
|
1
|
+
{"version":3,"file":"BunPgDriver.d.ts","sourceRoot":"","sources":["../src/BunPgDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,GAAG,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AACpD,OAAO,EACL,MAAM,EAMN,aAAa,EAGb,WAAW,EAGX,eAAe,EAEf,IAAI,EACL,MAAM,WAAW,CAAC;AAOnB,qBAAa,WAAY,YAAW,MAAM,CAAC,cAAc,CAAC;;gBAI5C,IAAI,GAAE,GAAS;IAK3B,WAAW,CACT,EAAE,EAAE,aAAa,EACjB,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC,GAAG,EAAE,CAAC;IAIjB,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAIvE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAqB5F,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,aAAa,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmClF,eAAe,CAAC,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxF,IAAI,cAAc,OAEjB;CACF"}
|
package/build/BunPgDriver.js
CHANGED
|
@@ -3,11 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BunPgDriver = void 0;
|
|
4
4
|
const bun_1 = require("bun");
|
|
5
5
|
const joist_orm_1 = require("joist-orm");
|
|
6
|
-
const
|
|
7
|
-
const EntityWriter_1 = require("joist-orm/build/drivers/EntityWriter");
|
|
8
|
-
const buildRawQuery_1 = require("joist-orm/build/drivers/buildRawQuery");
|
|
9
|
-
const runtimeConfig_1 = require("joist-orm/build/runtimeConfig");
|
|
10
|
-
const utils_1 = require("joist-orm/build/utils");
|
|
6
|
+
const { buildValuesCte, buildCteSql, getRuntimeConfig, batched, cleanSql, generateOps } = joist_orm_1.driverApi;
|
|
11
7
|
class BunPgDriver {
|
|
12
8
|
#idAssigner;
|
|
13
9
|
#sql;
|
|
@@ -49,7 +45,7 @@ class BunPgDriver {
|
|
|
49
45
|
async flushEntities(em, todos) {
|
|
50
46
|
const sql = (em.txn ?? (0, joist_orm_1.fail)("Expected EntityManager.txn to be set"));
|
|
51
47
|
await this.#idAssigner.assignNewIds(todos);
|
|
52
|
-
const ops =
|
|
48
|
+
const ops = generateOps(todos);
|
|
53
49
|
// Do INSERTs+UPDATEs first so that we avoid DELETE cascades invalidating oplocks
|
|
54
50
|
// See https://github.com/joist-orm/joist-orm/issues/591
|
|
55
51
|
// We want 10k params maximum per batch insert
|
|
@@ -58,7 +54,7 @@ class BunPgDriver {
|
|
|
58
54
|
const parameterTotal = insert.columns.length * insert.rows.length;
|
|
59
55
|
if (parameterTotal > parameterLimit) {
|
|
60
56
|
const batchSize = Math.floor(parameterLimit / insert.columns.length);
|
|
61
|
-
await Promise.all(
|
|
57
|
+
await Promise.all(batched(insert.rows, batchSize).map((batch) => batchInsert(sql, { ...insert, rows: batch })));
|
|
62
58
|
}
|
|
63
59
|
else {
|
|
64
60
|
await batchInsert(sql, insert);
|
|
@@ -68,7 +64,7 @@ class BunPgDriver {
|
|
|
68
64
|
const parameterTotal = update.columns.length * update.rows.length;
|
|
69
65
|
if (parameterTotal > parameterLimit) {
|
|
70
66
|
const batchSize = Math.floor(parameterLimit / update.columns.length);
|
|
71
|
-
await Promise.all(
|
|
67
|
+
await Promise.all(batched(update.rows, batchSize).map((batch) => batchUpdate(sql, { ...update, rows: batch })));
|
|
72
68
|
}
|
|
73
69
|
else {
|
|
74
70
|
await batchUpdate(sql, update);
|
|
@@ -89,7 +85,7 @@ exports.BunPgDriver = BunPgDriver;
|
|
|
89
85
|
// Issue 1 INSERT statement with N `VALUES (..., ...), (..., ...), ...`
|
|
90
86
|
function batchInsert(txn, op) {
|
|
91
87
|
const { tableName, columns, rows } = op;
|
|
92
|
-
const sql =
|
|
88
|
+
const sql = cleanSql(`
|
|
93
89
|
INSERT INTO ${(0, joist_orm_1.kq)(tableName)} (${columns.map((c) => (0, joist_orm_1.kq)(c.columnName)).join(", ")})
|
|
94
90
|
VALUES ${rows.map((_, i) => `(${columns.map((_, j) => `\$${i * columns.length + j + 1}`).join(", ")})`).join(",")}
|
|
95
91
|
`);
|
|
@@ -99,20 +95,20 @@ function batchInsert(txn, op) {
|
|
|
99
95
|
// Issue 1 UPDATE statement with N `VALUES (..., ...), (..., ...), ...`
|
|
100
96
|
async function batchUpdate(txn, op) {
|
|
101
97
|
const { tableName, columns, rows, updatedAt } = op;
|
|
102
|
-
const cte =
|
|
98
|
+
const cte = buildValuesCte("data", columns, rows, rows.flat());
|
|
103
99
|
// JS Dates only have millisecond-level precision, so we may have dropped/lost accuracy when
|
|
104
100
|
// reading Postgres's microsecond-level `timestamptz` values; using `date_trunc` "downgrades"
|
|
105
101
|
// the pg data to match what we have in the JS Date.
|
|
106
102
|
//
|
|
107
103
|
// ...but Temporal's types don't have this flaw.
|
|
108
|
-
const truncateToMills = !
|
|
104
|
+
const truncateToMills = !getRuntimeConfig().temporal;
|
|
109
105
|
const maybeUpdatedAt = updatedAt && truncateToMills
|
|
110
106
|
? ` AND date_trunc('milliseconds', ${(0, joist_orm_1.kqDot)(tableName, updatedAt)}) = data.__original_updated_at`
|
|
111
107
|
: updatedAt
|
|
112
108
|
? ` AND ${(0, joist_orm_1.kqDot)(tableName, updatedAt)} = data.__original_updated_at`
|
|
113
109
|
: "";
|
|
114
110
|
// Use the `buildCteSql` helper to format the `buildValuesCte`
|
|
115
|
-
const { sql: cteSql, bindings: cteBindings } =
|
|
111
|
+
const { sql: cteSql, bindings: cteBindings } = buildCteSql(cte);
|
|
116
112
|
const sql = `
|
|
117
113
|
${cteSql}
|
|
118
114
|
UPDATE ${(0, joist_orm_1.kq)(tableName)}
|
|
@@ -124,7 +120,7 @@ async function batchUpdate(txn, op) {
|
|
|
124
120
|
WHERE ${(0, joist_orm_1.kq)(tableName)}.id = data.id ${maybeUpdatedAt}
|
|
125
121
|
RETURNING ${(0, joist_orm_1.kq)(tableName)}.id
|
|
126
122
|
`;
|
|
127
|
-
const result = await txn(
|
|
123
|
+
const result = await txn(cleanSql(sql), cteBindings);
|
|
128
124
|
if (result.rows.length !== rows.length) {
|
|
129
125
|
const updated = new Set(result.rows.map((r) => r.id));
|
|
130
126
|
const missing = rows.map((r) => r[0]).filter((id) => !updated.has(id));
|
package/build/BunPgDriver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BunPgDriver.js","sourceRoot":"","sources":["../src/BunPgDriver.ts"],"names":[],"mappings":";;;AAAA,6BAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"BunPgDriver.js","sourceRoot":"","sources":["../src/BunPgDriver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "joist-driver-bun-pg",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.286.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
],
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"bun-types": "^1.2.23",
|
|
23
|
-
"joist-orm": "1.
|
|
23
|
+
"joist-orm": "1.286.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"prettier": "^3.6.2",
|