@voyantjs/db 0.6.2 → 0.6.5
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/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +1 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/locks.d.ts +5 -0
- package/dist/runtime/locks.d.ts.map +1 -0
- package/dist/runtime/locks.js +36 -0
- package/dist/runtime/locks.js.map +1 -0
- package/package.json +2 -2
package/dist/runtime/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACpE,OAAO,EAAE,iCAAiC,EAAE,MAAM,SAAS,CAAA"}
|
package/dist/runtime/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,cAAc,EAAkB,EAAE,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,cAAc,EAAkB,EAAE,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACpE,OAAO,EAAE,iCAAiC,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../../src/runtime/locks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAK1D,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAA;CACd,GACL,oBAAoB,CAoCtB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import postgres from "postgres";
|
|
2
|
+
export function createPostgresAdvisoryLockManager(connectionString, options = {}) {
|
|
3
|
+
const sql = postgres(connectionString, {
|
|
4
|
+
max: 1,
|
|
5
|
+
});
|
|
6
|
+
const resolveKey = (key) => {
|
|
7
|
+
const namespace = options.namespace?.trim();
|
|
8
|
+
return namespace ? `${namespace}:${key}` : key;
|
|
9
|
+
};
|
|
10
|
+
return {
|
|
11
|
+
async runExclusive(key, task) {
|
|
12
|
+
const lockKey = resolveKey(key);
|
|
13
|
+
const acquireResult = await sql `
|
|
14
|
+
SELECT pg_try_advisory_lock(hashtextextended(${lockKey}, 0)) AS locked
|
|
15
|
+
`;
|
|
16
|
+
if (!acquireResult[0]?.locked) {
|
|
17
|
+
return { executed: false };
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
return {
|
|
21
|
+
executed: true,
|
|
22
|
+
value: await task(),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
await sql `
|
|
27
|
+
SELECT pg_advisory_unlock(hashtextextended(${lockKey}, 0))
|
|
28
|
+
`;
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
async dispose() {
|
|
32
|
+
await sql.end({ timeout: 0 });
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=locks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locks.js","sourceRoot":"","sources":["../../src/runtime/locks.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAI/B,MAAM,UAAU,iCAAiC,CAC/C,gBAAwB,EACxB,UAEI,EAAE;IAEN,MAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,EAAE;QACrC,GAAG,EAAE,CAAC;KACP,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,CAAA;QAC3C,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;IAChD,CAAC,CAAA;IAED,OAAO;QACL,KAAK,CAAC,YAAY,CAAI,GAAW,EAAE,IAAsB;YACvD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;YAC/B,MAAM,aAAa,GAAG,MAAM,GAAG,CAAmB;uDACD,OAAO;OACvD,CAAA;YAED,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;gBAC9B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;YAC5B,CAAC;YAED,IAAI,CAAC;gBACH,OAAO;oBACL,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,MAAM,IAAI,EAAE;iBACpB,CAAA;YACH,CAAC;oBAAS,CAAC;gBACT,MAAM,GAAG,CAAA;uDACsC,OAAO;SACrD,CAAA;YACH,CAAC;QACH,CAAC;QACD,KAAK,CAAC,OAAO;YACX,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;QAC/B,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voyantjs/db",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.5",
|
|
4
4
|
"license": "FSL-1.1-Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
"postgres": "^3.4.8",
|
|
127
127
|
"typeid-js": "^1.2.0",
|
|
128
128
|
"zod": "^4.3.6",
|
|
129
|
-
"@voyantjs/core": "0.6.
|
|
129
|
+
"@voyantjs/core": "0.6.5"
|
|
130
130
|
},
|
|
131
131
|
"devDependencies": {
|
|
132
132
|
"typescript": "^6.0.2",
|