@pgflow/core 0.3.0 → 0.4.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/dist/CHANGELOG.md +84 -0
- package/dist/PgflowSqlClient.d.ts +1 -1
- package/dist/PgflowSqlClient.d.ts.map +1 -1
- package/dist/PgflowSqlClient.js +7 -3
- package/dist/database-types.d.ts +26 -0
- package/dist/database-types.d.ts.map +1 -1
- package/dist/package.json +1 -1
- package/dist/supabase/migrations/20250610180554_pgflow_add_set_vt_batch_and_use_it_in_start_tasks.sql +127 -0
- package/dist/supabase/migrations/20250614124241_pgflow_add_realtime.sql +501 -0
- package/dist/types.d.ts +7 -7
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,89 @@
|
|
|
1
1
|
# @pgflow/core
|
|
2
2
|
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 98556d3: Add TypeScript client library for pgflow workflow management
|
|
8
|
+
|
|
9
|
+
## @pgflow/client
|
|
10
|
+
|
|
11
|
+
Introduces a new TypeScript client library that provides both event-based and promise-based APIs for interacting with pgflow workflows:
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
- **Type-safe workflow management** with full TypeScript support and automatic type inference from flow definitions
|
|
16
|
+
- **Dual API approach**: Choose between event-based subscriptions or promise-based async/await patterns
|
|
17
|
+
- **Real-time monitoring** via Supabase broadcasts with granular event subscriptions
|
|
18
|
+
- **Resource management** with automatic cleanup and disposal
|
|
19
|
+
- **Comprehensive error handling** and recovery mechanisms
|
|
20
|
+
|
|
21
|
+
### Core Components
|
|
22
|
+
|
|
23
|
+
- `PgflowClient` - Main client for starting and managing workflow runs
|
|
24
|
+
- `FlowRun` - Monitor and interact with workflow executions
|
|
25
|
+
- `FlowStep` - Track individual step progress and outputs
|
|
26
|
+
|
|
27
|
+
### Example Usage
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// Start a workflow
|
|
31
|
+
const pgflow = new PgflowClient(supabase);
|
|
32
|
+
const run = await pgflow.startFlow('analyze_website', {
|
|
33
|
+
url: 'https://example.com',
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// Event-based monitoring
|
|
37
|
+
run.on('completed', (event) => {
|
|
38
|
+
console.log('Workflow completed:', event.output);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// Promise-based monitoring
|
|
42
|
+
const completed = await run.waitForStatus(FlowRunStatus.Completed, {
|
|
43
|
+
timeoutMs: 30000,
|
|
44
|
+
});
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## @pgflow/core
|
|
48
|
+
|
|
49
|
+
### Database Enhancements
|
|
50
|
+
|
|
51
|
+
- Add `start_flow_with_states()` function to start flows and return complete initial state
|
|
52
|
+
- Add `get_run_with_states()` function to retrieve runs with all step states efficiently
|
|
53
|
+
- Implement `SECURITY DEFINER` functions for secure API access
|
|
54
|
+
- Add real-time broadcast support for workflow state changes
|
|
55
|
+
|
|
56
|
+
## @pgflow/edge-worker
|
|
57
|
+
|
|
58
|
+
### Test Infrastructure Updates
|
|
59
|
+
|
|
60
|
+
- Update test database configuration to use standard PostgreSQL credentials
|
|
61
|
+
- Improve test helper functions for database transactions
|
|
62
|
+
- Update Docker Compose configuration for test environment
|
|
63
|
+
|
|
64
|
+
## @pgflow/dsl
|
|
65
|
+
|
|
66
|
+
### Build Configuration
|
|
67
|
+
|
|
68
|
+
- Add TypeScript references to tsconfig.spec.json for improved type checking in tests
|
|
69
|
+
|
|
70
|
+
### Patch Changes
|
|
71
|
+
|
|
72
|
+
- Updated dependencies [98556d3]
|
|
73
|
+
- @pgflow/dsl@0.4.0
|
|
74
|
+
|
|
75
|
+
## 0.3.1
|
|
76
|
+
|
|
77
|
+
### Patch Changes
|
|
78
|
+
|
|
79
|
+
- d08fd2d: Optimize message visibility timeout updates with batch operations
|
|
80
|
+
|
|
81
|
+
- Added `pgflow.set_vt_batch()` function to update multiple message visibility timeouts in a single database call
|
|
82
|
+
- Replaced individual `pgmq.set_vt()` calls in `start_tasks()` with efficient batch updates
|
|
83
|
+
- Reduces database round-trips from N calls to 1 call when starting N tasks
|
|
84
|
+
- Improves performance and reduces database load during high-throughput task processing
|
|
85
|
+
- @pgflow/dsl@0.3.1
|
|
86
|
+
|
|
3
87
|
## 0.3.0
|
|
4
88
|
|
|
5
89
|
### Minor Changes
|
|
@@ -12,6 +12,6 @@ export declare class PgflowSqlClient<TFlow extends AnyFlow> implements IPgflowCl
|
|
|
12
12
|
startTasks(flowSlug: string, msgIds: number[], workerId: string): Promise<StepTaskRecord<TFlow>[]>;
|
|
13
13
|
completeTask(stepTask: StepTaskKey, output?: Json): Promise<void>;
|
|
14
14
|
failTask(stepTask: StepTaskKey, error: unknown): Promise<void>;
|
|
15
|
-
startFlow<TFlow extends AnyFlow>(
|
|
15
|
+
startFlow<TFlow extends AnyFlow>(flow_slug: string, input: ExtractFlowInput<TFlow>, run_id?: string): Promise<RunRow>;
|
|
16
16
|
}
|
|
17
17
|
//# sourceMappingURL=PgflowSqlClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PgflowSqlClient.d.ts","sourceRoot":"","sources":["../src/PgflowSqlClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,MAAM,EACN,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7D;;GAEG;AACH,qBAAa,eAAe,CAAC,KAAK,SAAS,OAAO,CAChD,YAAW,aAAa,CAAC,KAAK,CAAC;IAEnB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,QAAQ,CAAC,GAAG;IAExC,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,MAAM,EACjB,cAAc,SAAI,EAClB,cAAc,SAAM,GACnB,OAAO,CAAC,aAAa,EAAE,CAAC;IAarB,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IAW7B,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjE,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9D,SAAS,CAAC,KAAK,SAAS,OAAO,EACnC,
|
|
1
|
+
{"version":3,"file":"PgflowSqlClient.d.ts","sourceRoot":"","sources":["../src/PgflowSqlClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,WAAW,EACX,MAAM,EACN,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7D;;GAEG;AACH,qBAAa,eAAe,CAAC,KAAK,SAAS,OAAO,CAChD,YAAW,aAAa,CAAC,KAAK,CAAC;IAEnB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,QAAQ,CAAC,GAAG;IAExC,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,MAAM,EACjB,cAAc,SAAI,EAClB,cAAc,SAAM,GACnB,OAAO,CAAC,aAAa,EAAE,CAAC;IAarB,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IAW7B,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjE,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9D,SAAS,CAAC,KAAK,SAAS,OAAO,EACnC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAC9B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;CAiBnB"}
|
package/dist/PgflowSqlClient.js
CHANGED
|
@@ -53,12 +53,16 @@ export class PgflowSqlClient {
|
|
|
53
53
|
);
|
|
54
54
|
`;
|
|
55
55
|
}
|
|
56
|
-
async startFlow(
|
|
56
|
+
async startFlow(flow_slug, input, run_id) {
|
|
57
57
|
const results = await this.sql `
|
|
58
|
-
SELECT * FROM pgflow.start_flow(
|
|
58
|
+
SELECT * FROM pgflow.start_flow(
|
|
59
|
+
flow_slug => ${flow_slug}::text,
|
|
60
|
+
input => ${this.sql.json(input)}::jsonb
|
|
61
|
+
${run_id ? this.sql `, run_id => ${run_id}::uuid` : this.sql ``}
|
|
62
|
+
);
|
|
59
63
|
`;
|
|
60
64
|
if (results.length === 0) {
|
|
61
|
-
throw new Error(`Failed to start flow ${
|
|
65
|
+
throw new Error(`Failed to start flow ${flow_slug}`);
|
|
62
66
|
}
|
|
63
67
|
const [flowRun] = results;
|
|
64
68
|
return flowRun;
|
package/dist/database-types.d.ts
CHANGED
|
@@ -119,6 +119,7 @@ export type Database = {
|
|
|
119
119
|
Row: {
|
|
120
120
|
completed_at: string | null;
|
|
121
121
|
created_at: string;
|
|
122
|
+
error_message: string | null;
|
|
122
123
|
failed_at: string | null;
|
|
123
124
|
flow_slug: string;
|
|
124
125
|
remaining_deps: number;
|
|
@@ -131,6 +132,7 @@ export type Database = {
|
|
|
131
132
|
Insert: {
|
|
132
133
|
completed_at?: string | null;
|
|
133
134
|
created_at?: string;
|
|
135
|
+
error_message?: string | null;
|
|
134
136
|
failed_at?: string | null;
|
|
135
137
|
flow_slug: string;
|
|
136
138
|
remaining_deps?: number;
|
|
@@ -143,6 +145,7 @@ export type Database = {
|
|
|
143
145
|
Update: {
|
|
144
146
|
completed_at?: string | null;
|
|
145
147
|
created_at?: string;
|
|
148
|
+
error_message?: string | null;
|
|
146
149
|
failed_at?: string | null;
|
|
147
150
|
flow_slug?: string;
|
|
148
151
|
remaining_deps?: number;
|
|
@@ -429,6 +432,12 @@ export type Database = {
|
|
|
429
432
|
task_index: number;
|
|
430
433
|
}[];
|
|
431
434
|
};
|
|
435
|
+
get_run_with_states: {
|
|
436
|
+
Args: {
|
|
437
|
+
run_id: string;
|
|
438
|
+
};
|
|
439
|
+
Returns: Json;
|
|
440
|
+
};
|
|
432
441
|
is_valid_slug: {
|
|
433
442
|
Args: {
|
|
434
443
|
slug: string;
|
|
@@ -462,10 +471,19 @@ export type Database = {
|
|
|
462
471
|
};
|
|
463
472
|
Returns: Database["pgmq"]["CompositeTypes"]["message_record"][];
|
|
464
473
|
};
|
|
474
|
+
set_vt_batch: {
|
|
475
|
+
Args: {
|
|
476
|
+
queue_name: string;
|
|
477
|
+
msg_ids: number[];
|
|
478
|
+
vt_offsets: number[];
|
|
479
|
+
};
|
|
480
|
+
Returns: Database["pgmq"]["CompositeTypes"]["message_record"][];
|
|
481
|
+
};
|
|
465
482
|
start_flow: {
|
|
466
483
|
Args: {
|
|
467
484
|
flow_slug: string;
|
|
468
485
|
input: Json;
|
|
486
|
+
run_id?: string;
|
|
469
487
|
};
|
|
470
488
|
Returns: {
|
|
471
489
|
completed_at: string | null;
|
|
@@ -479,6 +497,14 @@ export type Database = {
|
|
|
479
497
|
status: string;
|
|
480
498
|
}[];
|
|
481
499
|
};
|
|
500
|
+
start_flow_with_states: {
|
|
501
|
+
Args: {
|
|
502
|
+
flow_slug: string;
|
|
503
|
+
input: Json;
|
|
504
|
+
run_id?: string;
|
|
505
|
+
};
|
|
506
|
+
Returns: Json;
|
|
507
|
+
};
|
|
482
508
|
start_ready_steps: {
|
|
483
509
|
Args: {
|
|
484
510
|
run_id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-types.d.ts","sourceRoot":"","sources":["../src/database-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"database-types.d.ts","sourceRoot":"","sources":["../src/database-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GACZ,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GACnC,IAAI,EAAE,CAAA;AAEV,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE;QACN,MAAM,EAAE;YACN,IAAI,EAAE;gBACJ,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,CAAA;oBAClB,QAAQ,EAAE,MAAM,CAAA;oBAChB,SAAS,EAAE,MAAM,CAAA;oBACjB,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,QAAQ,EAAE,MAAM,CAAA;oBAChB,SAAS,EAAE,MAAM,CAAA;oBACjB,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;oBACjB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,SAAS,CAAC,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,8BAA8B,CAAA;wBAC9C,OAAO,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;wBAClC,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;qBAC9C;oBACD;wBACE,cAAc,EAAE,qBAAqB,CAAA;wBACrC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAA;wBACtB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAA;qBACjC;oBACD;wBACE,cAAc,EAAE,+BAA+B,CAAA;wBAC/C,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;wBACnC,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;qBAC9C;iBACF,CAAA;aACF,CAAA;YACD,KAAK,EAAE;gBACL,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,CAAA;oBAClB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,CAAA;oBACtB,gBAAgB,EAAE,MAAM,CAAA;oBACxB,WAAW,EAAE,MAAM,CAAA;iBACpB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,CAAC,EAAE,MAAM,CAAA;oBACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;oBACzB,WAAW,CAAC,EAAE,MAAM,CAAA;iBACrB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,cAAc,CAAC,EAAE,MAAM,CAAA;oBACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;oBACzB,WAAW,CAAC,EAAE,MAAM,CAAA;iBACrB,CAAA;gBACD,aAAa,EAAE,EAAE,CAAA;aAClB,CAAA;YACD,IAAI,EAAE;gBACJ,GAAG,EAAE;oBACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;oBACxB,SAAS,EAAE,MAAM,CAAA;oBACjB,KAAK,EAAE,IAAI,CAAA;oBACX,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;oBACnB,eAAe,EAAE,MAAM,CAAA;oBACvB,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,EAAE,MAAM,CAAA;oBAClB,MAAM,EAAE,MAAM,CAAA;iBACf,CAAA;gBACD,MAAM,EAAE;oBACN,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,SAAS,EAAE,MAAM,CAAA;oBACjB,KAAK,EAAE,IAAI,CAAA;oBACX,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;oBACpB,eAAe,CAAC,EAAE,MAAM,CAAA;oBACxB,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,MAAM,CAAC,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,MAAM,EAAE;oBACN,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,KAAK,CAAC,EAAE,IAAI,CAAA;oBACZ,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;oBACpB,eAAe,CAAC,EAAE,MAAM,CAAA;oBACxB,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,MAAM,CAAC,EAAE,MAAM,CAAA;iBAChB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,qBAAqB,CAAA;wBACrC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAA;wBACtB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAA;qBACjC;iBACF,CAAA;aACF,CAAA;YACD,WAAW,EAAE;gBACX,GAAG,EAAE;oBACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,UAAU,EAAE,MAAM,CAAA;oBAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;oBACxB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,CAAA;oBACtB,eAAe,EAAE,MAAM,CAAA;oBACvB,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,MAAM,EAAE,MAAM,CAAA;oBACd,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,MAAM,EAAE;oBACN,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,CAAC,EAAE,MAAM,CAAA;oBACvB,eAAe,CAAC,EAAE,MAAM,CAAA;oBACxB,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,MAAM,EAAE;oBACN,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,cAAc,CAAC,EAAE,MAAM,CAAA;oBACvB,eAAe,CAAC,EAAE,MAAM,CAAA;oBACxB,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,SAAS,CAAC,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,4BAA4B,CAAA;wBAC5C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAA;wBACtB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAA;qBACjC;oBACD;wBACE,cAAc,EAAE,sCAAsC,CAAA;wBACtD,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;wBACnC,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;qBAC9C;oBACD;wBACE,cAAc,EAAE,yBAAyB,CAAA;wBACzC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;wBACnB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,MAAM,CAAA;wBAC1B,iBAAiB,EAAE,CAAC,QAAQ,CAAC,CAAA;qBAC9B;iBACF,CAAA;aACF,CAAA;YACD,UAAU,EAAE;gBACV,GAAG,EAAE;oBACH,cAAc,EAAE,MAAM,CAAA;oBACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;oBACxB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;oBACnB,SAAS,EAAE,MAAM,CAAA;oBACjB,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,MAAM,EAAE,MAAM,CAAA;oBACd,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,MAAM,EAAE;oBACN,cAAc,CAAC,EAAE,MAAM,CAAA;oBACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;oBACpB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,CAAC,EAAE,MAAM,CAAA;iBACpB,CAAA;gBACD,MAAM,EAAE;oBACN,cAAc,CAAC,EAAE,MAAM,CAAA;oBACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;oBACpB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;oBACf,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,UAAU,CAAC,EAAE,MAAM,CAAA;iBACpB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,2BAA2B,CAAA;wBAC3C,OAAO,EAAE,CAAC,WAAW,CAAC,CAAA;wBACtB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAA;qBACjC;oBACD;wBACE,cAAc,EAAE,gCAAgC,CAAA;wBAChD,OAAO,EAAE,CAAC,gBAAgB,CAAC,CAAA;wBAC3B,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,SAAS,CAAA;wBAC7B,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAA;qBACjC;oBACD;wBACE,cAAc,EAAE,wBAAwB,CAAA;wBACxC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;wBACnB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,MAAM,CAAA;wBAC1B,iBAAiB,EAAE,CAAC,QAAQ,CAAC,CAAA;qBAC9B;oBACD;wBACE,cAAc,EAAE,kCAAkC,CAAA;wBAClD,OAAO,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;wBAChC,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,aAAa,CAAA;wBACjC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;qBAC3C;iBACF,CAAA;aACF,CAAA;YACD,KAAK,EAAE;gBACL,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,CAAA;oBAClB,UAAU,EAAE,MAAM,CAAA;oBAClB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,UAAU,EAAE,MAAM,CAAA;oBAClB,SAAS,EAAE,MAAM,CAAA;oBACjB,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAChC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,EAAE,MAAM,CAAA;oBACjB,SAAS,CAAC,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC9B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAChC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,SAAS,CAAC,EAAE,MAAM,CAAA;oBAClB,SAAS,CAAC,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,aAAa,EAAE;oBACb;wBACE,cAAc,EAAE,sBAAsB,CAAA;wBACtC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAA;wBACtB,UAAU,EAAE,KAAK,CAAA;wBACjB,kBAAkB,EAAE,OAAO,CAAA;wBAC3B,iBAAiB,EAAE,CAAC,WAAW,CAAC,CAAA;qBACjC;iBACF,CAAA;aACF,CAAA;YACD,OAAO,EAAE;gBACP,GAAG,EAAE;oBACH,aAAa,EAAE,MAAM,CAAA;oBACrB,iBAAiB,EAAE,MAAM,CAAA;oBACzB,UAAU,EAAE,MAAM,CAAA;oBAClB,UAAU,EAAE,MAAM,CAAA;oBAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,MAAM,EAAE;oBACN,aAAa,EAAE,MAAM,CAAA;oBACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;oBAC1B,UAAU,EAAE,MAAM,CAAA;oBAClB,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;gBACD,MAAM,EAAE;oBACN,aAAa,CAAC,EAAE,MAAM,CAAA;oBACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;oBAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,aAAa,EAAE,EAAE,CAAA;aAClB,CAAA;SACF,CAAA;QACD,KAAK,EAAE;aACJ,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;QACD,SAAS,EAAE;YACT,QAAQ,EAAE;gBACR,IAAI,EACA;oBACE,SAAS,EAAE,MAAM,CAAA;oBACjB,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,EAAE,MAAM,EAAE,CAAA;oBACpB,YAAY,CAAC,EAAE,MAAM,CAAA;oBACrB,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,OAAO,CAAC,EAAE,MAAM,CAAA;iBACjB,GACD;oBACE,SAAS,EAAE,MAAM,CAAA;oBACjB,SAAS,EAAE,MAAM,CAAA;oBACjB,YAAY,CAAC,EAAE,MAAM,CAAA;oBACrB,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,OAAO,CAAC,EAAE,MAAM,CAAA;iBACjB,CAAA;gBACL,OAAO,EAAE;oBACP,UAAU,EAAE,MAAM,CAAA;oBAClB,UAAU,EAAE,MAAM,CAAA;oBAClB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC1B,UAAU,EAAE,MAAM,CAAA;oBAClB,SAAS,EAAE,MAAM,CAAA;oBACjB,SAAS,EAAE,MAAM,CAAA;iBAClB,CAAA;aACF,CAAA;YACD,qBAAqB,EAAE;gBACrB,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAC;oBAAC,cAAc,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACpD,OAAO,EAAE,MAAM,CAAA;aAChB,CAAA;YACD,aAAa,EAAE;gBACb,IAAI,EAAE;oBACJ,MAAM,EAAE,MAAM,CAAA;oBACd,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,EAAE,MAAM,CAAA;oBAClB,MAAM,EAAE,IAAI,CAAA;iBACb,CAAA;gBACD,OAAO,EAAE;oBACP,cAAc,EAAE,MAAM,CAAA;oBACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;oBACxB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;oBACnB,SAAS,EAAE,MAAM,CAAA;oBACjB,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,MAAM,EAAE,MAAM,CAAA;oBACd,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,EAAE,MAAM,CAAA;iBACnB,EAAE,CAAA;aACJ,CAAA;YACD,WAAW,EAAE;gBACX,IAAI,EAAE;oBACJ,SAAS,EAAE,MAAM,CAAA;oBACjB,YAAY,CAAC,EAAE,MAAM,CAAA;oBACrB,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,OAAO,CAAC,EAAE,MAAM,CAAA;iBACjB,CAAA;gBACD,OAAO,EAAE;oBACP,UAAU,EAAE,MAAM,CAAA;oBAClB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,CAAA;oBACtB,gBAAgB,EAAE,MAAM,CAAA;oBACxB,WAAW,EAAE,MAAM,CAAA;iBACpB,CAAA;aACF,CAAA;YACD,SAAS,EAAE;gBACT,IAAI,EAAE;oBACJ,MAAM,EAAE,MAAM,CAAA;oBACd,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,EAAE,MAAM,CAAA;oBAClB,aAAa,EAAE,MAAM,CAAA;iBACtB,CAAA;gBACD,OAAO,EAAE;oBACP,cAAc,EAAE,MAAM,CAAA;oBACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;oBACxB,SAAS,EAAE,MAAM,CAAA;oBACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;oBACnB,SAAS,EAAE,MAAM,CAAA;oBACjB,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;oBACzB,MAAM,EAAE,MAAM,CAAA;oBACd,SAAS,EAAE,MAAM,CAAA;oBACjB,UAAU,EAAE,MAAM,CAAA;iBACnB,EAAE,CAAA;aACJ,CAAA;YACD,mBAAmB,EAAE;gBACnB,IAAI,EAAE;oBAAE,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACxB,OAAO,EAAE,IAAI,CAAA;aACd,CAAA;YACD,aAAa,EAAE;gBACb,IAAI,EAAE;oBAAE,IAAI,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACtB,OAAO,EAAE,OAAO,CAAA;aACjB,CAAA;YACD,kBAAkB,EAAE;gBAClB,IAAI,EAAE;oBAAE,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACxB,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;YACD,cAAc,EAAE;gBACd,IAAI,EAAE;oBACJ,UAAU,EAAE,MAAM,CAAA;oBAClB,EAAE,EAAE,MAAM,CAAA;oBACV,GAAG,EAAE,MAAM,CAAA;oBACX,gBAAgB,CAAC,EAAE,MAAM,CAAA;oBACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;iBAC1B,CAAA;gBACD,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAA;aACpE,CAAA;YACD,cAAc,EAAE;gBACd,IAAI,EAAE;oBACJ,UAAU,EAAE,MAAM,CAAA;oBAClB,EAAE,EAAE,MAAM,CAAA;oBACV,GAAG,EAAE,MAAM,CAAA;oBACX,gBAAgB,CAAC,EAAE,MAAM,CAAA;oBACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;oBACzB,WAAW,CAAC,EAAE,IAAI,CAAA;iBACnB,CAAA;gBACD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAA;aAChE,CAAA;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAC;oBAAC,OAAO,EAAE,MAAM,EAAE,CAAC;oBAAC,UAAU,EAAE,MAAM,EAAE,CAAA;iBAAE,CAAA;gBACrE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAA;aAChE,CAAA;YACD,UAAU,EAAE;gBACV,IAAI,EAAE;oBAAE,SAAS,EAAE,MAAM,CAAC;oBAAC,KAAK,EAAE,IAAI,CAAC;oBAAC,MAAM,CAAC,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACzD,OAAO,EAAE;oBACP,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;oBAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;oBACxB,SAAS,EAAE,MAAM,CAAA;oBACjB,KAAK,EAAE,IAAI,CAAA;oBACX,MAAM,EAAE,IAAI,GAAG,IAAI,CAAA;oBACnB,eAAe,EAAE,MAAM,CAAA;oBACvB,MAAM,EAAE,MAAM,CAAA;oBACd,UAAU,EAAE,MAAM,CAAA;oBAClB,MAAM,EAAE,MAAM,CAAA;iBACf,EAAE,CAAA;aACJ,CAAA;YACD,sBAAsB,EAAE;gBACtB,IAAI,EAAE;oBAAE,SAAS,EAAE,MAAM,CAAC;oBAAC,KAAK,EAAE,IAAI,CAAC;oBAAC,MAAM,CAAC,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACzD,OAAO,EAAE,IAAI,CAAA;aACd,CAAA;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE;oBAAE,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACxB,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;YACD,WAAW,EAAE;gBACX,IAAI,EAAE;oBAAE,SAAS,EAAE,MAAM,CAAC;oBAAC,OAAO,EAAE,MAAM,EAAE,CAAC;oBAAC,SAAS,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACjE,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAA;aACpE,CAAA;SACF,CAAA;QACD,KAAK,EAAE;aACJ,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;QACD,cAAc,EAAE;YACd,gBAAgB,EAAE;gBAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;gBACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;gBACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;gBACxB,KAAK,EAAE,IAAI,GAAG,IAAI,CAAA;gBAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;aACtB,CAAA;SACF,CAAA;KACF,CAAA;IACD,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,IAAI,EAAE;gBACJ,GAAG,EAAE;oBACH,UAAU,EAAE,MAAM,CAAA;oBAClB,cAAc,EAAE,OAAO,CAAA;oBACvB,WAAW,EAAE,OAAO,CAAA;oBACpB,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,cAAc,EAAE,OAAO,CAAA;oBACvB,WAAW,EAAE,OAAO,CAAA;oBACpB,UAAU,EAAE,MAAM,CAAA;iBACnB,CAAA;gBACD,MAAM,EAAE;oBACN,UAAU,CAAC,EAAE,MAAM,CAAA;oBACnB,cAAc,CAAC,EAAE,OAAO,CAAA;oBACxB,WAAW,CAAC,EAAE,OAAO,CAAA;oBACrB,UAAU,CAAC,EAAE,MAAM,CAAA;iBACpB,CAAA;gBACD,aAAa,EAAE,EAAE,CAAA;aAClB,CAAA;SACF,CAAA;QACD,KAAK,EAAE;aACJ,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;QACD,SAAS,EAAE;YACT,gBAAgB,EAAE;gBAChB,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5B,OAAO,EAAE,OAAO,CAAA;aACjB,CAAA;YACD,4BAA4B,EAAE;gBAC5B,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;gBAChC,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;YACD,kBAAkB,EAAE;gBAClB,IAAI,EAAE;oBAAE,kBAAkB,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACpC,OAAO,EAAE,MAAM,CAAA;aAChB,CAAA;YACD,6BAA6B,EAAE;gBAC7B,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;gBAChC,OAAO,EAAE,MAAM,CAAA;aAChB,CAAA;YACD,sBAAsB,EAAE;gBACtB,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;gBAChC,OAAO,EAAE,MAAM,CAAA;aAChB,CAAA;YACD,OAAO,EAAE;gBACP,IAAI,EACA;oBAAE,UAAU,EAAE,MAAM,CAAC;oBAAC,MAAM,EAAE,MAAM,CAAA;iBAAE,GACtC;oBAAE,UAAU,EAAE,MAAM,CAAC;oBAAC,OAAO,EAAE,MAAM,EAAE,CAAA;iBAAE,CAAA;gBAC7C,OAAO,EAAE,OAAO,CAAA;aACjB,CAAA;YACD,2BAA2B,EAAE;gBAC3B,IAAI,EAAE;oBACJ,UAAU,EAAE,MAAM,CAAA;oBAClB,kBAAkB,CAAC,EAAE,MAAM,CAAA;oBAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAA;oBAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAA;iBAC3B,CAAA;gBACD,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;YACD,MAAM,EAAE;gBACN,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5B,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;YACD,sBAAsB,EAAE;gBACtB,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5B,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;YACD,kBAAkB,EAAE;gBAClB,IAAI,EAAE;oBACJ,UAAU,EAAE,MAAM,CAAA;oBAClB,kBAAkB,CAAC,EAAE,MAAM,CAAA;oBAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAA;iBAC5B,CAAA;gBACD,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;YACD,eAAe,EAAE;gBACf,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5B,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;YACD,MAAM,EAAE;gBACN,IAAI,EACA;oBAAE,UAAU,EAAE,MAAM,CAAC;oBAAC,MAAM,EAAE,MAAM,CAAA;iBAAE,GACtC;oBAAE,UAAU,EAAE,MAAM,CAAC;oBAAC,OAAO,EAAE,MAAM,EAAE,CAAA;iBAAE,CAAA;gBAC7C,OAAO,EAAE,OAAO,CAAA;aACjB,CAAA;YACD,cAAc,EAAE;gBACd,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5B,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;YACD,UAAU,EAAE;gBACV,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5B,OAAO,EAAE,OAAO,CAAA;aACjB,CAAA;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAC;oBAAC,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5C,OAAO,EAAE,MAAM,CAAA;aAChB,CAAA;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;gBAChC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,cAAc,CAAC,EAAE,CAAA;aAC9D,CAAA;YACD,OAAO,EAAE;gBACP,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,CAAA;aAC9D,CAAA;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;gBAChC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAA;aAChE,CAAA;YACD,GAAG,EAAE;gBACH,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAA;aAChE,CAAA;YACD,WAAW,EAAE;gBACX,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5B,OAAO,EAAE,MAAM,CAAA;aAChB,CAAA;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAC;oBAAC,EAAE,EAAE,MAAM,CAAC;oBAAC,GAAG,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACrD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAA;aAChE,CAAA;YACD,cAAc,EAAE;gBACd,IAAI,EAAE;oBACJ,UAAU,EAAE,MAAM,CAAA;oBAClB,EAAE,EAAE,MAAM,CAAA;oBACV,GAAG,EAAE,MAAM,CAAA;oBACX,gBAAgB,CAAC,EAAE,MAAM,CAAA;oBACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;iBAC1B,CAAA;gBACD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAA;aAChE,CAAA;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAC;oBAAC,GAAG,EAAE,IAAI,CAAC;oBAAC,KAAK,CAAC,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACvD,OAAO,EAAE,MAAM,EAAE,CAAA;aAClB,CAAA;YACD,UAAU,EAAE;gBACV,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAC;oBAAC,IAAI,EAAE,IAAI,EAAE,CAAC;oBAAC,KAAK,CAAC,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC1D,OAAO,EAAE,MAAM,EAAE,CAAA;aAClB,CAAA;YACD,MAAM,EAAE;gBACN,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAC;oBAAC,MAAM,EAAE,MAAM,CAAC;oBAAC,EAAE,EAAE,MAAM,CAAA;iBAAE,CAAA;gBACxD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAA;aAChE,CAAA;YACD,mBAAmB,EAAE;gBACnB,IAAI,EAAE;oBAAE,UAAU,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5B,OAAO,EAAE,SAAS,CAAA;aACnB,CAAA;SACF,CAAA;QACD,KAAK,EAAE;aACJ,CAAC,IAAI,KAAK,GAAG,KAAK;SACpB,CAAA;QACD,cAAc,EAAE;YACd,cAAc,EAAE;gBACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;gBACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;gBACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;gBAC1B,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;gBACjB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAA;aACrB,CAAA;YACD,cAAc,EAAE;gBACd,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;gBACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;gBAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;gBACjC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;gBACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;gBAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;aAC3B,CAAA;YACD,YAAY,EAAE;gBACZ,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;gBACzB,cAAc,EAAE,OAAO,GAAG,IAAI,CAAA;gBAC9B,WAAW,EAAE,OAAO,GAAG,IAAI,CAAA;gBAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;aAC1B,CAAA;SACF,CAAA;KACF,CAAA;CACF,CAAA;AAED,KAAK,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AAEhE,MAAM,MAAM,MAAM,CAChB,+BAA+B,SAC3B,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,GACxD;IAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;CAAE,EAC9B,SAAS,SAAS,+BAA+B,SAAS;IACxD,MAAM,EAAE,MAAM,QAAQ,CAAA;CACvB,GACG,MAAM,CAAC,QAAQ,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAClE,QAAQ,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAC/D,KAAK,GAAG,KAAK,IACf,+BAA+B,SAAS;IAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;CAAE,GAClE,CAAC,QAAQ,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAC5D,QAAQ,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS;IACjF,GAAG,EAAE,MAAM,CAAC,CAAA;CACb,GACC,CAAC,GACD,KAAK,GACP,+BAA+B,SAAS,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,GAClE,aAAa,CAAC,OAAO,CAAC,CAAC,GACzB,CAAC,aAAa,CAAC,QAAQ,CAAC,GACtB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAC,SAAS;IACjE,GAAG,EAAE,MAAM,CAAC,CAAA;CACb,GACC,CAAC,GACD,KAAK,GACP,KAAK,CAAA;AAEX,MAAM,MAAM,YAAY,CACtB,+BAA+B,SAC3B,MAAM,aAAa,CAAC,QAAQ,CAAC,GAC7B;IAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;CAAE,EAC9B,SAAS,SAAS,+BAA+B,SAAS;IACxD,MAAM,EAAE,MAAM,QAAQ,CAAA;CACvB,GACG,MAAM,QAAQ,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GACnE,KAAK,GAAG,KAAK,IACf,+BAA+B,SAAS;IAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;CAAE,GAClE,QAAQ,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS;IAC/E,MAAM,EAAE,MAAM,CAAC,CAAA;CAChB,GACC,CAAC,GACD,KAAK,GACP,+BAA+B,SAAS,MAAM,aAAa,CAAC,QAAQ,CAAC,GACnE,aAAa,CAAC,QAAQ,CAAC,CAAC,+BAA+B,CAAC,SAAS;IAC/D,MAAM,EAAE,MAAM,CAAC,CAAA;CAChB,GACC,CAAC,GACD,KAAK,GACP,KAAK,CAAA;AAEX,MAAM,MAAM,YAAY,CACtB,+BAA+B,SAC3B,MAAM,aAAa,CAAC,QAAQ,CAAC,GAC7B;IAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;CAAE,EAC9B,SAAS,SAAS,+BAA+B,SAAS;IACxD,MAAM,EAAE,MAAM,QAAQ,CAAA;CACvB,GACG,MAAM,QAAQ,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GACnE,KAAK,GAAG,KAAK,IACf,+BAA+B,SAAS;IAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;CAAE,GAClE,QAAQ,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS;IAC/E,MAAM,EAAE,MAAM,CAAC,CAAA;CAChB,GACC,CAAC,GACD,KAAK,GACP,+BAA+B,SAAS,MAAM,aAAa,CAAC,QAAQ,CAAC,GACnE,aAAa,CAAC,QAAQ,CAAC,CAAC,+BAA+B,CAAC,SAAS;IAC/D,MAAM,EAAE,MAAM,CAAC,CAAA;CAChB,GACC,CAAC,GACD,KAAK,GACP,KAAK,CAAA;AAEX,MAAM,MAAM,KAAK,CACf,8BAA8B,SAC1B,MAAM,aAAa,CAAC,OAAO,CAAC,GAC5B;IAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;CAAE,EAC9B,QAAQ,SAAS,8BAA8B,SAAS;IACtD,MAAM,EAAE,MAAM,QAAQ,CAAA;CACvB,GACG,MAAM,QAAQ,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GACjE,KAAK,GAAG,KAAK,IACf,8BAA8B,SAAS;IAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;CAAE,GACjE,QAAQ,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,GACrE,8BAA8B,SAAS,MAAM,aAAa,CAAC,OAAO,CAAC,GACjE,aAAa,CAAC,OAAO,CAAC,CAAC,8BAA8B,CAAC,GACtD,KAAK,CAAA;AAEX,MAAM,MAAM,cAAc,CACxB,gCAAgC,SAC5B,MAAM,aAAa,CAAC,gBAAgB,CAAC,GACrC;IAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;CAAE,EAC9B,iBAAiB,SAAS,gCAAgC,SAAS;IACjE,MAAM,EAAE,MAAM,QAAQ,CAAA;CACvB,GACG,MAAM,QAAQ,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAC5E,KAAK,GAAG,KAAK,IACf,gCAAgC,SAAS;IAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;CAAE,GACnE,QAAQ,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,iBAAiB,CAAC,GACzF,gCAAgC,SAAS,MAAM,aAAa,CAAC,gBAAgB,CAAC,GAC5E,aAAa,CAAC,gBAAgB,CAAC,CAAC,gCAAgC,CAAC,GACjE,KAAK,CAAA;AAEX,eAAO,MAAM,SAAS;;;;;;;CAOZ,CAAA"}
|
package/dist/package.json
CHANGED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
-- Create "set_vt_batch" function
|
|
2
|
+
CREATE FUNCTION "pgflow"."set_vt_batch" ("queue_name" text, "msg_ids" bigint[], "vt_offsets" integer[]) RETURNS SETOF pgmq.message_record LANGUAGE plpgsql AS $$
|
|
3
|
+
DECLARE
|
|
4
|
+
qtable TEXT := pgmq.format_table_name(queue_name, 'q');
|
|
5
|
+
sql TEXT;
|
|
6
|
+
BEGIN
|
|
7
|
+
/* ---------- safety checks ---------------------------------------------------- */
|
|
8
|
+
IF msg_ids IS NULL OR vt_offsets IS NULL OR array_length(msg_ids, 1) = 0 THEN
|
|
9
|
+
RETURN; -- nothing to do, return empty set
|
|
10
|
+
END IF;
|
|
11
|
+
|
|
12
|
+
IF array_length(msg_ids, 1) IS DISTINCT FROM array_length(vt_offsets, 1) THEN
|
|
13
|
+
RAISE EXCEPTION
|
|
14
|
+
'msg_ids length (%) must equal vt_offsets length (%)',
|
|
15
|
+
array_length(msg_ids, 1), array_length(vt_offsets, 1);
|
|
16
|
+
END IF;
|
|
17
|
+
|
|
18
|
+
/* ---------- dynamic statement ------------------------------------------------ */
|
|
19
|
+
/* One UPDATE joins with the unnested arrays */
|
|
20
|
+
sql := format(
|
|
21
|
+
$FMT$
|
|
22
|
+
WITH input (msg_id, vt_offset) AS (
|
|
23
|
+
SELECT unnest($1)::bigint
|
|
24
|
+
, unnest($2)::int
|
|
25
|
+
)
|
|
26
|
+
UPDATE pgmq.%I q
|
|
27
|
+
SET vt = clock_timestamp() + make_interval(secs => input.vt_offset),
|
|
28
|
+
read_ct = read_ct -- no change, but keeps RETURNING list aligned
|
|
29
|
+
FROM input
|
|
30
|
+
WHERE q.msg_id = input.msg_id
|
|
31
|
+
RETURNING q.msg_id,
|
|
32
|
+
q.read_ct,
|
|
33
|
+
q.enqueued_at,
|
|
34
|
+
q.vt,
|
|
35
|
+
q.message
|
|
36
|
+
$FMT$,
|
|
37
|
+
qtable
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
RETURN QUERY EXECUTE sql USING msg_ids, vt_offsets;
|
|
41
|
+
END;
|
|
42
|
+
$$;
|
|
43
|
+
-- Modify "start_tasks" function
|
|
44
|
+
CREATE OR REPLACE FUNCTION "pgflow"."start_tasks" ("flow_slug" text, "msg_ids" bigint[], "worker_id" uuid) RETURNS SETOF "pgflow"."step_task_record" LANGUAGE sql SET "search_path" = '' AS $$
|
|
45
|
+
with tasks as (
|
|
46
|
+
select
|
|
47
|
+
task.flow_slug,
|
|
48
|
+
task.run_id,
|
|
49
|
+
task.step_slug,
|
|
50
|
+
task.task_index,
|
|
51
|
+
task.message_id
|
|
52
|
+
from pgflow.step_tasks as task
|
|
53
|
+
where task.flow_slug = start_tasks.flow_slug
|
|
54
|
+
and task.message_id = any(msg_ids)
|
|
55
|
+
and task.status = 'queued'
|
|
56
|
+
),
|
|
57
|
+
start_tasks_update as (
|
|
58
|
+
update pgflow.step_tasks
|
|
59
|
+
set
|
|
60
|
+
attempts_count = attempts_count + 1,
|
|
61
|
+
status = 'started',
|
|
62
|
+
started_at = now(),
|
|
63
|
+
last_worker_id = worker_id
|
|
64
|
+
from tasks
|
|
65
|
+
where step_tasks.message_id = tasks.message_id
|
|
66
|
+
and step_tasks.flow_slug = tasks.flow_slug
|
|
67
|
+
and step_tasks.status = 'queued'
|
|
68
|
+
),
|
|
69
|
+
runs as (
|
|
70
|
+
select
|
|
71
|
+
r.run_id,
|
|
72
|
+
r.input
|
|
73
|
+
from pgflow.runs r
|
|
74
|
+
where r.run_id in (select run_id from tasks)
|
|
75
|
+
),
|
|
76
|
+
deps as (
|
|
77
|
+
select
|
|
78
|
+
st.run_id,
|
|
79
|
+
st.step_slug,
|
|
80
|
+
dep.dep_slug,
|
|
81
|
+
dep_task.output as dep_output
|
|
82
|
+
from tasks st
|
|
83
|
+
join pgflow.deps dep on dep.flow_slug = st.flow_slug and dep.step_slug = st.step_slug
|
|
84
|
+
join pgflow.step_tasks dep_task on
|
|
85
|
+
dep_task.run_id = st.run_id and
|
|
86
|
+
dep_task.step_slug = dep.dep_slug and
|
|
87
|
+
dep_task.status = 'completed'
|
|
88
|
+
),
|
|
89
|
+
deps_outputs as (
|
|
90
|
+
select
|
|
91
|
+
d.run_id,
|
|
92
|
+
d.step_slug,
|
|
93
|
+
jsonb_object_agg(d.dep_slug, d.dep_output) as deps_output
|
|
94
|
+
from deps d
|
|
95
|
+
group by d.run_id, d.step_slug
|
|
96
|
+
),
|
|
97
|
+
timeouts as (
|
|
98
|
+
select
|
|
99
|
+
task.message_id,
|
|
100
|
+
task.flow_slug,
|
|
101
|
+
coalesce(step.opt_timeout, flow.opt_timeout) + 2 as vt_delay
|
|
102
|
+
from tasks task
|
|
103
|
+
join pgflow.flows flow on flow.flow_slug = task.flow_slug
|
|
104
|
+
join pgflow.steps step on step.flow_slug = task.flow_slug and step.step_slug = task.step_slug
|
|
105
|
+
),
|
|
106
|
+
-- Batch update visibility timeouts for all messages
|
|
107
|
+
set_vt_batch as (
|
|
108
|
+
select pgflow.set_vt_batch(
|
|
109
|
+
start_tasks.flow_slug,
|
|
110
|
+
array_agg(t.message_id order by t.message_id),
|
|
111
|
+
array_agg(t.vt_delay order by t.message_id)
|
|
112
|
+
)
|
|
113
|
+
from timeouts t
|
|
114
|
+
)
|
|
115
|
+
select
|
|
116
|
+
st.flow_slug,
|
|
117
|
+
st.run_id,
|
|
118
|
+
st.step_slug,
|
|
119
|
+
jsonb_build_object('run', r.input) ||
|
|
120
|
+
coalesce(dep_out.deps_output, '{}'::jsonb) as input,
|
|
121
|
+
st.message_id as msg_id
|
|
122
|
+
from tasks st
|
|
123
|
+
join runs r on st.run_id = r.run_id
|
|
124
|
+
left join deps_outputs dep_out on
|
|
125
|
+
dep_out.run_id = st.run_id and
|
|
126
|
+
dep_out.step_slug = st.step_slug
|
|
127
|
+
$$;
|
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+
-- Modify "step_states" table
|
|
2
|
+
ALTER TABLE "pgflow"."step_states" ADD COLUMN "error_message" text NULL;
|
|
3
|
+
-- Create index "idx_step_states_run_id" to table: "step_states"
|
|
4
|
+
CREATE INDEX "idx_step_states_run_id" ON "pgflow"."step_states" ("run_id");
|
|
5
|
+
-- Modify "maybe_complete_run" function
|
|
6
|
+
CREATE OR REPLACE FUNCTION "pgflow"."maybe_complete_run" ("run_id" uuid) RETURNS void LANGUAGE plpgsql SET "search_path" = '' AS $$
|
|
7
|
+
declare
|
|
8
|
+
v_completed_run pgflow.runs%ROWTYPE;
|
|
9
|
+
begin
|
|
10
|
+
-- Update run status to completed and set output when there are no remaining steps
|
|
11
|
+
WITH run_output AS (
|
|
12
|
+
-- Get outputs from final steps (steps that are not dependencies for other steps)
|
|
13
|
+
SELECT jsonb_object_agg(st.step_slug, st.output) as final_output
|
|
14
|
+
FROM pgflow.step_tasks st
|
|
15
|
+
JOIN pgflow.step_states ss ON ss.run_id = st.run_id AND ss.step_slug = st.step_slug
|
|
16
|
+
JOIN pgflow.runs r ON r.run_id = ss.run_id AND r.flow_slug = ss.flow_slug
|
|
17
|
+
WHERE st.run_id = maybe_complete_run.run_id
|
|
18
|
+
AND st.status = 'completed'
|
|
19
|
+
AND NOT EXISTS (
|
|
20
|
+
SELECT 1
|
|
21
|
+
FROM pgflow.deps d
|
|
22
|
+
WHERE d.flow_slug = ss.flow_slug
|
|
23
|
+
AND d.dep_slug = ss.step_slug
|
|
24
|
+
)
|
|
25
|
+
)
|
|
26
|
+
UPDATE pgflow.runs
|
|
27
|
+
SET
|
|
28
|
+
status = 'completed',
|
|
29
|
+
completed_at = now(),
|
|
30
|
+
output = (SELECT final_output FROM run_output)
|
|
31
|
+
WHERE pgflow.runs.run_id = maybe_complete_run.run_id
|
|
32
|
+
AND pgflow.runs.remaining_steps = 0
|
|
33
|
+
AND pgflow.runs.status != 'completed'
|
|
34
|
+
RETURNING * INTO v_completed_run;
|
|
35
|
+
|
|
36
|
+
-- Only send broadcast if run was completed
|
|
37
|
+
IF v_completed_run.run_id IS NOT NULL THEN
|
|
38
|
+
PERFORM realtime.send(
|
|
39
|
+
jsonb_build_object(
|
|
40
|
+
'event_type', 'run:completed',
|
|
41
|
+
'run_id', v_completed_run.run_id,
|
|
42
|
+
'flow_slug', v_completed_run.flow_slug,
|
|
43
|
+
'status', 'completed',
|
|
44
|
+
'output', v_completed_run.output,
|
|
45
|
+
'completed_at', v_completed_run.completed_at
|
|
46
|
+
),
|
|
47
|
+
'run:completed',
|
|
48
|
+
concat('pgflow:run:', v_completed_run.run_id),
|
|
49
|
+
false
|
|
50
|
+
);
|
|
51
|
+
END IF;
|
|
52
|
+
end;
|
|
53
|
+
$$;
|
|
54
|
+
-- Modify "start_ready_steps" function
|
|
55
|
+
CREATE OR REPLACE FUNCTION "pgflow"."start_ready_steps" ("run_id" uuid) RETURNS void LANGUAGE sql SET "search_path" = '' AS $$
|
|
56
|
+
WITH ready_steps AS (
|
|
57
|
+
SELECT *
|
|
58
|
+
FROM pgflow.step_states AS step_state
|
|
59
|
+
WHERE step_state.run_id = start_ready_steps.run_id
|
|
60
|
+
AND step_state.status = 'created'
|
|
61
|
+
AND step_state.remaining_deps = 0
|
|
62
|
+
ORDER BY step_state.step_slug
|
|
63
|
+
FOR UPDATE
|
|
64
|
+
),
|
|
65
|
+
started_step_states AS (
|
|
66
|
+
UPDATE pgflow.step_states
|
|
67
|
+
SET status = 'started',
|
|
68
|
+
started_at = now()
|
|
69
|
+
FROM ready_steps
|
|
70
|
+
WHERE pgflow.step_states.run_id = start_ready_steps.run_id
|
|
71
|
+
AND pgflow.step_states.step_slug = ready_steps.step_slug
|
|
72
|
+
RETURNING pgflow.step_states.*
|
|
73
|
+
),
|
|
74
|
+
sent_messages AS (
|
|
75
|
+
SELECT
|
|
76
|
+
started_step.flow_slug,
|
|
77
|
+
started_step.run_id,
|
|
78
|
+
started_step.step_slug,
|
|
79
|
+
pgmq.send(started_step.flow_slug, jsonb_build_object(
|
|
80
|
+
'flow_slug', started_step.flow_slug,
|
|
81
|
+
'run_id', started_step.run_id,
|
|
82
|
+
'step_slug', started_step.step_slug,
|
|
83
|
+
'task_index', 0
|
|
84
|
+
)) AS msg_id
|
|
85
|
+
FROM started_step_states AS started_step
|
|
86
|
+
),
|
|
87
|
+
broadcast_events AS (
|
|
88
|
+
SELECT
|
|
89
|
+
realtime.send(
|
|
90
|
+
jsonb_build_object(
|
|
91
|
+
'event_type', 'step:started',
|
|
92
|
+
'run_id', started_step.run_id,
|
|
93
|
+
'step_slug', started_step.step_slug,
|
|
94
|
+
'status', 'started',
|
|
95
|
+
'started_at', started_step.started_at,
|
|
96
|
+
'remaining_tasks', 1,
|
|
97
|
+
'remaining_deps', started_step.remaining_deps
|
|
98
|
+
),
|
|
99
|
+
concat('step:', started_step.step_slug, ':started'),
|
|
100
|
+
concat('pgflow:run:', started_step.run_id),
|
|
101
|
+
false
|
|
102
|
+
)
|
|
103
|
+
FROM started_step_states AS started_step
|
|
104
|
+
)
|
|
105
|
+
INSERT INTO pgflow.step_tasks (flow_slug, run_id, step_slug, message_id)
|
|
106
|
+
SELECT
|
|
107
|
+
sent_messages.flow_slug,
|
|
108
|
+
sent_messages.run_id,
|
|
109
|
+
sent_messages.step_slug,
|
|
110
|
+
sent_messages.msg_id
|
|
111
|
+
FROM sent_messages;
|
|
112
|
+
$$;
|
|
113
|
+
-- Modify "complete_task" function
|
|
114
|
+
CREATE OR REPLACE FUNCTION "pgflow"."complete_task" ("run_id" uuid, "step_slug" text, "task_index" integer, "output" jsonb) RETURNS SETOF "pgflow"."step_tasks" LANGUAGE plpgsql SET "search_path" = '' AS $$
|
|
115
|
+
declare
|
|
116
|
+
v_step_state pgflow.step_states%ROWTYPE;
|
|
117
|
+
begin
|
|
118
|
+
|
|
119
|
+
WITH run_lock AS (
|
|
120
|
+
SELECT * FROM pgflow.runs
|
|
121
|
+
WHERE pgflow.runs.run_id = complete_task.run_id
|
|
122
|
+
FOR UPDATE
|
|
123
|
+
),
|
|
124
|
+
step_lock AS (
|
|
125
|
+
SELECT * FROM pgflow.step_states
|
|
126
|
+
WHERE pgflow.step_states.run_id = complete_task.run_id
|
|
127
|
+
AND pgflow.step_states.step_slug = complete_task.step_slug
|
|
128
|
+
FOR UPDATE
|
|
129
|
+
),
|
|
130
|
+
task AS (
|
|
131
|
+
UPDATE pgflow.step_tasks
|
|
132
|
+
SET
|
|
133
|
+
status = 'completed',
|
|
134
|
+
completed_at = now(),
|
|
135
|
+
output = complete_task.output
|
|
136
|
+
WHERE pgflow.step_tasks.run_id = complete_task.run_id
|
|
137
|
+
AND pgflow.step_tasks.step_slug = complete_task.step_slug
|
|
138
|
+
AND pgflow.step_tasks.task_index = complete_task.task_index
|
|
139
|
+
AND pgflow.step_tasks.status = 'started'
|
|
140
|
+
RETURNING *
|
|
141
|
+
),
|
|
142
|
+
step_state AS (
|
|
143
|
+
UPDATE pgflow.step_states
|
|
144
|
+
SET
|
|
145
|
+
status = CASE
|
|
146
|
+
WHEN pgflow.step_states.remaining_tasks = 1 THEN 'completed' -- Will be 0 after decrement
|
|
147
|
+
ELSE 'started'
|
|
148
|
+
END,
|
|
149
|
+
completed_at = CASE
|
|
150
|
+
WHEN pgflow.step_states.remaining_tasks = 1 THEN now() -- Will be 0 after decrement
|
|
151
|
+
ELSE NULL
|
|
152
|
+
END,
|
|
153
|
+
remaining_tasks = pgflow.step_states.remaining_tasks - 1
|
|
154
|
+
FROM task
|
|
155
|
+
WHERE pgflow.step_states.run_id = complete_task.run_id
|
|
156
|
+
AND pgflow.step_states.step_slug = complete_task.step_slug
|
|
157
|
+
RETURNING pgflow.step_states.*
|
|
158
|
+
),
|
|
159
|
+
-- Find all dependent steps if the current step was completed
|
|
160
|
+
dependent_steps AS (
|
|
161
|
+
SELECT d.step_slug AS dependent_step_slug
|
|
162
|
+
FROM pgflow.deps d
|
|
163
|
+
JOIN step_state s ON s.status = 'completed' AND d.flow_slug = s.flow_slug
|
|
164
|
+
WHERE d.dep_slug = complete_task.step_slug
|
|
165
|
+
ORDER BY d.step_slug -- Ensure consistent ordering
|
|
166
|
+
),
|
|
167
|
+
-- Lock dependent steps before updating
|
|
168
|
+
dependent_steps_lock AS (
|
|
169
|
+
SELECT * FROM pgflow.step_states
|
|
170
|
+
WHERE pgflow.step_states.run_id = complete_task.run_id
|
|
171
|
+
AND pgflow.step_states.step_slug IN (SELECT dependent_step_slug FROM dependent_steps)
|
|
172
|
+
FOR UPDATE
|
|
173
|
+
),
|
|
174
|
+
-- Update all dependent steps
|
|
175
|
+
dependent_steps_update AS (
|
|
176
|
+
UPDATE pgflow.step_states
|
|
177
|
+
SET remaining_deps = pgflow.step_states.remaining_deps - 1
|
|
178
|
+
FROM dependent_steps
|
|
179
|
+
WHERE pgflow.step_states.run_id = complete_task.run_id
|
|
180
|
+
AND pgflow.step_states.step_slug = dependent_steps.dependent_step_slug
|
|
181
|
+
)
|
|
182
|
+
-- Only decrement remaining_steps, don't update status
|
|
183
|
+
UPDATE pgflow.runs
|
|
184
|
+
SET remaining_steps = pgflow.runs.remaining_steps - 1
|
|
185
|
+
FROM step_state
|
|
186
|
+
WHERE pgflow.runs.run_id = complete_task.run_id
|
|
187
|
+
AND step_state.status = 'completed';
|
|
188
|
+
|
|
189
|
+
-- Get the updated step state for broadcasting
|
|
190
|
+
SELECT * INTO v_step_state FROM pgflow.step_states
|
|
191
|
+
WHERE pgflow.step_states.run_id = complete_task.run_id AND pgflow.step_states.step_slug = complete_task.step_slug;
|
|
192
|
+
|
|
193
|
+
-- Send broadcast event for step completed if the step is completed
|
|
194
|
+
IF v_step_state.status = 'completed' THEN
|
|
195
|
+
PERFORM realtime.send(
|
|
196
|
+
jsonb_build_object(
|
|
197
|
+
'event_type', 'step:completed',
|
|
198
|
+
'run_id', complete_task.run_id,
|
|
199
|
+
'step_slug', complete_task.step_slug,
|
|
200
|
+
'status', 'completed',
|
|
201
|
+
'output', complete_task.output,
|
|
202
|
+
'completed_at', v_step_state.completed_at
|
|
203
|
+
),
|
|
204
|
+
concat('step:', complete_task.step_slug, ':completed'),
|
|
205
|
+
concat('pgflow:run:', complete_task.run_id),
|
|
206
|
+
false
|
|
207
|
+
);
|
|
208
|
+
END IF;
|
|
209
|
+
|
|
210
|
+
-- For completed tasks: archive the message
|
|
211
|
+
PERFORM (
|
|
212
|
+
WITH completed_tasks AS (
|
|
213
|
+
SELECT r.flow_slug, st.message_id
|
|
214
|
+
FROM pgflow.step_tasks st
|
|
215
|
+
JOIN pgflow.runs r ON st.run_id = r.run_id
|
|
216
|
+
WHERE st.run_id = complete_task.run_id
|
|
217
|
+
AND st.step_slug = complete_task.step_slug
|
|
218
|
+
AND st.task_index = complete_task.task_index
|
|
219
|
+
AND st.status = 'completed'
|
|
220
|
+
)
|
|
221
|
+
SELECT pgmq.archive(ct.flow_slug, ct.message_id)
|
|
222
|
+
FROM completed_tasks ct
|
|
223
|
+
WHERE EXISTS (SELECT 1 FROM completed_tasks)
|
|
224
|
+
);
|
|
225
|
+
|
|
226
|
+
PERFORM pgflow.start_ready_steps(complete_task.run_id);
|
|
227
|
+
|
|
228
|
+
PERFORM pgflow.maybe_complete_run(complete_task.run_id);
|
|
229
|
+
|
|
230
|
+
RETURN QUERY SELECT *
|
|
231
|
+
FROM pgflow.step_tasks AS step_task
|
|
232
|
+
WHERE step_task.run_id = complete_task.run_id
|
|
233
|
+
AND step_task.step_slug = complete_task.step_slug
|
|
234
|
+
AND step_task.task_index = complete_task.task_index;
|
|
235
|
+
|
|
236
|
+
end;
|
|
237
|
+
$$;
|
|
238
|
+
-- Modify "fail_task" function
|
|
239
|
+
CREATE OR REPLACE FUNCTION "pgflow"."fail_task" ("run_id" uuid, "step_slug" text, "task_index" integer, "error_message" text) RETURNS SETOF "pgflow"."step_tasks" LANGUAGE plpgsql SET "search_path" = '' AS $$
|
|
240
|
+
DECLARE
|
|
241
|
+
v_run_failed boolean;
|
|
242
|
+
begin
|
|
243
|
+
|
|
244
|
+
WITH run_lock AS (
|
|
245
|
+
SELECT * FROM pgflow.runs
|
|
246
|
+
WHERE pgflow.runs.run_id = fail_task.run_id
|
|
247
|
+
FOR UPDATE
|
|
248
|
+
),
|
|
249
|
+
step_lock AS (
|
|
250
|
+
SELECT * FROM pgflow.step_states
|
|
251
|
+
WHERE pgflow.step_states.run_id = fail_task.run_id
|
|
252
|
+
AND pgflow.step_states.step_slug = fail_task.step_slug
|
|
253
|
+
FOR UPDATE
|
|
254
|
+
),
|
|
255
|
+
flow_info AS (
|
|
256
|
+
SELECT r.flow_slug
|
|
257
|
+
FROM pgflow.runs r
|
|
258
|
+
WHERE r.run_id = fail_task.run_id
|
|
259
|
+
),
|
|
260
|
+
config AS (
|
|
261
|
+
SELECT
|
|
262
|
+
COALESCE(s.opt_max_attempts, f.opt_max_attempts) AS opt_max_attempts,
|
|
263
|
+
COALESCE(s.opt_base_delay, f.opt_base_delay) AS opt_base_delay
|
|
264
|
+
FROM pgflow.steps s
|
|
265
|
+
JOIN pgflow.flows f ON f.flow_slug = s.flow_slug
|
|
266
|
+
JOIN flow_info fi ON fi.flow_slug = s.flow_slug
|
|
267
|
+
WHERE s.flow_slug = fi.flow_slug AND s.step_slug = fail_task.step_slug
|
|
268
|
+
),
|
|
269
|
+
fail_or_retry_task as (
|
|
270
|
+
UPDATE pgflow.step_tasks as task
|
|
271
|
+
SET
|
|
272
|
+
status = CASE
|
|
273
|
+
WHEN task.attempts_count < (SELECT opt_max_attempts FROM config) THEN 'queued'
|
|
274
|
+
ELSE 'failed'
|
|
275
|
+
END,
|
|
276
|
+
failed_at = CASE
|
|
277
|
+
WHEN task.attempts_count >= (SELECT opt_max_attempts FROM config) THEN now()
|
|
278
|
+
ELSE NULL
|
|
279
|
+
END,
|
|
280
|
+
started_at = CASE
|
|
281
|
+
WHEN task.attempts_count < (SELECT opt_max_attempts FROM config) THEN NULL
|
|
282
|
+
ELSE task.started_at
|
|
283
|
+
END,
|
|
284
|
+
error_message = fail_task.error_message
|
|
285
|
+
WHERE task.run_id = fail_task.run_id
|
|
286
|
+
AND task.step_slug = fail_task.step_slug
|
|
287
|
+
AND task.task_index = fail_task.task_index
|
|
288
|
+
AND task.status = 'started'
|
|
289
|
+
RETURNING *
|
|
290
|
+
),
|
|
291
|
+
maybe_fail_step AS (
|
|
292
|
+
UPDATE pgflow.step_states
|
|
293
|
+
SET
|
|
294
|
+
status = CASE
|
|
295
|
+
WHEN (select fail_or_retry_task.status from fail_or_retry_task) = 'failed' THEN 'failed'
|
|
296
|
+
ELSE pgflow.step_states.status
|
|
297
|
+
END,
|
|
298
|
+
failed_at = CASE
|
|
299
|
+
WHEN (select fail_or_retry_task.status from fail_or_retry_task) = 'failed' THEN now()
|
|
300
|
+
ELSE NULL
|
|
301
|
+
END,
|
|
302
|
+
error_message = CASE
|
|
303
|
+
WHEN (select fail_or_retry_task.status from fail_or_retry_task) = 'failed' THEN fail_task.error_message
|
|
304
|
+
ELSE NULL
|
|
305
|
+
END
|
|
306
|
+
FROM fail_or_retry_task
|
|
307
|
+
WHERE pgflow.step_states.run_id = fail_task.run_id
|
|
308
|
+
AND pgflow.step_states.step_slug = fail_task.step_slug
|
|
309
|
+
RETURNING pgflow.step_states.*
|
|
310
|
+
),
|
|
311
|
+
-- Send broadcast event for step failed if necessary
|
|
312
|
+
broadcast_step_failed AS (
|
|
313
|
+
SELECT
|
|
314
|
+
realtime.send(
|
|
315
|
+
jsonb_build_object(
|
|
316
|
+
'event_type', 'step:failed',
|
|
317
|
+
'run_id', fail_task.run_id,
|
|
318
|
+
'step_slug', fail_task.step_slug,
|
|
319
|
+
'status', 'failed',
|
|
320
|
+
'error_message', fail_task.error_message,
|
|
321
|
+
'failed_at', now()
|
|
322
|
+
),
|
|
323
|
+
concat('step:', fail_task.step_slug, ':failed'),
|
|
324
|
+
concat('pgflow:run:', fail_task.run_id),
|
|
325
|
+
false
|
|
326
|
+
)
|
|
327
|
+
FROM maybe_fail_step
|
|
328
|
+
WHERE maybe_fail_step.status = 'failed'
|
|
329
|
+
)
|
|
330
|
+
-- Only decrement remaining_steps, don't update status
|
|
331
|
+
UPDATE pgflow.runs
|
|
332
|
+
SET status = CASE
|
|
333
|
+
WHEN (select status from maybe_fail_step) = 'failed' THEN 'failed'
|
|
334
|
+
ELSE status
|
|
335
|
+
END,
|
|
336
|
+
failed_at = CASE
|
|
337
|
+
WHEN (select status from maybe_fail_step) = 'failed' THEN now()
|
|
338
|
+
ELSE NULL
|
|
339
|
+
END
|
|
340
|
+
WHERE pgflow.runs.run_id = fail_task.run_id
|
|
341
|
+
RETURNING (status = 'failed') INTO v_run_failed;
|
|
342
|
+
|
|
343
|
+
-- Send broadcast event for run failure if the run was failed
|
|
344
|
+
IF v_run_failed THEN
|
|
345
|
+
DECLARE
|
|
346
|
+
v_flow_slug text;
|
|
347
|
+
BEGIN
|
|
348
|
+
SELECT flow_slug INTO v_flow_slug FROM pgflow.runs WHERE pgflow.runs.run_id = fail_task.run_id;
|
|
349
|
+
|
|
350
|
+
PERFORM realtime.send(
|
|
351
|
+
jsonb_build_object(
|
|
352
|
+
'event_type', 'run:failed',
|
|
353
|
+
'run_id', fail_task.run_id,
|
|
354
|
+
'flow_slug', v_flow_slug,
|
|
355
|
+
'status', 'failed',
|
|
356
|
+
'error_message', fail_task.error_message,
|
|
357
|
+
'failed_at', now()
|
|
358
|
+
),
|
|
359
|
+
'run:failed',
|
|
360
|
+
concat('pgflow:run:', fail_task.run_id),
|
|
361
|
+
false
|
|
362
|
+
);
|
|
363
|
+
END;
|
|
364
|
+
END IF;
|
|
365
|
+
|
|
366
|
+
-- For queued tasks: delay the message for retry with exponential backoff
|
|
367
|
+
PERFORM (
|
|
368
|
+
WITH retry_config AS (
|
|
369
|
+
SELECT
|
|
370
|
+
COALESCE(s.opt_base_delay, f.opt_base_delay) AS base_delay
|
|
371
|
+
FROM pgflow.steps s
|
|
372
|
+
JOIN pgflow.flows f ON f.flow_slug = s.flow_slug
|
|
373
|
+
JOIN pgflow.runs r ON r.flow_slug = f.flow_slug
|
|
374
|
+
WHERE r.run_id = fail_task.run_id
|
|
375
|
+
AND s.step_slug = fail_task.step_slug
|
|
376
|
+
),
|
|
377
|
+
queued_tasks AS (
|
|
378
|
+
SELECT
|
|
379
|
+
r.flow_slug,
|
|
380
|
+
st.message_id,
|
|
381
|
+
pgflow.calculate_retry_delay((SELECT base_delay FROM retry_config), st.attempts_count) AS calculated_delay
|
|
382
|
+
FROM pgflow.step_tasks st
|
|
383
|
+
JOIN pgflow.runs r ON st.run_id = r.run_id
|
|
384
|
+
WHERE st.run_id = fail_task.run_id
|
|
385
|
+
AND st.step_slug = fail_task.step_slug
|
|
386
|
+
AND st.task_index = fail_task.task_index
|
|
387
|
+
AND st.status = 'queued'
|
|
388
|
+
)
|
|
389
|
+
SELECT pgmq.set_vt(qt.flow_slug, qt.message_id, qt.calculated_delay)
|
|
390
|
+
FROM queued_tasks qt
|
|
391
|
+
WHERE EXISTS (SELECT 1 FROM queued_tasks)
|
|
392
|
+
);
|
|
393
|
+
|
|
394
|
+
-- For failed tasks: archive the message
|
|
395
|
+
PERFORM (
|
|
396
|
+
WITH failed_tasks AS (
|
|
397
|
+
SELECT r.flow_slug, st.message_id
|
|
398
|
+
FROM pgflow.step_tasks st
|
|
399
|
+
JOIN pgflow.runs r ON st.run_id = r.run_id
|
|
400
|
+
WHERE st.run_id = fail_task.run_id
|
|
401
|
+
AND st.step_slug = fail_task.step_slug
|
|
402
|
+
AND st.task_index = fail_task.task_index
|
|
403
|
+
AND st.status = 'failed'
|
|
404
|
+
)
|
|
405
|
+
SELECT pgmq.archive(ft.flow_slug, ft.message_id)
|
|
406
|
+
FROM failed_tasks ft
|
|
407
|
+
WHERE EXISTS (SELECT 1 FROM failed_tasks)
|
|
408
|
+
);
|
|
409
|
+
|
|
410
|
+
return query select *
|
|
411
|
+
from pgflow.step_tasks st
|
|
412
|
+
where st.run_id = fail_task.run_id
|
|
413
|
+
and st.step_slug = fail_task.step_slug
|
|
414
|
+
and st.task_index = fail_task.task_index;
|
|
415
|
+
|
|
416
|
+
end;
|
|
417
|
+
$$;
|
|
418
|
+
-- Create "get_run_with_states" function
|
|
419
|
+
CREATE FUNCTION "pgflow"."get_run_with_states" ("run_id" uuid) RETURNS jsonb LANGUAGE sql SECURITY DEFINER AS $$
|
|
420
|
+
SELECT jsonb_build_object(
|
|
421
|
+
'run', to_jsonb(r),
|
|
422
|
+
'steps', COALESCE(jsonb_agg(to_jsonb(s)) FILTER (WHERE s.run_id IS NOT NULL), '[]'::jsonb)
|
|
423
|
+
)
|
|
424
|
+
FROM pgflow.runs r
|
|
425
|
+
LEFT JOIN pgflow.step_states s ON s.run_id = r.run_id
|
|
426
|
+
WHERE r.run_id = get_run_with_states.run_id
|
|
427
|
+
GROUP BY r.run_id;
|
|
428
|
+
$$;
|
|
429
|
+
-- Create "start_flow" function
|
|
430
|
+
CREATE FUNCTION "pgflow"."start_flow" ("flow_slug" text, "input" jsonb, "run_id" uuid DEFAULT NULL::uuid) RETURNS SETOF "pgflow"."runs" LANGUAGE plpgsql SET "search_path" = '' AS $$
|
|
431
|
+
declare
|
|
432
|
+
v_created_run pgflow.runs%ROWTYPE;
|
|
433
|
+
begin
|
|
434
|
+
|
|
435
|
+
WITH
|
|
436
|
+
flow_steps AS (
|
|
437
|
+
SELECT steps.flow_slug, steps.step_slug, steps.deps_count
|
|
438
|
+
FROM pgflow.steps
|
|
439
|
+
WHERE steps.flow_slug = start_flow.flow_slug
|
|
440
|
+
),
|
|
441
|
+
created_run AS (
|
|
442
|
+
INSERT INTO pgflow.runs (run_id, flow_slug, input, remaining_steps)
|
|
443
|
+
VALUES (
|
|
444
|
+
COALESCE(start_flow.run_id, gen_random_uuid()),
|
|
445
|
+
start_flow.flow_slug,
|
|
446
|
+
start_flow.input,
|
|
447
|
+
(SELECT count(*) FROM flow_steps)
|
|
448
|
+
)
|
|
449
|
+
RETURNING *
|
|
450
|
+
),
|
|
451
|
+
created_step_states AS (
|
|
452
|
+
INSERT INTO pgflow.step_states (flow_slug, run_id, step_slug, remaining_deps)
|
|
453
|
+
SELECT
|
|
454
|
+
fs.flow_slug,
|
|
455
|
+
(SELECT created_run.run_id FROM created_run),
|
|
456
|
+
fs.step_slug,
|
|
457
|
+
fs.deps_count
|
|
458
|
+
FROM flow_steps fs
|
|
459
|
+
)
|
|
460
|
+
SELECT * FROM created_run INTO v_created_run;
|
|
461
|
+
|
|
462
|
+
-- Send broadcast event for run started
|
|
463
|
+
PERFORM realtime.send(
|
|
464
|
+
jsonb_build_object(
|
|
465
|
+
'event_type', 'run:started',
|
|
466
|
+
'run_id', v_created_run.run_id,
|
|
467
|
+
'flow_slug', v_created_run.flow_slug,
|
|
468
|
+
'input', v_created_run.input,
|
|
469
|
+
'status', 'started',
|
|
470
|
+
'remaining_steps', v_created_run.remaining_steps,
|
|
471
|
+
'started_at', v_created_run.started_at
|
|
472
|
+
),
|
|
473
|
+
'run:started',
|
|
474
|
+
concat('pgflow:run:', v_created_run.run_id),
|
|
475
|
+
false
|
|
476
|
+
);
|
|
477
|
+
|
|
478
|
+
PERFORM pgflow.start_ready_steps(v_created_run.run_id);
|
|
479
|
+
|
|
480
|
+
RETURN QUERY SELECT * FROM pgflow.runs where pgflow.runs.run_id = v_created_run.run_id;
|
|
481
|
+
|
|
482
|
+
end;
|
|
483
|
+
$$;
|
|
484
|
+
-- Create "start_flow_with_states" function
|
|
485
|
+
CREATE FUNCTION "pgflow"."start_flow_with_states" ("flow_slug" text, "input" jsonb, "run_id" uuid DEFAULT NULL::uuid) RETURNS jsonb LANGUAGE plpgsql SECURITY DEFINER AS $$
|
|
486
|
+
DECLARE
|
|
487
|
+
v_run_id UUID;
|
|
488
|
+
BEGIN
|
|
489
|
+
-- Start the flow using existing function
|
|
490
|
+
SELECT r.run_id INTO v_run_id FROM pgflow.start_flow(
|
|
491
|
+
start_flow_with_states.flow_slug,
|
|
492
|
+
start_flow_with_states.input,
|
|
493
|
+
start_flow_with_states.run_id
|
|
494
|
+
) AS r LIMIT 1;
|
|
495
|
+
|
|
496
|
+
-- Use get_run_with_states to return the complete state
|
|
497
|
+
RETURN pgflow.get_run_with_states(v_run_id);
|
|
498
|
+
END;
|
|
499
|
+
$$;
|
|
500
|
+
-- Drop "start_flow" function
|
|
501
|
+
DROP FUNCTION "pgflow"."start_flow" (text, jsonb);
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ExtractFlowSteps, StepInput, Simplify, AnyFlow } from '@pgflow/dsl';
|
|
1
|
+
import type { ExtractFlowSteps, StepInput, Simplify, AnyFlow, ExtractFlowInput } from '@pgflow/dsl';
|
|
2
2
|
import type { Database } from './database-types.js';
|
|
3
3
|
export type Json = string | number | boolean | null | {
|
|
4
4
|
[key: string]: Json | undefined;
|
|
@@ -38,6 +38,10 @@ export type MessageRecord = {
|
|
|
38
38
|
* Interface for interacting with pgflow database functions
|
|
39
39
|
*/
|
|
40
40
|
export interface IPgflowClient<TFlow extends AnyFlow = AnyFlow> {
|
|
41
|
+
/**
|
|
42
|
+
* Start a flow with optional run_id
|
|
43
|
+
*/
|
|
44
|
+
startFlow<TFlow extends AnyFlow>(flow_slug: string, input: ExtractFlowInput<TFlow>, run_id?: string): Promise<RunRow>;
|
|
41
45
|
/**
|
|
42
46
|
* Reads messages from queue without starting tasks (phase 1 of two-phase approach)
|
|
43
47
|
* @param queueName - Name of the queue
|
|
@@ -55,15 +59,11 @@ export interface IPgflowClient<TFlow extends AnyFlow = AnyFlow> {
|
|
|
55
59
|
*/
|
|
56
60
|
startTasks(flowSlug: string, msgIds: number[], workerId: string): Promise<StepTaskRecord<TFlow>[]>;
|
|
57
61
|
/**
|
|
58
|
-
*
|
|
59
|
-
* @param stepTask - Step task key containing run_id and step_slug
|
|
60
|
-
* @param output - Output payload for the task
|
|
62
|
+
* Mark a task as completed with output
|
|
61
63
|
*/
|
|
62
64
|
completeTask(stepTask: StepTaskKey, output?: Json): Promise<void>;
|
|
63
65
|
/**
|
|
64
|
-
*
|
|
65
|
-
* @param stepTask - Step task key containing run_id and step_slug
|
|
66
|
-
* @param error - Error to fail task with
|
|
66
|
+
* Mark a task as failed with error
|
|
67
67
|
*/
|
|
68
68
|
failTask(stepTask: StepTaskKey, error: unknown): Promise<void>;
|
|
69
69
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pgflow/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"license": "AGPL-3.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"postgres": "^3.4.5",
|
|
27
|
-
"@pgflow/dsl": "0.
|
|
27
|
+
"@pgflow/dsl": "0.4.0"
|
|
28
28
|
},
|
|
29
29
|
"publishConfig": {
|
|
30
30
|
"access": "public"
|