{ "name": "Fetch User Comments", "active": false, "nodes": [ { "id": "validate_context", "name": "Validate Context", "type": "metabuilder.validate", "typeVersion": 1, "position": [ 100, 100 ], "parameters": { "input": "{{ $context.user.id }}", "operation": "validate", "validator": "required" } }, { "id": "extract_pagination", "name": "Extract Pagination", "type": "metabuilder.transform", "typeVersion": 1, "position": [ 400, 100 ], "parameters": { "output": { "limit": "{{ Math.min($json.limit || 20, 100) }}", "offset": "{{ ($json.page || 1 - 1) * ($json.limit || 20) }}" }, "operation": "transform_data" } }, { "id": "fetch_comments", "name": "Fetch Comments", "type": "metabuilder.database", "typeVersion": 1, "position": [ 700, 100 ], "parameters": { "filter": { "authorId": "{{ $context.user.id }}", "tenantId": "{{ $context.tenantId }}", "isDeleted": false }, "sort": { "createdAt": -1 }, "limit": "{{ $steps.extract_pagination.output.limit }}", "offset": "{{ $steps.extract_pagination.output.offset }}", "operation": "database_read", "entity": "ForumPost" } }, { "id": "enrich_with_thread_info", "name": "Enrich With Thread Info", "type": "metabuilder.transform", "typeVersion": 1, "position": [ 100, 300 ], "parameters": { "input": "{{ $steps.fetch_comments.output }}", "output": "{{ $steps.fetch_comments.output.map(post => ({ ...post, threadUrl: '/forum/thread/' + post.threadId })) }}", "operation": "transform_data" } }, { "id": "count_total", "name": "Count Total", "type": "metabuilder.operation", "typeVersion": 1, "position": [ 400, 300 ], "parameters": { "filter": { "authorId": "{{ $context.user.id }}", "tenantId": "{{ $context.tenantId }}", "isDeleted": false }, "operation": "database_count", "entity": "ForumPost" } }, { "id": "format_response", "name": "Format Response", "type": "metabuilder.transform", "typeVersion": 1, "position": [ 700, 300 ], "parameters": { "output": { "comments": "{{ $steps.enrich_with_thread_info.output }}", "pagination": { "total": "{{ $steps.count_total.output }}", "page": "{{ $json.page || 1 }}", "limit": "{{ $steps.extract_pagination.output.limit }}", "hasMore": "{{ $steps.count_total.output > ($steps.extract_pagination.output.offset + $steps.extract_pagination.output.limit) }}" } }, "operation": "transform_data" } }, { "id": "return_success", "name": "Return Success", "type": "metabuilder.action", "typeVersion": 1, "position": [ 100, 500 ], "parameters": { "action": "http_response", "status": 200, "body": "{{ $steps.format_response.output }}" } } ], "connections": { "validate_context": { "main": [ [ { "node": "extract_pagination", "type": "main", "index": 0 } ] ] }, "extract_pagination": { "main": [ [ { "node": "fetch_comments", "type": "main", "index": 0 } ] ] }, "fetch_comments": { "main": [ [ { "node": "enrich_with_thread_info", "type": "main", "index": 0 } ] ] }, "enrich_with_thread_info": { "main": [ [ { "node": "count_total", "type": "main", "index": 0 } ] ] }, "count_total": { "main": [ [ { "node": "format_response", "type": "main", "index": 0 } ] ] }, "format_response": { "main": [ [ { "node": "return_success", "type": "main", "index": 0 } ] ] } }, "staticData": {}, "meta": {}, "settings": { "timezone": "UTC", "executionTimeout": 3600, "saveExecutionProgress": true, "saveDataErrorExecution": "all", "saveDataSuccessExecution": "all" }, "id": "workflow_fetch_user_comments", "version": "3.0.0", "tenantId": "${TENANT_ID}" }