@cascaide-ts/postgres-js 0.1.0 → 0.5.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/LICENSE +1 -1
- package/README.md +29 -0
- package/dist/index.cjs +52 -62
- package/dist/index.d.cts +6 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.js +57 -67
- package/package.json +3 -3
package/LICENSE
CHANGED
package/README.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# @cascaide-ts/postgres-js
|
|
2
|
+
|
|
3
|
+
Cascaide is a fullstack agent runtime and AI orchestration framework in typescript.
|
|
4
|
+
|
|
5
|
+
`cascaide-ts/postgres-js` provides the postgres backed durability layer for cascade executions. Used to create the persistence api route.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm i @cascaide-ts/postgres-js
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Example Use
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import { createPersistenceHandler } from '@cascaide-ts/server-next';
|
|
18
|
+
import { PostgresPersistor } from '@cascaide-ts/postgres-js';
|
|
19
|
+
import { sql } from '@/lib/pglite';
|
|
20
|
+
|
|
21
|
+
const persistor = new PostgresPersistor(sql);
|
|
22
|
+
export const POST =createPersistenceHandler(persistor);
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Additional Resources
|
|
27
|
+
|
|
28
|
+
[Pesistence Concepts](https://www.cascaide-ts.com/docs/capabilities/persistence)
|
|
29
|
+
[Persistence Setup](https://www.cascaide-ts.com/docs/QuickStart/db)
|
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
1
|
+
var E=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var C=(u,e)=>{for(var r in e)E(u,r,{get:e[r],enumerable:!0})},R=(u,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of I(e))!T.call(u,t)&&t!==r&&E(u,t,{get:()=>e[t],enumerable:!(n=m(e,t))||n.enumerable});return u};var S=u=>R(E({},"__esModule",{value:!0}),u);var y={};C(y,{PostgresPersistor:()=>_});module.exports=S(y);var f=require("crypto"),x=process.env.NODE_ENV==="development",O=(...u)=>{x&&console.log(...u)};var _=class{constructor(e){this.sql=e}sql;async claimNodeExecution(e){let r=performance.now(),{nodeInstanceId:n,cascadeId:t,userId:c,nodeName:i,functionId:o,inputContext:a,location:s}=e;O("Claiming node execution:",{cascadeId:t,nodeName:i,requestedId:o});let d=(0,f.randomUUID)(),N=await this.sql.begin(async p=>{let l=await p`
|
|
2
2
|
WITH conflict_check AS (
|
|
3
3
|
-- Single aggregation combining conflict detection and MAX calculation
|
|
4
4
|
-- More efficient than separate EXISTS and MAX queries
|
|
@@ -9,11 +9,11 @@ var l=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var T=Object.g
|
|
|
9
9
|
ELSE ${o}
|
|
10
10
|
END as next_fn_id
|
|
11
11
|
FROM node_executions
|
|
12
|
-
WHERE cascade_id = ${
|
|
12
|
+
WHERE cascade_id = ${t}
|
|
13
13
|
),
|
|
14
14
|
cascade_upsert AS (
|
|
15
15
|
INSERT INTO cascades (id, user_id, status, fn_id, created_at, updated_at)
|
|
16
|
-
SELECT ${
|
|
16
|
+
SELECT ${t}, ${c}, 'RUNNING', next_fn_id, NOW(), NOW()
|
|
17
17
|
FROM conflict_check
|
|
18
18
|
ON CONFLICT (id) DO UPDATE
|
|
19
19
|
SET fn_id = EXCLUDED.fn_id, updated_at = NOW()
|
|
@@ -31,23 +31,23 @@ var l=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var T=Object.g
|
|
|
31
31
|
started_at
|
|
32
32
|
)
|
|
33
33
|
SELECT
|
|
34
|
-
${
|
|
34
|
+
${d},
|
|
35
35
|
${n},
|
|
36
|
-
${
|
|
37
|
-
${c},
|
|
38
|
-
fn_id,
|
|
39
|
-
${this.sql.json(d)},
|
|
36
|
+
${t},
|
|
40
37
|
${i},
|
|
38
|
+
fn_id,
|
|
39
|
+
${this.sql.json(a)},
|
|
40
|
+
${s},
|
|
41
41
|
'RUNNING',
|
|
42
42
|
NOW()
|
|
43
43
|
FROM cascade_upsert
|
|
44
44
|
RETURNING status, function_id as "functionId"
|
|
45
|
-
`;return{status:
|
|
45
|
+
`;return{status:l[0].status,functionId:Number(l[0].functionId)}}),g=performance.now()-r;return N}async finalizeNodeExecution(e){let r=performance.now(),{nodeInstanceId:n,cascadeId:t,fullOutput:c,hasSpawns:i}=e;return await this.sql.begin(async a=>(await a`
|
|
46
46
|
WITH updated_node AS (
|
|
47
47
|
UPDATE node_executions
|
|
48
48
|
SET
|
|
49
49
|
status = 'COMPLETED',
|
|
50
|
-
full_output = ${this.sql.json(
|
|
50
|
+
full_output = ${this.sql.json(c)},
|
|
51
51
|
completed_at = NOW()
|
|
52
52
|
WHERE node_instance_id = ${n}
|
|
53
53
|
RETURNING cascade_id
|
|
@@ -55,82 +55,72 @@ var l=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var T=Object.g
|
|
|
55
55
|
UPDATE cascades
|
|
56
56
|
SET status = 'COMPLETED', updated_at = NOW()
|
|
57
57
|
WHERE id IN (SELECT cascade_id FROM updated_node)
|
|
58
|
-
AND ${!
|
|
59
|
-
`,{status:"COMPLETED"}))
|
|
58
|
+
AND ${!i}
|
|
59
|
+
`,{status:"COMPLETED"}))}async markExecutionFailed(e,r,n){let t=performance.now();return await this.sql.begin(async i=>(await i`
|
|
60
60
|
WITH updated_node AS (
|
|
61
61
|
UPDATE node_executions
|
|
62
62
|
SET status = 'FAILED', error = ${n}, completed_at = NOW()
|
|
63
|
-
WHERE node_instance_id = ${
|
|
63
|
+
WHERE node_instance_id = ${e}
|
|
64
64
|
RETURNING cascade_id
|
|
65
65
|
)
|
|
66
66
|
UPDATE cascades
|
|
67
67
|
SET status = 'ERROR', updated_at = NOW()
|
|
68
68
|
WHERE id IN (SELECT cascade_id FROM updated_node)
|
|
69
|
-
`,{status:"FAILED"}))
|
|
70
|
-
INSERT INTO context_events ${this.sql(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
69
|
+
`,{status:"FAILED"}))}async recordContextEvents(e){let r=performance.now(),{cascadeId:n,functionId:t,updates:c,uiUpdates:i}=e,o=Object.entries(c).map(([a,s])=>{let d=i?.[a];return{key:a,value:this.sql.json(s),ui_value:d!==void 0?this.sql.json(d):null,function_id:t,cascade_id:n,created_at:new Date}});return o.length===0?{status:"SUCCESS"}:(await this.sql`
|
|
70
|
+
INSERT INTO context_events ${this.sql(o,"key","value","ui_value","function_id","cascade_id","created_at")}
|
|
71
|
+
`,{status:"SUCCESS"})}async hydrateCascadeContext(e,r,n){let t=performance.now(),c;n?c=await this.sql`
|
|
72
|
+
SELECT
|
|
73
|
+
key,
|
|
74
|
+
COALESCE(ui_value, value) AS value,
|
|
75
|
+
function_id,
|
|
76
|
+
created_at
|
|
77
|
+
FROM context_events
|
|
78
|
+
WHERE cascade_id = ${e}
|
|
79
|
+
AND function_id < ${r}
|
|
80
|
+
ORDER BY function_id ASC, created_at ASC
|
|
81
|
+
`:c=await this.sql`
|
|
82
|
+
SELECT
|
|
83
|
+
key,
|
|
84
|
+
value,
|
|
85
|
+
function_id,
|
|
86
|
+
created_at
|
|
87
|
+
FROM context_events
|
|
88
|
+
WHERE cascade_id = ${e}
|
|
89
|
+
AND function_id < ${r}
|
|
90
|
+
ORDER BY function_id ASC, created_at ASC
|
|
91
|
+
`;let i={};for(let o of c){let a=o.key,s=o.value;if(i[a]||(i[a]=[]),typeof s=="object"&&s!==null&&!Array.isArray(s)&&"index"in s){let d=s.index;i[a][d]=s}else i[a].push(s)}return i}async forkCascadeWithContext(e){let r=performance.now(),{sourceCascadeId:n,newCascadeId:t,upToFunctionId:c}=e,i=await this.sql.begin(async a=>(await a`
|
|
78
92
|
INSERT INTO cascades (id, user_id, status, fn_id, created_at, updated_at)
|
|
79
93
|
SELECT
|
|
80
|
-
${
|
|
94
|
+
${t},
|
|
81
95
|
user_id,
|
|
82
96
|
'RUNNING',
|
|
83
|
-
${
|
|
97
|
+
${c-1},
|
|
84
98
|
NOW(),
|
|
85
99
|
NOW()
|
|
86
100
|
FROM cascades
|
|
87
101
|
WHERE id = ${n}
|
|
88
|
-
`,await
|
|
102
|
+
`,await a`
|
|
89
103
|
INSERT INTO node_executions (
|
|
90
|
-
id,
|
|
91
|
-
|
|
92
|
-
cascade_id,
|
|
93
|
-
node_name,
|
|
94
|
-
function_id,
|
|
95
|
-
input_context,
|
|
96
|
-
location,
|
|
97
|
-
status,
|
|
98
|
-
started_at,
|
|
99
|
-
completed_at,
|
|
100
|
-
full_output,
|
|
101
|
-
error
|
|
104
|
+
id, node_instance_id, cascade_id, node_name, function_id,
|
|
105
|
+
input_context, location, status, started_at, completed_at, full_output, error
|
|
102
106
|
)
|
|
103
107
|
SELECT
|
|
104
|
-
gen_random_uuid(),
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
node_name,
|
|
108
|
-
function_id,
|
|
109
|
-
input_context,
|
|
110
|
-
location,
|
|
111
|
-
status,
|
|
112
|
-
started_at,
|
|
113
|
-
completed_at,
|
|
114
|
-
full_output,
|
|
115
|
-
error
|
|
108
|
+
gen_random_uuid(), gen_random_uuid(), ${t},
|
|
109
|
+
node_name, function_id, input_context, location, status,
|
|
110
|
+
started_at, completed_at, full_output, error
|
|
116
111
|
FROM node_executions
|
|
117
112
|
WHERE cascade_id = ${n}
|
|
118
|
-
AND function_id < ${
|
|
119
|
-
`,await
|
|
120
|
-
INSERT INTO context_events (
|
|
121
|
-
key,
|
|
122
|
-
value,
|
|
123
|
-
function_id,
|
|
124
|
-
cascade_id,
|
|
125
|
-
created_at
|
|
126
|
-
)
|
|
113
|
+
AND function_id < ${c}
|
|
114
|
+
`,await a`
|
|
115
|
+
INSERT INTO context_events (key, value, function_id, cascade_id, created_at)
|
|
127
116
|
SELECT
|
|
128
|
-
key,
|
|
117
|
+
CASE WHEN key = ${n} THEN ${t} ELSE key END,
|
|
129
118
|
value,
|
|
130
119
|
function_id,
|
|
131
|
-
${
|
|
120
|
+
${t},
|
|
132
121
|
created_at
|
|
133
122
|
FROM context_events
|
|
134
123
|
WHERE cascade_id = ${n}
|
|
135
|
-
AND function_id < ${
|
|
136
|
-
|
|
124
|
+
AND function_id < ${c}
|
|
125
|
+
RETURNING key, value, function_id, created_at
|
|
126
|
+
`)),o={};for(let a of i){let{key:s,value:d}=a;o[s]||(o[s]=[]),typeof d=="object"&&d!==null&&!Array.isArray(d)&&"index"in d?o[s][d.index]=d:o[s].push(d)}return{newCascadeId:t,status:"SUCCESS",context:o}}};0&&(module.exports={PostgresPersistor});
|
package/dist/index.d.cts
CHANGED
|
@@ -23,17 +23,21 @@ declare class PostgresPersistor implements CascadePersistence {
|
|
|
23
23
|
updates: {
|
|
24
24
|
[key: string]: any;
|
|
25
25
|
};
|
|
26
|
+
uiUpdates?: {
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
};
|
|
26
29
|
}): Promise<{
|
|
27
30
|
status: string;
|
|
28
31
|
}>;
|
|
29
|
-
hydrateCascadeContext(cascadeId: string, upToFunctionId: number): Promise<WorkflowContext>;
|
|
30
|
-
|
|
32
|
+
hydrateCascadeContext(cascadeId: string, upToFunctionId: number, ui?: boolean): Promise<WorkflowContext>;
|
|
33
|
+
forkCascadeWithContext(params: {
|
|
31
34
|
sourceCascadeId: string;
|
|
32
35
|
newCascadeId: string;
|
|
33
36
|
upToFunctionId: number;
|
|
34
37
|
}): Promise<{
|
|
35
38
|
newCascadeId: string;
|
|
36
39
|
status: string;
|
|
40
|
+
context: WorkflowContext;
|
|
37
41
|
}>;
|
|
38
42
|
}
|
|
39
43
|
|
package/dist/index.d.ts
CHANGED
|
@@ -23,17 +23,21 @@ declare class PostgresPersistor implements CascadePersistence {
|
|
|
23
23
|
updates: {
|
|
24
24
|
[key: string]: any;
|
|
25
25
|
};
|
|
26
|
+
uiUpdates?: {
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
};
|
|
26
29
|
}): Promise<{
|
|
27
30
|
status: string;
|
|
28
31
|
}>;
|
|
29
|
-
hydrateCascadeContext(cascadeId: string, upToFunctionId: number): Promise<WorkflowContext>;
|
|
30
|
-
|
|
32
|
+
hydrateCascadeContext(cascadeId: string, upToFunctionId: number, ui?: boolean): Promise<WorkflowContext>;
|
|
33
|
+
forkCascadeWithContext(params: {
|
|
31
34
|
sourceCascadeId: string;
|
|
32
35
|
newCascadeId: string;
|
|
33
36
|
upToFunctionId: number;
|
|
34
37
|
}): Promise<{
|
|
35
38
|
newCascadeId: string;
|
|
36
39
|
status: string;
|
|
40
|
+
context: WorkflowContext;
|
|
37
41
|
}>;
|
|
38
42
|
}
|
|
39
43
|
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{randomUUID as
|
|
1
|
+
import{randomUUID as N}from"crypto";var p=process.env.NODE_ENV==="development",m=(..._)=>{p&&console.log(..._)};var u=class{constructor(d){this.sql=d}sql;async claimNodeExecution(d){let r=performance.now(),{nodeInstanceId:i,cascadeId:s,userId:o,nodeName:n,functionId:a,inputContext:e,location:t}=d;m("Claiming node execution:",{cascadeId:s,nodeName:n,requestedId:a});let c=N(),l=await this.sql.begin(async f=>{let E=await f`
|
|
2
2
|
WITH conflict_check AS (
|
|
3
3
|
-- Single aggregation combining conflict detection and MAX calculation
|
|
4
4
|
-- More efficient than separate EXISTS and MAX queries
|
|
@@ -9,11 +9,11 @@ import{randomUUID as m}from"crypto";var u=class{constructor(o){this.sql=o}async
|
|
|
9
9
|
ELSE ${a}
|
|
10
10
|
END as next_fn_id
|
|
11
11
|
FROM node_executions
|
|
12
|
-
WHERE cascade_id = ${
|
|
12
|
+
WHERE cascade_id = ${s}
|
|
13
13
|
),
|
|
14
14
|
cascade_upsert AS (
|
|
15
15
|
INSERT INTO cascades (id, user_id, status, fn_id, created_at, updated_at)
|
|
16
|
-
SELECT ${
|
|
16
|
+
SELECT ${s}, ${o}, 'RUNNING', next_fn_id, NOW(), NOW()
|
|
17
17
|
FROM conflict_check
|
|
18
18
|
ON CONFLICT (id) DO UPDATE
|
|
19
19
|
SET fn_id = EXCLUDED.fn_id, updated_at = NOW()
|
|
@@ -31,106 +31,96 @@ import{randomUUID as m}from"crypto";var u=class{constructor(o){this.sql=o}async
|
|
|
31
31
|
started_at
|
|
32
32
|
)
|
|
33
33
|
SELECT
|
|
34
|
-
${
|
|
35
|
-
${
|
|
36
|
-
${e},
|
|
34
|
+
${c},
|
|
35
|
+
${i},
|
|
37
36
|
${s},
|
|
37
|
+
${n},
|
|
38
38
|
fn_id,
|
|
39
|
-
${this.sql.json(
|
|
40
|
-
${
|
|
39
|
+
${this.sql.json(e)},
|
|
40
|
+
${t},
|
|
41
41
|
'RUNNING',
|
|
42
42
|
NOW()
|
|
43
43
|
FROM cascade_upsert
|
|
44
44
|
RETURNING status, function_id as "functionId"
|
|
45
|
-
`;return{status:
|
|
45
|
+
`;return{status:E[0].status,functionId:Number(E[0].functionId)}}),I=performance.now()-r;return l}async finalizeNodeExecution(d){let r=performance.now(),{nodeInstanceId:i,cascadeId:s,fullOutput:o,hasSpawns:n}=d;return await this.sql.begin(async e=>(await e`
|
|
46
46
|
WITH updated_node AS (
|
|
47
47
|
UPDATE node_executions
|
|
48
48
|
SET
|
|
49
49
|
status = 'COMPLETED',
|
|
50
|
-
full_output = ${this.sql.json(
|
|
50
|
+
full_output = ${this.sql.json(o)},
|
|
51
51
|
completed_at = NOW()
|
|
52
|
-
WHERE node_instance_id = ${
|
|
52
|
+
WHERE node_instance_id = ${i}
|
|
53
53
|
RETURNING cascade_id
|
|
54
54
|
)
|
|
55
55
|
UPDATE cascades
|
|
56
56
|
SET status = 'COMPLETED', updated_at = NOW()
|
|
57
57
|
WHERE id IN (SELECT cascade_id FROM updated_node)
|
|
58
|
-
AND ${!
|
|
59
|
-
`,{status:"COMPLETED"}))
|
|
58
|
+
AND ${!n}
|
|
59
|
+
`,{status:"COMPLETED"}))}async markExecutionFailed(d,r,i){let s=performance.now();return await this.sql.begin(async n=>(await n`
|
|
60
60
|
WITH updated_node AS (
|
|
61
61
|
UPDATE node_executions
|
|
62
|
-
SET status = 'FAILED', error = ${
|
|
63
|
-
WHERE node_instance_id = ${
|
|
62
|
+
SET status = 'FAILED', error = ${i}, completed_at = NOW()
|
|
63
|
+
WHERE node_instance_id = ${d}
|
|
64
64
|
RETURNING cascade_id
|
|
65
65
|
)
|
|
66
66
|
UPDATE cascades
|
|
67
67
|
SET status = 'ERROR', updated_at = NOW()
|
|
68
68
|
WHERE id IN (SELECT cascade_id FROM updated_node)
|
|
69
|
-
`,{status:"FAILED"}))
|
|
70
|
-
INSERT INTO context_events ${this.sql(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
69
|
+
`,{status:"FAILED"}))}async recordContextEvents(d){let r=performance.now(),{cascadeId:i,functionId:s,updates:o,uiUpdates:n}=d,a=Object.entries(o).map(([e,t])=>{let c=n?.[e];return{key:e,value:this.sql.json(t),ui_value:c!==void 0?this.sql.json(c):null,function_id:s,cascade_id:i,created_at:new Date}});return a.length===0?{status:"SUCCESS"}:(await this.sql`
|
|
70
|
+
INSERT INTO context_events ${this.sql(a,"key","value","ui_value","function_id","cascade_id","created_at")}
|
|
71
|
+
`,{status:"SUCCESS"})}async hydrateCascadeContext(d,r,i){let s=performance.now(),o;i?o=await this.sql`
|
|
72
|
+
SELECT
|
|
73
|
+
key,
|
|
74
|
+
COALESCE(ui_value, value) AS value,
|
|
75
|
+
function_id,
|
|
76
|
+
created_at
|
|
77
|
+
FROM context_events
|
|
78
|
+
WHERE cascade_id = ${d}
|
|
79
|
+
AND function_id < ${r}
|
|
80
|
+
ORDER BY function_id ASC, created_at ASC
|
|
81
|
+
`:o=await this.sql`
|
|
82
|
+
SELECT
|
|
83
|
+
key,
|
|
84
|
+
value,
|
|
85
|
+
function_id,
|
|
86
|
+
created_at
|
|
87
|
+
FROM context_events
|
|
88
|
+
WHERE cascade_id = ${d}
|
|
89
|
+
AND function_id < ${r}
|
|
90
|
+
ORDER BY function_id ASC, created_at ASC
|
|
91
|
+
`;let n={};for(let a of o){let e=a.key,t=a.value;if(n[e]||(n[e]=[]),typeof t=="object"&&t!==null&&!Array.isArray(t)&&"index"in t){let c=t.index;n[e][c]=t}else n[e].push(t)}return n}async forkCascadeWithContext(d){let r=performance.now(),{sourceCascadeId:i,newCascadeId:s,upToFunctionId:o}=d,n=await this.sql.begin(async e=>(await e`
|
|
78
92
|
INSERT INTO cascades (id, user_id, status, fn_id, created_at, updated_at)
|
|
79
93
|
SELECT
|
|
80
|
-
${
|
|
94
|
+
${s},
|
|
81
95
|
user_id,
|
|
82
96
|
'RUNNING',
|
|
83
|
-
${
|
|
97
|
+
${o-1},
|
|
84
98
|
NOW(),
|
|
85
99
|
NOW()
|
|
86
100
|
FROM cascades
|
|
87
|
-
WHERE id = ${
|
|
88
|
-
`,await
|
|
101
|
+
WHERE id = ${i}
|
|
102
|
+
`,await e`
|
|
89
103
|
INSERT INTO node_executions (
|
|
90
|
-
id,
|
|
91
|
-
|
|
92
|
-
cascade_id,
|
|
93
|
-
node_name,
|
|
94
|
-
function_id,
|
|
95
|
-
input_context,
|
|
96
|
-
location,
|
|
97
|
-
status,
|
|
98
|
-
started_at,
|
|
99
|
-
completed_at,
|
|
100
|
-
full_output,
|
|
101
|
-
error
|
|
104
|
+
id, node_instance_id, cascade_id, node_name, function_id,
|
|
105
|
+
input_context, location, status, started_at, completed_at, full_output, error
|
|
102
106
|
)
|
|
103
107
|
SELECT
|
|
104
|
-
gen_random_uuid(),
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
node_name,
|
|
108
|
-
function_id,
|
|
109
|
-
input_context,
|
|
110
|
-
location,
|
|
111
|
-
status,
|
|
112
|
-
started_at,
|
|
113
|
-
completed_at,
|
|
114
|
-
full_output,
|
|
115
|
-
error
|
|
108
|
+
gen_random_uuid(), gen_random_uuid(), ${s},
|
|
109
|
+
node_name, function_id, input_context, location, status,
|
|
110
|
+
started_at, completed_at, full_output, error
|
|
116
111
|
FROM node_executions
|
|
117
|
-
WHERE cascade_id = ${
|
|
118
|
-
AND function_id < ${
|
|
119
|
-
`,await
|
|
120
|
-
INSERT INTO context_events (
|
|
121
|
-
key,
|
|
122
|
-
value,
|
|
123
|
-
function_id,
|
|
124
|
-
cascade_id,
|
|
125
|
-
created_at
|
|
126
|
-
)
|
|
112
|
+
WHERE cascade_id = ${i}
|
|
113
|
+
AND function_id < ${o}
|
|
114
|
+
`,await e`
|
|
115
|
+
INSERT INTO context_events (key, value, function_id, cascade_id, created_at)
|
|
127
116
|
SELECT
|
|
128
|
-
key,
|
|
117
|
+
CASE WHEN key = ${i} THEN ${s} ELSE key END,
|
|
129
118
|
value,
|
|
130
119
|
function_id,
|
|
131
|
-
${
|
|
120
|
+
${s},
|
|
132
121
|
created_at
|
|
133
122
|
FROM context_events
|
|
134
|
-
WHERE cascade_id = ${
|
|
135
|
-
AND function_id < ${
|
|
136
|
-
|
|
123
|
+
WHERE cascade_id = ${i}
|
|
124
|
+
AND function_id < ${o}
|
|
125
|
+
RETURNING key, value, function_id, created_at
|
|
126
|
+
`)),a={};for(let e of n){let{key:t,value:c}=e;a[t]||(a[t]=[]),typeof c=="object"&&c!==null&&!Array.isArray(c)&&"index"in c?a[t][c.index]=c:a[t].push(c)}return{newCascadeId:s,status:"SUCCESS",context:a}}};export{u as PostgresPersistor};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cascaide-ts/postgres-js",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist"
|
|
6
6
|
],
|
|
@@ -20,12 +20,12 @@
|
|
|
20
20
|
},
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"postgres": "^3.4.0",
|
|
23
|
-
"@cascaide-ts/core": "0.
|
|
23
|
+
"@cascaide-ts/core": "0.5.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"postgres": "^3.4.0",
|
|
27
27
|
"tsup": "^8.0.0",
|
|
28
|
-
"@cascaide-ts/core": "0.
|
|
28
|
+
"@cascaide-ts/core": "0.5.0"
|
|
29
29
|
},
|
|
30
30
|
"scripts": {
|
|
31
31
|
"build": "tsup",
|