flowquery 1.0.46 → 1.0.47
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/index.d.ts +0 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/package.json +4 -1
- package/.editorconfig +0 -21
- package/.gitattributes +0 -3
- package/.github/workflows/npm-publish.yml +0 -32
- package/.github/workflows/python-publish.yml +0 -143
- package/.github/workflows/release.yml +0 -107
- package/.husky/pre-commit +0 -28
- package/.prettierrc +0 -22
- package/CODE_OF_CONDUCT.md +0 -10
- package/FlowQueryLogoIcon.png +0 -0
- package/SECURITY.md +0 -14
- package/SUPPORT.md +0 -13
- package/docs/flowquery.min.js +0 -1
- package/docs/index.html +0 -105
- package/flowquery-py/CONTRIBUTING.md +0 -127
- package/flowquery-py/README.md +0 -67
- package/flowquery-py/misc/data/test.json +0 -10
- package/flowquery-py/misc/data/users.json +0 -242
- package/flowquery-py/notebooks/TestFlowQuery.ipynb +0 -440
- package/flowquery-py/pyproject.toml +0 -121
- package/flowquery-py/setup_env.ps1 +0 -92
- package/flowquery-py/setup_env.sh +0 -87
- package/flowquery-py/src/__init__.py +0 -38
- package/flowquery-py/src/__main__.py +0 -10
- package/flowquery-py/src/compute/__init__.py +0 -6
- package/flowquery-py/src/compute/flowquery.py +0 -68
- package/flowquery-py/src/compute/runner.py +0 -64
- package/flowquery-py/src/extensibility.py +0 -52
- package/flowquery-py/src/graph/__init__.py +0 -31
- package/flowquery-py/src/graph/data.py +0 -136
- package/flowquery-py/src/graph/database.py +0 -141
- package/flowquery-py/src/graph/hops.py +0 -43
- package/flowquery-py/src/graph/node.py +0 -143
- package/flowquery-py/src/graph/node_data.py +0 -26
- package/flowquery-py/src/graph/node_reference.py +0 -50
- package/flowquery-py/src/graph/pattern.py +0 -115
- package/flowquery-py/src/graph/pattern_expression.py +0 -67
- package/flowquery-py/src/graph/patterns.py +0 -42
- package/flowquery-py/src/graph/physical_node.py +0 -41
- package/flowquery-py/src/graph/physical_relationship.py +0 -36
- package/flowquery-py/src/graph/relationship.py +0 -193
- package/flowquery-py/src/graph/relationship_data.py +0 -36
- package/flowquery-py/src/graph/relationship_match_collector.py +0 -85
- package/flowquery-py/src/graph/relationship_reference.py +0 -21
- package/flowquery-py/src/io/__init__.py +0 -5
- package/flowquery-py/src/io/command_line.py +0 -108
- package/flowquery-py/src/parsing/__init__.py +0 -17
- package/flowquery-py/src/parsing/alias.py +0 -20
- package/flowquery-py/src/parsing/alias_option.py +0 -11
- package/flowquery-py/src/parsing/ast_node.py +0 -147
- package/flowquery-py/src/parsing/base_parser.py +0 -84
- package/flowquery-py/src/parsing/components/__init__.py +0 -19
- package/flowquery-py/src/parsing/components/csv.py +0 -8
- package/flowquery-py/src/parsing/components/from_.py +0 -12
- package/flowquery-py/src/parsing/components/headers.py +0 -12
- package/flowquery-py/src/parsing/components/json.py +0 -8
- package/flowquery-py/src/parsing/components/null.py +0 -10
- package/flowquery-py/src/parsing/components/post.py +0 -8
- package/flowquery-py/src/parsing/components/text.py +0 -8
- package/flowquery-py/src/parsing/context.py +0 -50
- package/flowquery-py/src/parsing/data_structures/__init__.py +0 -15
- package/flowquery-py/src/parsing/data_structures/associative_array.py +0 -41
- package/flowquery-py/src/parsing/data_structures/json_array.py +0 -30
- package/flowquery-py/src/parsing/data_structures/key_value_pair.py +0 -38
- package/flowquery-py/src/parsing/data_structures/lookup.py +0 -51
- package/flowquery-py/src/parsing/data_structures/range_lookup.py +0 -42
- package/flowquery-py/src/parsing/expressions/__init__.py +0 -61
- package/flowquery-py/src/parsing/expressions/boolean.py +0 -20
- package/flowquery-py/src/parsing/expressions/expression.py +0 -141
- package/flowquery-py/src/parsing/expressions/expression_map.py +0 -26
- package/flowquery-py/src/parsing/expressions/f_string.py +0 -27
- package/flowquery-py/src/parsing/expressions/identifier.py +0 -21
- package/flowquery-py/src/parsing/expressions/number.py +0 -32
- package/flowquery-py/src/parsing/expressions/operator.py +0 -271
- package/flowquery-py/src/parsing/expressions/reference.py +0 -47
- package/flowquery-py/src/parsing/expressions/string.py +0 -27
- package/flowquery-py/src/parsing/functions/__init__.py +0 -127
- package/flowquery-py/src/parsing/functions/aggregate_function.py +0 -60
- package/flowquery-py/src/parsing/functions/async_function.py +0 -65
- package/flowquery-py/src/parsing/functions/avg.py +0 -55
- package/flowquery-py/src/parsing/functions/coalesce.py +0 -43
- package/flowquery-py/src/parsing/functions/collect.py +0 -75
- package/flowquery-py/src/parsing/functions/count.py +0 -79
- package/flowquery-py/src/parsing/functions/date_.py +0 -61
- package/flowquery-py/src/parsing/functions/datetime_.py +0 -62
- package/flowquery-py/src/parsing/functions/duration.py +0 -159
- package/flowquery-py/src/parsing/functions/element_id.py +0 -50
- package/flowquery-py/src/parsing/functions/function.py +0 -68
- package/flowquery-py/src/parsing/functions/function_factory.py +0 -170
- package/flowquery-py/src/parsing/functions/function_metadata.py +0 -148
- package/flowquery-py/src/parsing/functions/functions.py +0 -67
- package/flowquery-py/src/parsing/functions/head.py +0 -39
- package/flowquery-py/src/parsing/functions/id_.py +0 -49
- package/flowquery-py/src/parsing/functions/join.py +0 -49
- package/flowquery-py/src/parsing/functions/keys.py +0 -34
- package/flowquery-py/src/parsing/functions/last.py +0 -39
- package/flowquery-py/src/parsing/functions/localdatetime.py +0 -60
- package/flowquery-py/src/parsing/functions/localtime.py +0 -57
- package/flowquery-py/src/parsing/functions/max_.py +0 -49
- package/flowquery-py/src/parsing/functions/min_.py +0 -49
- package/flowquery-py/src/parsing/functions/nodes.py +0 -48
- package/flowquery-py/src/parsing/functions/predicate_function.py +0 -47
- package/flowquery-py/src/parsing/functions/predicate_sum.py +0 -49
- package/flowquery-py/src/parsing/functions/properties.py +0 -50
- package/flowquery-py/src/parsing/functions/rand.py +0 -28
- package/flowquery-py/src/parsing/functions/range_.py +0 -41
- package/flowquery-py/src/parsing/functions/reducer_element.py +0 -15
- package/flowquery-py/src/parsing/functions/relationships.py +0 -46
- package/flowquery-py/src/parsing/functions/replace.py +0 -39
- package/flowquery-py/src/parsing/functions/round_.py +0 -34
- package/flowquery-py/src/parsing/functions/schema.py +0 -40
- package/flowquery-py/src/parsing/functions/size.py +0 -34
- package/flowquery-py/src/parsing/functions/split.py +0 -54
- package/flowquery-py/src/parsing/functions/string_distance.py +0 -92
- package/flowquery-py/src/parsing/functions/stringify.py +0 -49
- package/flowquery-py/src/parsing/functions/substring.py +0 -76
- package/flowquery-py/src/parsing/functions/sum.py +0 -51
- package/flowquery-py/src/parsing/functions/tail.py +0 -37
- package/flowquery-py/src/parsing/functions/temporal_utils.py +0 -186
- package/flowquery-py/src/parsing/functions/time_.py +0 -57
- package/flowquery-py/src/parsing/functions/timestamp.py +0 -37
- package/flowquery-py/src/parsing/functions/to_float.py +0 -46
- package/flowquery-py/src/parsing/functions/to_integer.py +0 -46
- package/flowquery-py/src/parsing/functions/to_json.py +0 -35
- package/flowquery-py/src/parsing/functions/to_lower.py +0 -37
- package/flowquery-py/src/parsing/functions/to_string.py +0 -41
- package/flowquery-py/src/parsing/functions/trim.py +0 -37
- package/flowquery-py/src/parsing/functions/type_.py +0 -47
- package/flowquery-py/src/parsing/functions/value_holder.py +0 -24
- package/flowquery-py/src/parsing/logic/__init__.py +0 -15
- package/flowquery-py/src/parsing/logic/case.py +0 -28
- package/flowquery-py/src/parsing/logic/else_.py +0 -12
- package/flowquery-py/src/parsing/logic/end.py +0 -8
- package/flowquery-py/src/parsing/logic/then.py +0 -12
- package/flowquery-py/src/parsing/logic/when.py +0 -12
- package/flowquery-py/src/parsing/operations/__init__.py +0 -46
- package/flowquery-py/src/parsing/operations/aggregated_return.py +0 -25
- package/flowquery-py/src/parsing/operations/aggregated_with.py +0 -22
- package/flowquery-py/src/parsing/operations/call.py +0 -73
- package/flowquery-py/src/parsing/operations/create_node.py +0 -35
- package/flowquery-py/src/parsing/operations/create_relationship.py +0 -35
- package/flowquery-py/src/parsing/operations/delete_node.py +0 -29
- package/flowquery-py/src/parsing/operations/delete_relationship.py +0 -29
- package/flowquery-py/src/parsing/operations/group_by.py +0 -148
- package/flowquery-py/src/parsing/operations/limit.py +0 -33
- package/flowquery-py/src/parsing/operations/load.py +0 -148
- package/flowquery-py/src/parsing/operations/match.py +0 -52
- package/flowquery-py/src/parsing/operations/operation.py +0 -69
- package/flowquery-py/src/parsing/operations/order_by.py +0 -114
- package/flowquery-py/src/parsing/operations/projection.py +0 -21
- package/flowquery-py/src/parsing/operations/return_op.py +0 -88
- package/flowquery-py/src/parsing/operations/union.py +0 -115
- package/flowquery-py/src/parsing/operations/union_all.py +0 -17
- package/flowquery-py/src/parsing/operations/unwind.py +0 -42
- package/flowquery-py/src/parsing/operations/where.py +0 -43
- package/flowquery-py/src/parsing/operations/with_op.py +0 -18
- package/flowquery-py/src/parsing/parser.py +0 -1384
- package/flowquery-py/src/parsing/parser_state.py +0 -26
- package/flowquery-py/src/parsing/token_to_node.py +0 -109
- package/flowquery-py/src/tokenization/__init__.py +0 -23
- package/flowquery-py/src/tokenization/keyword.py +0 -54
- package/flowquery-py/src/tokenization/operator.py +0 -29
- package/flowquery-py/src/tokenization/string_walker.py +0 -158
- package/flowquery-py/src/tokenization/symbol.py +0 -19
- package/flowquery-py/src/tokenization/token.py +0 -693
- package/flowquery-py/src/tokenization/token_mapper.py +0 -53
- package/flowquery-py/src/tokenization/token_type.py +0 -21
- package/flowquery-py/src/tokenization/tokenizer.py +0 -214
- package/flowquery-py/src/tokenization/trie.py +0 -125
- package/flowquery-py/src/utils/__init__.py +0 -6
- package/flowquery-py/src/utils/object_utils.py +0 -20
- package/flowquery-py/src/utils/string_utils.py +0 -113
- package/flowquery-py/tests/__init__.py +0 -1
- package/flowquery-py/tests/compute/__init__.py +0 -1
- package/flowquery-py/tests/compute/test_runner.py +0 -4902
- package/flowquery-py/tests/graph/__init__.py +0 -1
- package/flowquery-py/tests/graph/test_create.py +0 -56
- package/flowquery-py/tests/graph/test_data.py +0 -73
- package/flowquery-py/tests/graph/test_match.py +0 -40
- package/flowquery-py/tests/parsing/__init__.py +0 -1
- package/flowquery-py/tests/parsing/test_context.py +0 -34
- package/flowquery-py/tests/parsing/test_expression.py +0 -248
- package/flowquery-py/tests/parsing/test_parser.py +0 -1237
- package/flowquery-py/tests/test_extensibility.py +0 -611
- package/flowquery-py/tests/tokenization/__init__.py +0 -1
- package/flowquery-py/tests/tokenization/test_token_mapper.py +0 -60
- package/flowquery-py/tests/tokenization/test_tokenizer.py +0 -198
- package/flowquery-py/tests/tokenization/test_trie.py +0 -30
- package/flowquery-vscode/.vscode-test.mjs +0 -5
- package/flowquery-vscode/.vscodeignore +0 -13
- package/flowquery-vscode/LICENSE +0 -21
- package/flowquery-vscode/README.md +0 -11
- package/flowquery-vscode/demo/FlowQueryVSCodeDemo.gif +0 -0
- package/flowquery-vscode/eslint.config.mjs +0 -25
- package/flowquery-vscode/extension.js +0 -508
- package/flowquery-vscode/flowQueryEngine/flowquery.min.js +0 -1
- package/flowquery-vscode/flowquery-worker.js +0 -66
- package/flowquery-vscode/images/FlowQueryLogoIcon.png +0 -0
- package/flowquery-vscode/jsconfig.json +0 -13
- package/flowquery-vscode/libs/page.css +0 -53
- package/flowquery-vscode/libs/table.css +0 -13
- package/flowquery-vscode/libs/tabs.css +0 -66
- package/flowquery-vscode/package-lock.json +0 -2917
- package/flowquery-vscode/package.json +0 -51
- package/flowquery-vscode/test/extension.test.js +0 -196
- package/flowquery-vscode/test/worker.test.js +0 -25
- package/flowquery-vscode/vsc-extension-quickstart.md +0 -42
- package/jest.config.js +0 -14
- package/misc/apps/RAG/README.md +0 -29
- package/misc/apps/RAG/data/chats.json +0 -302
- package/misc/apps/RAG/data/emails.json +0 -182
- package/misc/apps/RAG/data/events.json +0 -226
- package/misc/apps/RAG/data/files.json +0 -172
- package/misc/apps/RAG/data/users.json +0 -158
- package/misc/apps/RAG/jest.config.js +0 -21
- package/misc/apps/RAG/package.json +0 -48
- package/misc/apps/RAG/public/index.html +0 -18
- package/misc/apps/RAG/src/App.css +0 -42
- package/misc/apps/RAG/src/App.tsx +0 -50
- package/misc/apps/RAG/src/components/AdaptiveCardRenderer.css +0 -172
- package/misc/apps/RAG/src/components/AdaptiveCardRenderer.tsx +0 -380
- package/misc/apps/RAG/src/components/ApiKeySettings.tsx +0 -245
- package/misc/apps/RAG/src/components/ChatContainer.css +0 -67
- package/misc/apps/RAG/src/components/ChatContainer.tsx +0 -242
- package/misc/apps/RAG/src/components/ChatInput.css +0 -23
- package/misc/apps/RAG/src/components/ChatInput.tsx +0 -76
- package/misc/apps/RAG/src/components/ChatMessage.css +0 -160
- package/misc/apps/RAG/src/components/ChatMessage.tsx +0 -286
- package/misc/apps/RAG/src/components/FlowQueryAgent.ts +0 -708
- package/misc/apps/RAG/src/components/FlowQueryRunner.css +0 -113
- package/misc/apps/RAG/src/components/FlowQueryRunner.tsx +0 -371
- package/misc/apps/RAG/src/components/index.ts +0 -28
- package/misc/apps/RAG/src/graph/index.ts +0 -19
- package/misc/apps/RAG/src/graph/initializeGraph.ts +0 -254
- package/misc/apps/RAG/src/index.tsx +0 -29
- package/misc/apps/RAG/src/prompts/FlowQuerySystemPrompt.ts +0 -327
- package/misc/apps/RAG/src/prompts/index.ts +0 -10
- package/misc/apps/RAG/src/tests/graph.test.ts +0 -35
- package/misc/apps/RAG/src/utils/FlowQueryExecutor.ts +0 -130
- package/misc/apps/RAG/src/utils/FlowQueryExtractor.ts +0 -208
- package/misc/apps/RAG/src/utils/Llm.ts +0 -248
- package/misc/apps/RAG/src/utils/index.ts +0 -12
- package/misc/apps/RAG/tsconfig.json +0 -22
- package/misc/apps/RAG/webpack.config.js +0 -43
- package/misc/apps/README.md +0 -1
- package/misc/queries/analyze_catfacts.cql +0 -75
- package/misc/queries/azure_openai_completions.cql +0 -13
- package/misc/queries/azure_openai_models.cql +0 -9
- package/misc/queries/mock_pipeline.cql +0 -84
- package/misc/queries/openai_completions.cql +0 -15
- package/misc/queries/openai_models.cql +0 -13
- package/misc/queries/test.cql +0 -6
- package/misc/queries/tool_inference.cql +0 -24
- package/misc/queries/wisdom.cql +0 -6
- package/misc/queries/wisdom_letter_histogram.cql +0 -8
- package/src/compute/flowquery.ts +0 -46
- package/src/compute/runner.ts +0 -66
- package/src/extensibility.ts +0 -45
- package/src/graph/data.ts +0 -130
- package/src/graph/database.ts +0 -143
- package/src/graph/hops.ts +0 -22
- package/src/graph/node.ts +0 -122
- package/src/graph/node_data.ts +0 -18
- package/src/graph/node_reference.ts +0 -38
- package/src/graph/pattern.ts +0 -110
- package/src/graph/pattern_expression.ts +0 -48
- package/src/graph/patterns.ts +0 -36
- package/src/graph/physical_node.ts +0 -23
- package/src/graph/physical_relationship.ts +0 -23
- package/src/graph/relationship.ts +0 -167
- package/src/graph/relationship_data.ts +0 -31
- package/src/graph/relationship_match_collector.ts +0 -64
- package/src/graph/relationship_reference.ts +0 -25
- package/src/index.browser.ts +0 -46
- package/src/index.node.ts +0 -55
- package/src/index.ts +0 -12
- package/src/io/command_line.ts +0 -74
- package/src/parsing/alias.ts +0 -23
- package/src/parsing/alias_option.ts +0 -5
- package/src/parsing/ast_node.ts +0 -153
- package/src/parsing/base_parser.ts +0 -98
- package/src/parsing/components/csv.ts +0 -9
- package/src/parsing/components/from.ts +0 -12
- package/src/parsing/components/headers.ts +0 -12
- package/src/parsing/components/json.ts +0 -9
- package/src/parsing/components/null.ts +0 -9
- package/src/parsing/components/post.ts +0 -9
- package/src/parsing/components/text.ts +0 -9
- package/src/parsing/context.ts +0 -54
- package/src/parsing/data_structures/associative_array.ts +0 -43
- package/src/parsing/data_structures/json_array.ts +0 -31
- package/src/parsing/data_structures/key_value_pair.ts +0 -37
- package/src/parsing/data_structures/lookup.ts +0 -44
- package/src/parsing/data_structures/range_lookup.ts +0 -36
- package/src/parsing/expressions/boolean.ts +0 -21
- package/src/parsing/expressions/expression.ts +0 -150
- package/src/parsing/expressions/expression_map.ts +0 -22
- package/src/parsing/expressions/f_string.ts +0 -26
- package/src/parsing/expressions/identifier.ts +0 -22
- package/src/parsing/expressions/number.ts +0 -40
- package/src/parsing/expressions/operator.ts +0 -354
- package/src/parsing/expressions/reference.ts +0 -45
- package/src/parsing/expressions/string.ts +0 -34
- package/src/parsing/functions/aggregate_function.ts +0 -58
- package/src/parsing/functions/async_function.ts +0 -64
- package/src/parsing/functions/avg.ts +0 -47
- package/src/parsing/functions/coalesce.ts +0 -49
- package/src/parsing/functions/collect.ts +0 -54
- package/src/parsing/functions/count.ts +0 -54
- package/src/parsing/functions/date.ts +0 -63
- package/src/parsing/functions/datetime.ts +0 -63
- package/src/parsing/functions/duration.ts +0 -143
- package/src/parsing/functions/element_id.ts +0 -51
- package/src/parsing/functions/function.ts +0 -60
- package/src/parsing/functions/function_factory.ts +0 -195
- package/src/parsing/functions/function_metadata.ts +0 -217
- package/src/parsing/functions/functions.ts +0 -70
- package/src/parsing/functions/head.ts +0 -42
- package/src/parsing/functions/id.ts +0 -51
- package/src/parsing/functions/join.ts +0 -40
- package/src/parsing/functions/keys.ts +0 -29
- package/src/parsing/functions/last.ts +0 -42
- package/src/parsing/functions/localdatetime.ts +0 -63
- package/src/parsing/functions/localtime.ts +0 -58
- package/src/parsing/functions/max.ts +0 -37
- package/src/parsing/functions/min.ts +0 -37
- package/src/parsing/functions/nodes.ts +0 -54
- package/src/parsing/functions/predicate_function.ts +0 -48
- package/src/parsing/functions/predicate_sum.ts +0 -47
- package/src/parsing/functions/properties.ts +0 -56
- package/src/parsing/functions/rand.ts +0 -21
- package/src/parsing/functions/range.ts +0 -37
- package/src/parsing/functions/reducer_element.ts +0 -10
- package/src/parsing/functions/relationships.ts +0 -52
- package/src/parsing/functions/replace.ts +0 -38
- package/src/parsing/functions/round.ts +0 -28
- package/src/parsing/functions/schema.ts +0 -39
- package/src/parsing/functions/size.ts +0 -28
- package/src/parsing/functions/split.ts +0 -45
- package/src/parsing/functions/string_distance.ts +0 -83
- package/src/parsing/functions/stringify.ts +0 -37
- package/src/parsing/functions/substring.ts +0 -68
- package/src/parsing/functions/sum.ts +0 -41
- package/src/parsing/functions/tail.ts +0 -39
- package/src/parsing/functions/temporal_utils.ts +0 -180
- package/src/parsing/functions/time.ts +0 -58
- package/src/parsing/functions/timestamp.ts +0 -37
- package/src/parsing/functions/to_float.ts +0 -50
- package/src/parsing/functions/to_integer.ts +0 -50
- package/src/parsing/functions/to_json.ts +0 -28
- package/src/parsing/functions/to_lower.ts +0 -28
- package/src/parsing/functions/to_string.ts +0 -32
- package/src/parsing/functions/trim.ts +0 -28
- package/src/parsing/functions/type.ts +0 -39
- package/src/parsing/functions/value_holder.ts +0 -13
- package/src/parsing/logic/case.ts +0 -26
- package/src/parsing/logic/else.ts +0 -12
- package/src/parsing/logic/end.ts +0 -9
- package/src/parsing/logic/then.ts +0 -12
- package/src/parsing/logic/when.ts +0 -12
- package/src/parsing/operations/aggregated_return.ts +0 -22
- package/src/parsing/operations/aggregated_with.ts +0 -18
- package/src/parsing/operations/call.ts +0 -69
- package/src/parsing/operations/create_node.ts +0 -39
- package/src/parsing/operations/create_relationship.ts +0 -38
- package/src/parsing/operations/delete_node.ts +0 -33
- package/src/parsing/operations/delete_relationship.ts +0 -32
- package/src/parsing/operations/group_by.ts +0 -137
- package/src/parsing/operations/limit.ts +0 -31
- package/src/parsing/operations/load.ts +0 -146
- package/src/parsing/operations/match.ts +0 -54
- package/src/parsing/operations/operation.ts +0 -69
- package/src/parsing/operations/order_by.ts +0 -126
- package/src/parsing/operations/projection.ts +0 -18
- package/src/parsing/operations/return.ts +0 -76
- package/src/parsing/operations/union.ts +0 -114
- package/src/parsing/operations/union_all.ts +0 -16
- package/src/parsing/operations/unwind.ts +0 -36
- package/src/parsing/operations/where.ts +0 -42
- package/src/parsing/operations/with.ts +0 -20
- package/src/parsing/parser.ts +0 -1641
- package/src/parsing/parser_state.ts +0 -25
- package/src/parsing/token_to_node.ts +0 -114
- package/src/tokenization/keyword.ts +0 -50
- package/src/tokenization/operator.ts +0 -25
- package/src/tokenization/string_walker.ts +0 -197
- package/src/tokenization/symbol.ts +0 -15
- package/src/tokenization/token.ts +0 -764
- package/src/tokenization/token_mapper.ts +0 -53
- package/src/tokenization/token_type.ts +0 -16
- package/src/tokenization/tokenizer.ts +0 -250
- package/src/tokenization/trie.ts +0 -117
- package/src/utils/object_utils.ts +0 -17
- package/src/utils/string_utils.ts +0 -114
- package/tests/compute/runner.test.ts +0 -4559
- package/tests/extensibility.test.ts +0 -643
- package/tests/graph/create.test.ts +0 -36
- package/tests/graph/data.test.ts +0 -58
- package/tests/graph/match.test.ts +0 -29
- package/tests/parsing/context.test.ts +0 -27
- package/tests/parsing/expression.test.ts +0 -303
- package/tests/parsing/parser.test.ts +0 -1327
- package/tests/tokenization/token_mapper.test.ts +0 -47
- package/tests/tokenization/tokenizer.test.ts +0 -191
- package/tests/tokenization/trie.test.ts +0 -20
- package/tsconfig.json +0 -19
- package/typedoc.json +0 -16
- package/vscode-settings.json.recommended +0 -16
- package/webpack.config.js +0 -26
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"""ToInteger function."""
|
|
2
|
-
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from .function import Function
|
|
6
|
-
from .function_metadata import FunctionDef
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
@FunctionDef({
|
|
10
|
-
"description": "Converts a value to an integer",
|
|
11
|
-
"category": "scalar",
|
|
12
|
-
"parameters": [
|
|
13
|
-
{"name": "value", "description": "The value to convert to an integer", "type": "any"}
|
|
14
|
-
],
|
|
15
|
-
"output": {"description": "The integer representation of the value", "type": "number", "example": 42},
|
|
16
|
-
"examples": [
|
|
17
|
-
'RETURN toInteger("42")',
|
|
18
|
-
"RETURN toInteger(3.14)",
|
|
19
|
-
"RETURN toInteger(true)"
|
|
20
|
-
]
|
|
21
|
-
})
|
|
22
|
-
class ToInteger(Function):
|
|
23
|
-
"""ToInteger function.
|
|
24
|
-
|
|
25
|
-
Converts a value to an integer.
|
|
26
|
-
"""
|
|
27
|
-
|
|
28
|
-
def __init__(self) -> None:
|
|
29
|
-
super().__init__("tointeger")
|
|
30
|
-
self._expected_parameter_count = 1
|
|
31
|
-
|
|
32
|
-
def value(self) -> Any:
|
|
33
|
-
val = self.get_children()[0].value()
|
|
34
|
-
if val is None:
|
|
35
|
-
return None
|
|
36
|
-
if isinstance(val, bool):
|
|
37
|
-
return 1 if val else 0
|
|
38
|
-
if isinstance(val, (int, float)):
|
|
39
|
-
return int(val)
|
|
40
|
-
if isinstance(val, str):
|
|
41
|
-
trimmed = val.strip()
|
|
42
|
-
try:
|
|
43
|
-
return int(float(trimmed))
|
|
44
|
-
except (ValueError, OverflowError):
|
|
45
|
-
raise ValueError(f'Cannot convert string "{val}" to integer')
|
|
46
|
-
raise ValueError("toInteger() expects a number, string, or boolean")
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"""ToJson function."""
|
|
2
|
-
|
|
3
|
-
import json
|
|
4
|
-
from typing import Any
|
|
5
|
-
|
|
6
|
-
from .function import Function
|
|
7
|
-
from .function_metadata import FunctionDef
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@FunctionDef({
|
|
11
|
-
"description": "Parses a JSON string into an object",
|
|
12
|
-
"category": "scalar",
|
|
13
|
-
"parameters": [
|
|
14
|
-
{"name": "text", "description": "JSON string to parse", "type": "string"}
|
|
15
|
-
],
|
|
16
|
-
"output": {"description": "Parsed object or array", "type": "object", "example": {"a": 1}},
|
|
17
|
-
"examples": ["WITH '{\"a\": 1}' AS s RETURN tojson(s)"]
|
|
18
|
-
})
|
|
19
|
-
class ToJson(Function):
|
|
20
|
-
"""ToJson function.
|
|
21
|
-
|
|
22
|
-
Parses a JSON string into an object.
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
def __init__(self) -> None:
|
|
26
|
-
super().__init__("tojson")
|
|
27
|
-
self._expected_parameter_count = 1
|
|
28
|
-
|
|
29
|
-
def value(self) -> Any:
|
|
30
|
-
text = self.get_children()[0].value()
|
|
31
|
-
if text is None:
|
|
32
|
-
return None
|
|
33
|
-
if not isinstance(text, str):
|
|
34
|
-
raise ValueError("Invalid arguments for tojson function")
|
|
35
|
-
return json.loads(text)
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"""ToLower function."""
|
|
2
|
-
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from .function import Function
|
|
6
|
-
from .function_metadata import FunctionDef
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
@FunctionDef({
|
|
10
|
-
"description": "Converts a string to lowercase",
|
|
11
|
-
"category": "scalar",
|
|
12
|
-
"parameters": [
|
|
13
|
-
{"name": "text", "description": "String to convert to lowercase", "type": "string"}
|
|
14
|
-
],
|
|
15
|
-
"output": {"description": "Lowercase string", "type": "string", "example": "hello world"},
|
|
16
|
-
"examples": [
|
|
17
|
-
"WITH 'Hello World' AS s RETURN toLower(s)",
|
|
18
|
-
"WITH 'FOO' AS s RETURN toLower(s)"
|
|
19
|
-
]
|
|
20
|
-
})
|
|
21
|
-
class ToLower(Function):
|
|
22
|
-
"""ToLower function.
|
|
23
|
-
|
|
24
|
-
Converts a string to lowercase.
|
|
25
|
-
"""
|
|
26
|
-
|
|
27
|
-
def __init__(self) -> None:
|
|
28
|
-
super().__init__("tolower")
|
|
29
|
-
self._expected_parameter_count = 1
|
|
30
|
-
|
|
31
|
-
def value(self) -> Any:
|
|
32
|
-
val = self.get_children()[0].value()
|
|
33
|
-
if val is None:
|
|
34
|
-
return None
|
|
35
|
-
if not isinstance(val, str):
|
|
36
|
-
raise ValueError("Invalid argument for toLower function: expected a string")
|
|
37
|
-
return val.lower()
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"""ToString function."""
|
|
2
|
-
|
|
3
|
-
import json
|
|
4
|
-
from typing import Any
|
|
5
|
-
|
|
6
|
-
from .function import Function
|
|
7
|
-
from .function_metadata import FunctionDef
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@FunctionDef({
|
|
11
|
-
"description": "Converts a value to its string representation",
|
|
12
|
-
"category": "scalar",
|
|
13
|
-
"parameters": [
|
|
14
|
-
{"name": "value", "description": "Value to convert to a string", "type": "any"}
|
|
15
|
-
],
|
|
16
|
-
"output": {"description": "String representation of the value", "type": "string", "example": "42"},
|
|
17
|
-
"examples": [
|
|
18
|
-
"WITH 42 AS n RETURN toString(n)",
|
|
19
|
-
"WITH true AS b RETURN toString(b)",
|
|
20
|
-
"WITH [1, 2, 3] AS arr RETURN toString(arr)"
|
|
21
|
-
]
|
|
22
|
-
})
|
|
23
|
-
class ToString(Function):
|
|
24
|
-
"""ToString function.
|
|
25
|
-
|
|
26
|
-
Converts a value to its string representation.
|
|
27
|
-
"""
|
|
28
|
-
|
|
29
|
-
def __init__(self) -> None:
|
|
30
|
-
super().__init__("tostring")
|
|
31
|
-
self._expected_parameter_count = 1
|
|
32
|
-
|
|
33
|
-
def value(self) -> Any:
|
|
34
|
-
val = self.get_children()[0].value()
|
|
35
|
-
if val is None:
|
|
36
|
-
return None
|
|
37
|
-
if isinstance(val, bool):
|
|
38
|
-
return str(val).lower()
|
|
39
|
-
if isinstance(val, (dict, list)):
|
|
40
|
-
return json.dumps(val)
|
|
41
|
-
return str(val)
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"""Trim function."""
|
|
2
|
-
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from .function import Function
|
|
6
|
-
from .function_metadata import FunctionDef
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
@FunctionDef({
|
|
10
|
-
"description": "Removes leading and trailing whitespace from a string",
|
|
11
|
-
"category": "scalar",
|
|
12
|
-
"parameters": [
|
|
13
|
-
{"name": "text", "description": "String to trim", "type": "string"}
|
|
14
|
-
],
|
|
15
|
-
"output": {"description": "Trimmed string", "type": "string", "example": "hello"},
|
|
16
|
-
"examples": [
|
|
17
|
-
"WITH ' hello ' AS s RETURN trim(s)",
|
|
18
|
-
"WITH '\\tfoo\\n' AS s RETURN trim(s)"
|
|
19
|
-
]
|
|
20
|
-
})
|
|
21
|
-
class Trim(Function):
|
|
22
|
-
"""Trim function.
|
|
23
|
-
|
|
24
|
-
Removes leading and trailing whitespace from a string.
|
|
25
|
-
"""
|
|
26
|
-
|
|
27
|
-
def __init__(self) -> None:
|
|
28
|
-
super().__init__("trim")
|
|
29
|
-
self._expected_parameter_count = 1
|
|
30
|
-
|
|
31
|
-
def value(self) -> Any:
|
|
32
|
-
val = self.get_children()[0].value()
|
|
33
|
-
if val is None:
|
|
34
|
-
return None
|
|
35
|
-
if not isinstance(val, str):
|
|
36
|
-
raise ValueError("Invalid argument for trim function: expected a string")
|
|
37
|
-
return val.strip()
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"""Type function."""
|
|
2
|
-
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from .function import Function
|
|
6
|
-
from .function_metadata import FunctionDef
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
@FunctionDef({
|
|
10
|
-
"description": "Returns the type of a value as a string",
|
|
11
|
-
"category": "scalar",
|
|
12
|
-
"parameters": [
|
|
13
|
-
{"name": "value", "description": "Value to check the type of", "type": "any"}
|
|
14
|
-
],
|
|
15
|
-
"output": {"description": "Type of the input value", "type": "string", "example": "string"},
|
|
16
|
-
"examples": [
|
|
17
|
-
"WITH 'hello' AS val RETURN type(val)",
|
|
18
|
-
"WITH 42 AS val RETURN type(val)",
|
|
19
|
-
"WITH [1, 2, 3] AS val RETURN type(val)"
|
|
20
|
-
]
|
|
21
|
-
})
|
|
22
|
-
class Type(Function):
|
|
23
|
-
"""Type function.
|
|
24
|
-
|
|
25
|
-
Returns the type of a value as a string.
|
|
26
|
-
"""
|
|
27
|
-
|
|
28
|
-
def __init__(self) -> None:
|
|
29
|
-
super().__init__("type")
|
|
30
|
-
self._expected_parameter_count = 1
|
|
31
|
-
|
|
32
|
-
def value(self) -> Any:
|
|
33
|
-
val = self.get_children()[0].value()
|
|
34
|
-
|
|
35
|
-
if val is None:
|
|
36
|
-
return "null"
|
|
37
|
-
if isinstance(val, list):
|
|
38
|
-
return "array"
|
|
39
|
-
if isinstance(val, dict):
|
|
40
|
-
return "object"
|
|
41
|
-
if isinstance(val, bool):
|
|
42
|
-
return "boolean"
|
|
43
|
-
if isinstance(val, (int, float)):
|
|
44
|
-
return "number"
|
|
45
|
-
if isinstance(val, str):
|
|
46
|
-
return "string"
|
|
47
|
-
return type(val).__name__
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"""Value holder node for FlowQuery AST."""
|
|
2
|
-
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from ..ast_node import ASTNode
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class ValueHolder(ASTNode):
|
|
9
|
-
"""Holds a value that can be set and retrieved."""
|
|
10
|
-
|
|
11
|
-
def __init__(self) -> None:
|
|
12
|
-
super().__init__()
|
|
13
|
-
self._holder: Any = None
|
|
14
|
-
|
|
15
|
-
@property
|
|
16
|
-
def holder(self) -> Any:
|
|
17
|
-
return self._holder
|
|
18
|
-
|
|
19
|
-
@holder.setter
|
|
20
|
-
def holder(self, value: Any) -> None:
|
|
21
|
-
self._holder = value
|
|
22
|
-
|
|
23
|
-
def value(self) -> Any:
|
|
24
|
-
return self._holder
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"""Represents a CASE expression in the AST."""
|
|
2
|
-
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from ..ast_node import ASTNode
|
|
6
|
-
from .when import When
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class Case(ASTNode):
|
|
10
|
-
"""Represents a CASE expression in the AST."""
|
|
11
|
-
|
|
12
|
-
def value(self) -> Any:
|
|
13
|
-
i = 0
|
|
14
|
-
children = self.get_children()
|
|
15
|
-
child = children[i]
|
|
16
|
-
while isinstance(child, When):
|
|
17
|
-
then = children[i + 1]
|
|
18
|
-
if child.value():
|
|
19
|
-
return then.value()
|
|
20
|
-
i += 2
|
|
21
|
-
if i < len(children):
|
|
22
|
-
child = children[i]
|
|
23
|
-
else:
|
|
24
|
-
break
|
|
25
|
-
# Return the else clause if exists
|
|
26
|
-
if i < len(children):
|
|
27
|
-
return children[i].value()
|
|
28
|
-
return None
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"""Represents an ELSE clause in a CASE expression."""
|
|
2
|
-
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from ..ast_node import ASTNode
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class Else(ASTNode):
|
|
9
|
-
"""Represents an ELSE clause in a CASE expression."""
|
|
10
|
-
|
|
11
|
-
def value(self) -> Any:
|
|
12
|
-
return self.get_children()[0].value()
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"""Represents a THEN clause in a CASE expression."""
|
|
2
|
-
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from ..ast_node import ASTNode
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class Then(ASTNode):
|
|
9
|
-
"""Represents a THEN clause in a CASE expression."""
|
|
10
|
-
|
|
11
|
-
def value(self) -> Any:
|
|
12
|
-
return self.get_children()[0].value()
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"""Represents a WHEN clause in a CASE expression."""
|
|
2
|
-
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
from ..ast_node import ASTNode
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class When(ASTNode):
|
|
9
|
-
"""Represents a WHEN clause in a CASE expression."""
|
|
10
|
-
|
|
11
|
-
def value(self) -> Any:
|
|
12
|
-
return self.get_children()[0].value()
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"""Operations module for FlowQuery parsing."""
|
|
2
|
-
|
|
3
|
-
from .aggregated_return import AggregatedReturn
|
|
4
|
-
from .aggregated_with import AggregatedWith
|
|
5
|
-
from .call import Call
|
|
6
|
-
from .create_node import CreateNode
|
|
7
|
-
from .create_relationship import CreateRelationship
|
|
8
|
-
from .delete_node import DeleteNode
|
|
9
|
-
from .delete_relationship import DeleteRelationship
|
|
10
|
-
from .group_by import GroupBy
|
|
11
|
-
from .limit import Limit
|
|
12
|
-
from .load import Load
|
|
13
|
-
from .match import Match
|
|
14
|
-
from .operation import Operation
|
|
15
|
-
from .order_by import OrderBy, SortField
|
|
16
|
-
from .projection import Projection
|
|
17
|
-
from .return_op import Return
|
|
18
|
-
from .union import Union
|
|
19
|
-
from .union_all import UnionAll
|
|
20
|
-
from .unwind import Unwind
|
|
21
|
-
from .where import Where
|
|
22
|
-
from .with_op import With
|
|
23
|
-
|
|
24
|
-
__all__ = [
|
|
25
|
-
"Operation",
|
|
26
|
-
"Projection",
|
|
27
|
-
"Return",
|
|
28
|
-
"With",
|
|
29
|
-
"Unwind",
|
|
30
|
-
"Load",
|
|
31
|
-
"Where",
|
|
32
|
-
"Limit",
|
|
33
|
-
"AggregatedReturn",
|
|
34
|
-
"AggregatedWith",
|
|
35
|
-
"Call",
|
|
36
|
-
"GroupBy",
|
|
37
|
-
"Match",
|
|
38
|
-
"CreateNode",
|
|
39
|
-
"CreateRelationship",
|
|
40
|
-
"DeleteNode",
|
|
41
|
-
"DeleteRelationship",
|
|
42
|
-
"Union",
|
|
43
|
-
"UnionAll",
|
|
44
|
-
"OrderBy",
|
|
45
|
-
"SortField",
|
|
46
|
-
]
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
from typing import Any, Dict, List
|
|
2
|
-
|
|
3
|
-
from ..ast_node import ASTNode
|
|
4
|
-
from .group_by import GroupBy
|
|
5
|
-
from .return_op import Return
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class AggregatedReturn(Return):
|
|
9
|
-
"""Represents an aggregated RETURN operation that groups and reduces values."""
|
|
10
|
-
|
|
11
|
-
def __init__(self, expressions: List[ASTNode]) -> None:
|
|
12
|
-
super().__init__(expressions)
|
|
13
|
-
self._group_by = GroupBy(self.children)
|
|
14
|
-
|
|
15
|
-
async def run(self) -> None:
|
|
16
|
-
await self._group_by.run()
|
|
17
|
-
|
|
18
|
-
@property
|
|
19
|
-
def results(self) -> List[Dict[str, Any]]:
|
|
20
|
-
if self._where is not None:
|
|
21
|
-
self._group_by.where = self._where
|
|
22
|
-
results = list(self._group_by.generate_results())
|
|
23
|
-
if self._order_by is not None:
|
|
24
|
-
results = self._order_by.sort(results)
|
|
25
|
-
return results
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
from typing import List
|
|
2
|
-
|
|
3
|
-
from ..ast_node import ASTNode
|
|
4
|
-
from .group_by import GroupBy
|
|
5
|
-
from .return_op import Return
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class AggregatedWith(Return):
|
|
9
|
-
"""Represents an aggregated WITH operation that groups and reduces values."""
|
|
10
|
-
|
|
11
|
-
def __init__(self, expressions: List[ASTNode]) -> None:
|
|
12
|
-
super().__init__(expressions)
|
|
13
|
-
self._group_by = GroupBy(self.children)
|
|
14
|
-
|
|
15
|
-
async def run(self) -> None:
|
|
16
|
-
await self._group_by.run()
|
|
17
|
-
|
|
18
|
-
async def finish(self) -> None:
|
|
19
|
-
for _ in self._group_by.generate_results():
|
|
20
|
-
if self.next:
|
|
21
|
-
await self.next.run()
|
|
22
|
-
await super().finish()
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"""Represents a CALL operation for invoking async functions."""
|
|
2
|
-
|
|
3
|
-
from typing import Any, Dict, List, Optional
|
|
4
|
-
|
|
5
|
-
from ..ast_node import ASTNode
|
|
6
|
-
from ..expressions.expression_map import ExpressionMap
|
|
7
|
-
from ..functions.async_function import AsyncFunction
|
|
8
|
-
from .projection import Projection
|
|
9
|
-
|
|
10
|
-
DEFAULT_VARIABLE_NAME = "value"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class Call(Projection):
|
|
14
|
-
"""Represents a CALL operation for invoking async functions."""
|
|
15
|
-
|
|
16
|
-
def __init__(self) -> None:
|
|
17
|
-
super().__init__([])
|
|
18
|
-
self._function: Optional[AsyncFunction] = None
|
|
19
|
-
self._map = ExpressionMap()
|
|
20
|
-
self._results: List[Dict[str, Any]] = []
|
|
21
|
-
|
|
22
|
-
@property
|
|
23
|
-
def function(self) -> Optional[AsyncFunction]:
|
|
24
|
-
return self._function
|
|
25
|
-
|
|
26
|
-
@function.setter
|
|
27
|
-
def function(self, async_function: AsyncFunction) -> None:
|
|
28
|
-
self._function = async_function
|
|
29
|
-
|
|
30
|
-
@property
|
|
31
|
-
def yielded(self) -> List[ASTNode]:
|
|
32
|
-
return self.children
|
|
33
|
-
|
|
34
|
-
@yielded.setter
|
|
35
|
-
def yielded(self, expressions: List[ASTNode]) -> None:
|
|
36
|
-
self.children = expressions
|
|
37
|
-
self._map.set_map(expressions) # ExpressionMap accepts list of expressions
|
|
38
|
-
|
|
39
|
-
@property
|
|
40
|
-
def has_yield(self) -> bool:
|
|
41
|
-
return len(self.children) > 0
|
|
42
|
-
|
|
43
|
-
async def run(self) -> None:
|
|
44
|
-
if self._function is None:
|
|
45
|
-
raise ValueError("No function set for Call operation.")
|
|
46
|
-
|
|
47
|
-
args = self._function.get_arguments()
|
|
48
|
-
async for item in self._function.generate(*args):
|
|
49
|
-
if not self.is_last:
|
|
50
|
-
if isinstance(item, dict):
|
|
51
|
-
for key, value in item.items():
|
|
52
|
-
expression = self._map.get(key)
|
|
53
|
-
if expression:
|
|
54
|
-
expression.overridden = value
|
|
55
|
-
else:
|
|
56
|
-
expression = self._map.get(DEFAULT_VARIABLE_NAME)
|
|
57
|
-
if expression:
|
|
58
|
-
expression.overridden = item
|
|
59
|
-
if self.next:
|
|
60
|
-
await self.next.run()
|
|
61
|
-
else:
|
|
62
|
-
record: Dict[str, Any] = {}
|
|
63
|
-
if isinstance(item, dict):
|
|
64
|
-
for key, value in item.items():
|
|
65
|
-
if self._map.has(key) or not self.has_yield:
|
|
66
|
-
record[key] = value
|
|
67
|
-
else:
|
|
68
|
-
record[DEFAULT_VARIABLE_NAME] = item
|
|
69
|
-
self._results.append(record)
|
|
70
|
-
|
|
71
|
-
@property
|
|
72
|
-
def results(self) -> List[Dict[str, Any]]:
|
|
73
|
-
return self._results
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"""Represents a CREATE operation for creating virtual nodes."""
|
|
2
|
-
|
|
3
|
-
from typing import Any, Dict, List
|
|
4
|
-
|
|
5
|
-
from ...graph.database import Database
|
|
6
|
-
from ...graph.node import Node
|
|
7
|
-
from ..ast_node import ASTNode
|
|
8
|
-
from .operation import Operation
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class CreateNode(Operation):
|
|
12
|
-
"""Represents a CREATE operation for creating virtual nodes."""
|
|
13
|
-
|
|
14
|
-
def __init__(self, node: Node, statement: ASTNode) -> None:
|
|
15
|
-
super().__init__()
|
|
16
|
-
self._node = node
|
|
17
|
-
self._statement = statement
|
|
18
|
-
|
|
19
|
-
@property
|
|
20
|
-
def node(self) -> Node:
|
|
21
|
-
return self._node
|
|
22
|
-
|
|
23
|
-
@property
|
|
24
|
-
def statement(self) -> ASTNode:
|
|
25
|
-
return self._statement
|
|
26
|
-
|
|
27
|
-
async def run(self) -> None:
|
|
28
|
-
if self._node is None:
|
|
29
|
-
raise ValueError("Node is null")
|
|
30
|
-
db = Database.get_instance()
|
|
31
|
-
db.add_node(self._node, self._statement)
|
|
32
|
-
|
|
33
|
-
@property
|
|
34
|
-
def results(self) -> List[Dict[str, Any]]:
|
|
35
|
-
return []
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"""Represents a CREATE operation for creating virtual relationships."""
|
|
2
|
-
|
|
3
|
-
from typing import Any, Dict, List
|
|
4
|
-
|
|
5
|
-
from ...graph.database import Database
|
|
6
|
-
from ...graph.relationship import Relationship
|
|
7
|
-
from ..ast_node import ASTNode
|
|
8
|
-
from .operation import Operation
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class CreateRelationship(Operation):
|
|
12
|
-
"""Represents a CREATE operation for creating virtual relationships."""
|
|
13
|
-
|
|
14
|
-
def __init__(self, relationship: Relationship, statement: ASTNode) -> None:
|
|
15
|
-
super().__init__()
|
|
16
|
-
self._relationship = relationship
|
|
17
|
-
self._statement = statement
|
|
18
|
-
|
|
19
|
-
@property
|
|
20
|
-
def relationship(self) -> Relationship:
|
|
21
|
-
return self._relationship
|
|
22
|
-
|
|
23
|
-
@property
|
|
24
|
-
def statement(self) -> ASTNode:
|
|
25
|
-
return self._statement
|
|
26
|
-
|
|
27
|
-
async def run(self) -> None:
|
|
28
|
-
if self._relationship is None:
|
|
29
|
-
raise ValueError("Relationship is null")
|
|
30
|
-
db = Database.get_instance()
|
|
31
|
-
db.add_relationship(self._relationship, self._statement)
|
|
32
|
-
|
|
33
|
-
@property
|
|
34
|
-
def results(self) -> List[Dict[str, Any]]:
|
|
35
|
-
return []
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"""Represents a DELETE operation for deleting virtual nodes."""
|
|
2
|
-
|
|
3
|
-
from typing import Any, Dict, List
|
|
4
|
-
|
|
5
|
-
from ...graph.database import Database
|
|
6
|
-
from ...graph.node import Node
|
|
7
|
-
from .operation import Operation
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class DeleteNode(Operation):
|
|
11
|
-
"""Represents a DELETE operation for deleting virtual nodes."""
|
|
12
|
-
|
|
13
|
-
def __init__(self, node: Node) -> None:
|
|
14
|
-
super().__init__()
|
|
15
|
-
self._node = node
|
|
16
|
-
|
|
17
|
-
@property
|
|
18
|
-
def node(self) -> Node:
|
|
19
|
-
return self._node
|
|
20
|
-
|
|
21
|
-
async def run(self) -> None:
|
|
22
|
-
if self._node is None:
|
|
23
|
-
raise ValueError("Node is null")
|
|
24
|
-
db = Database.get_instance()
|
|
25
|
-
db.remove_node(self._node)
|
|
26
|
-
|
|
27
|
-
@property
|
|
28
|
-
def results(self) -> List[Dict[str, Any]]:
|
|
29
|
-
return []
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"""Represents a DELETE operation for deleting virtual relationships."""
|
|
2
|
-
|
|
3
|
-
from typing import Any, Dict, List
|
|
4
|
-
|
|
5
|
-
from ...graph.database import Database
|
|
6
|
-
from ...graph.relationship import Relationship
|
|
7
|
-
from .operation import Operation
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class DeleteRelationship(Operation):
|
|
11
|
-
"""Represents a DELETE operation for deleting virtual relationships."""
|
|
12
|
-
|
|
13
|
-
def __init__(self, relationship: Relationship) -> None:
|
|
14
|
-
super().__init__()
|
|
15
|
-
self._relationship = relationship
|
|
16
|
-
|
|
17
|
-
@property
|
|
18
|
-
def relationship(self) -> Relationship:
|
|
19
|
-
return self._relationship
|
|
20
|
-
|
|
21
|
-
async def run(self) -> None:
|
|
22
|
-
if self._relationship is None:
|
|
23
|
-
raise ValueError("Relationship is null")
|
|
24
|
-
db = Database.get_instance()
|
|
25
|
-
db.remove_relationship(self._relationship)
|
|
26
|
-
|
|
27
|
-
@property
|
|
28
|
-
def results(self) -> List[Dict[str, Any]]:
|
|
29
|
-
return []
|