From 598b31214084521099081c8378488d43356f4e7e Mon Sep 17 00:00:00 2001 From: despiegk Date: Mon, 24 Mar 2025 06:44:39 +0100 Subject: [PATCH] ... --- {lib/mcp => TOSORT}/developer/README.md | 0 {lib/mcp => TOSORT}/developer/developer.v | 29 +- {lib/mcp => TOSORT}/developer/generate_mcp.v | 9 +- .../developer/generate_mcp_helpers.v | 14 +- TOSORT/developer/generate_mcp_test.v | 205 +++++ .../developer/generate_mcp_tools.v | 84 +- TOSORT/developer/mcp.v | 31 + {lib/mcp => TOSORT}/developer/scripts/run.vsh | 3 +- .../templates/prompt_generate_mcp.txt | 0 .../developer/templates/tool_code.v.template | 0 .../templates/tool_handler.v.template | 0 .../developer/testdata/mock_module/mock.v | 12 +- .../testdata/vlang_test_standalone.v | 70 +- {lib/mcp => TOSORT}/developer/vlang.v | 116 ++- {lib/mcp => TOSORT}/developer/vlang_test.v | 48 +- TOSORT/developer/vlang_tools.v | 34 + .../aiexamples/openai_chat_completion.vsh | 30 +- .../generator/basic/generate_actor_module.vsh | 9 +- .../generator/basic/generate_methods.vsh | 6 +- .../generator/basic/generate_openrpc_file.vsh | 4 +- .../baobab/generator/geomind_poc/generate.vsh | 12 +- examples/baobab/generator/geomind_poc/model.v | 62 +- examples/baobab/generator/geomind_poc/play.v | 58 +- .../baobab/generator/geomind_poc/server.v | 87 +- examples/baobab/generator/mcc_example.vsh | 17 +- .../openapi_e2e/generate_actor_module.vsh | 11 +- .../openapi_to_specification.vsh | 2 +- .../openrpc_to_specification.vsh | 2 +- .../specification_to_openapi.vsh | 190 ++--- .../specification_to_openrpc.vsh | 192 ++--- examples/biztools/bizmodel.vsh | 9 +- .../bizmodel_docusaurus.vsh | 13 +- examples/clients/groq/groq_client.vsh | 10 +- examples/core/agent_encoding.vsh | 54 +- .../data/ourdb_syncer}/db_example.v | 0 .../data/ourdb_syncer}/master_example.v | 0 .../data/ourdb_syncer}/worker_example.v | 0 .../openapi_generation/example_actor/actor.v | 8 +- examples/hero/openapi/actor.vsh | 148 ++-- examples/installers/db/qdrant.vsh | 1 - examples/installers/installers.vsh | 2 +- examples/installers/lang/python.vsh | 2 - examples/jina_example.vsh | 18 +- examples/jobs/vfs_jobs_example.vsh | 70 +- .../openapi/codegen/calendar_ts_client.vsh | 3 - .../tfgrid3deployer/hetzner/hetzner.vsh | 10 +- .../tfgrid3deployer_example.vsh | 14 +- examples/threefold/tfgrid3deployer/vm.vsh | 20 +- .../vm_gw_caddy/vm_gw_caddy.vsh | 2 +- examples/vfs/vfs_db/dedupestor_vfs.vsh | 80 +- examples/vfs/vfs_db/ourdb_vfs.vsh | 16 +- examples/vfs/vfs_db/vfs_basics.vsh | 64 +- examples/webdav/webdav_vfs.vsh | 17 +- .../markdown_renderer/markdown_parser.vsh | 1 - .../markdown_renderer/markdown_render.vsh | 4 +- .../mdbook_markdown/doctree_export.vsh | 7 +- examples/webtools/starllight_example.vsh | 6 +- .../generator/_archive/client_typescript.v | 16 +- .../_archive/client_typescript_test.v | 373 ++++----- .../generator/_archive/write_object_methods.v | 10 +- .../generator/_archive/write_object_tests.v | 4 +- lib/baobab/generator/generate_act.v | 92 ++- lib/baobab/generator/generate_actor_folder.v | 36 +- lib/baobab/generator/generate_actor_source.v | 40 +- lib/baobab/generator/generate_actor_test.v | 491 ++++++------ lib/baobab/generator/generate_clients.v | 77 +- lib/baobab/generator/generate_command.v | 6 +- lib/baobab/generator/generate_interface.v | 28 +- lib/baobab/generator/generate_methods.v | 91 ++- .../generator/generate_methods_example.v | 78 +- .../generator/generate_methods_interface.v | 31 +- lib/baobab/generator/generate_model.v | 22 +- lib/baobab/generator/generate_openapi.v | 62 +- lib/baobab/generator/generate_openrpc.v | 12 +- lib/baobab/generator/generate_scripts.v | 78 +- lib/baobab/generator/templates/client_test.v | 4 +- .../generator/write_object_methods_test.v | 4 +- lib/baobab/osis/factory.v | 2 +- lib/baobab/osis/indexer.v | 8 +- lib/baobab/osis/model.v | 10 +- lib/baobab/osis/storer.v | 6 +- lib/baobab/osis/storer_generic.v | 2 +- lib/baobab/specification/from_openapi.v | 112 +-- lib/baobab/specification/from_openapi_test.v | 540 ++++++------- lib/baobab/specification/from_openrpc.v | 31 +- lib/baobab/specification/from_openrpc_test.v | 753 +++++++++--------- lib/baobab/specification/model.v | 83 +- lib/baobab/specification/to_openapi.v | 62 +- lib/baobab/specification/to_openapi_test.v | 322 ++++---- lib/baobab/specification/to_openrpc.v | 27 +- lib/baobab/stage/action.v | 10 +- lib/baobab/stage/action_client.v | 4 +- lib/baobab/stage/actor.v | 16 +- lib/baobab/stage/config.v | 1 - lib/baobab/stage/interfaces/jsonrpc.v | 8 +- lib/baobab/stage/interfaces/openapi.v | 18 +- lib/baobab/stage/interfaces/openrpc.v | 14 +- .../stage/interfaces/reflection_openapi.v | 146 ++-- lib/baobab/stage/interfaces/server_http.v | 2 +- lib/biz/bizmodel/act.v | 37 +- lib/biz/bizmodel/export.v | 81 +- lib/biz/bizmodel/export_csv.v | 28 +- lib/biz/bizmodel/export_csv_test.vsh | 4 +- lib/biz/bizmodel/export_test.v | 6 +- lib/biz/bizmodel/factory.v | 5 +- lib/biz/bizmodel/model.v | 4 +- lib/biz/bizmodel/play.v | 13 +- lib/biz/bizmodel/play_hr.v | 2 +- lib/biz/bizmodel/play_product_revenue.v | 7 +- lib/biz/spreadsheet/extrapolate.v | 2 +- lib/biz/spreadsheet/sheet_export.v | 19 +- lib/biz/spreadsheet/sheet_export_csv.v | 24 +- lib/biz/spreadsheet/sheet_export_csv_test.v | 44 +- lib/circles/actionprocessor/factory.v | 76 +- lib/circles/actions/db/job_db.v | 8 +- lib/circles/actions/db/job_db_test.v | 47 +- lib/circles/actions/models/job.v | 54 +- lib/circles/actions/models/job_test.v | 60 +- lib/circles/actions/play/create.v | 30 +- lib/circles/actions/play/delete.v | 4 +- lib/circles/actions/play/get.v | 8 +- lib/circles/actions/play/list.v | 6 +- lib/circles/actions/play/play_jobs.vsh | 4 +- lib/circles/actions/play/player.v | 14 +- lib/circles/actions/play/update_status.v | 40 +- lib/circles/base/sessionstate.v | 73 +- lib/circles/core/db/agent_db.v | 22 +- lib/circles/core/db/agent_db_test.v | 42 +- lib/circles/core/db/circle_db.v | 30 +- lib/circles/core/db/circle_db_test.v | 59 +- lib/circles/core/db/name_db.v | 46 +- lib/circles/core/db/name_db_test.v | 53 +- lib/circles/core/models/agent.v | 75 +- lib/circles/core/models/agent_test.v | 164 ++-- lib/circles/core/models/circle.v | 30 +- lib/circles/core/models/circle_test.v | 96 +-- lib/circles/core/models/name.v | 45 +- lib/circles/core/models/name_test.v | 92 +-- lib/circles/mcc/db/calendar_db.v | 26 +- lib/circles/mcc/db/calendar_db_test.v | 58 +- lib/circles/mcc/db/mail_db.v | 36 +- lib/circles/mcc/db/mail_db_test.v | 56 +- lib/circles/mcc/models/calendar_test.v | 72 +- lib/circles/mcc/models/mail.v | 90 +-- lib/circles/mcc/models/mail_simple_test.v | 18 +- lib/circles/mcc/models/mail_test.v | 114 +-- lib/clients/openai/openai_model_.v | 6 +- lib/clients/qdrant/collections.v | 226 ------ lib/clients/qdrant/points.v | 88 -- lib/clients/qdrant/qdrant_client.v | 425 ---------- lib/clients/qdrant/qdrant_client_test.v | 1 - lib/clients/qdrant/qdrant_model.v | 360 --------- lib/code/generator/installer_client_OLD/do.v | 21 +- .../generator/installer_client_OLD/model.v | 24 +- .../generator/installer_client_OLD/scanner.v | 9 +- lib/core/code/example.v | 1 - lib/core/code/folder.v | 12 +- lib/core/code/model.v | 9 +- lib/core/code/model_const.v | 2 +- lib/core/code/model_file.v | 13 +- lib/core/code/model_folder.v | 12 +- lib/core/code/model_function.v | 52 +- lib/core/code/model_import.v | 2 +- lib/core/code/model_module.v | 57 +- lib/core/code/model_param.v | 34 +- lib/core/code/model_struct.v | 15 +- lib/core/code/model_types.v | 163 ++-- lib/core/code/write.v | 8 +- lib/core/generator/generic/model.v | 7 +- .../generator/installer_client_OLD/factory.v | 21 +- .../generator/installer_client_OLD/model.v | 24 +- .../generator/installer_client_OLD/scanner.v | 9 +- lib/core/herocmds/generator.v | 6 +- lib/core/pathlib/factory.v | 3 +- lib/core/pathlib/path_copy.v | 1 - lib/core/redisclient/redisclient_rpc.v | 6 +- lib/core/texttools/casing.v | 4 +- lib/core/texttools/namefix.v | 19 +- lib/data/dedupestor/dedupestor_test.v | 78 +- lib/data/dedupestor/metadata.v | 12 +- lib/data/dedupestor/metadata_test.v | 70 +- lib/data/encoder/encoder_decode.v | 4 +- lib/data/encoder/encoder_test.v | 4 +- lib/data/markdownparser/elements/base.v | 3 +- .../elements/base_add_methods.v | 1 - lib/data/markdownparser/elements/doc.v | 5 +- .../elements/element_frontmatter2.v | 26 +- .../elements/parser_paragraph.v | 2 +- lib/data/markdownparser/parsers/parse_doc.v | 10 +- lib/data/markdownparser/parsers/parser_line.v | 10 +- lib/data/markdownparser2/example.v | 22 +- lib/data/markdownparser2/markdown.v | 24 +- lib/data/markdownparser2/navigator.v | 66 +- lib/data/markdownparser2/parser_block.v | 6 +- lib/data/markdownparser2/parser_blockquote.v | 42 +- .../markdownparser2/parser_blockquote_test.v | 94 +-- .../parser_fenced_code_block.v | 38 +- .../parser_footnote_definition.v | 44 +- .../parser_footnote_definition_test.v | 178 +++-- lib/data/markdownparser2/parser_heading.v | 26 +- .../markdownparser2/parser_heading_test.v | 92 +-- .../markdownparser2/parser_helpers_test.v | 314 ++++---- .../markdownparser2/parser_horizontal_rule.v | 20 +- .../parser_horizontal_rule_test.v | 142 ++-- lib/data/markdownparser2/parser_inline.v | 12 +- lib/data/markdownparser2/parser_inline_test.v | 162 ++-- lib/data/markdownparser2/parser_list.v | 38 +- lib/data/markdownparser2/parser_list_item.v | 42 +- lib/data/markdownparser2/parser_main.v | 24 +- lib/data/markdownparser2/parser_paragraph.v | 36 +- lib/data/markdownparser2/parser_table.v | 100 +-- lib/data/markdownparser2/parser_table_test.v | 136 ++-- lib/data/markdownparser2/renderer.v | 16 +- .../markdownrenderer/structure_renderer.v | 23 +- lib/data/ourdb/backend.v | 4 +- lib/data/paramsparser/params_export_test.v | 2 +- lib/data/radixtree/factory_test.v | 5 +- lib/data/radixtree/getall_test.v | 52 +- lib/data/radixtree/prefix_test.v | 126 +-- lib/data/radixtree/radixtree.v | 77 +- lib/dav/webdav/errors.v | 12 +- lib/dav/webdav/factory_test.v | 19 +- lib/dav/webdav/locker.v | 5 +- lib/dav/webdav/locker_test.v | 64 +- lib/dav/webdav/middleware_headers.v | 2 +- lib/dav/webdav/middleware_log.v | 1 - lib/dav/webdav/model_lock.v | 35 +- lib/dav/webdav/model_property.v | 86 +- lib/dav/webdav/model_property_test.v | 18 +- lib/dav/webdav/model_propfind.v | 102 ++- lib/dav/webdav/server.v | 129 +-- lib/dav/webdav/server_propfind.v | 62 +- lib/dav/webdav/server_test.v | 257 +++--- lib/develop/performance/cmd/imports.vsh | 24 +- lib/develop/vscode_extensions/ourdb/factory.v | 44 +- lib/installers/db/cometbft/cometbft_actions.v | 26 +- lib/installers/db/cometbft/cometbft_model.v | 2 +- lib/installers/db/qdrant/qdrant_actions.v | 49 +- .../threefold/griddriver/griddriver_actions.v | 2 +- lib/installers/web/bun/bun_actions.v | 2 +- .../web/tailwind/tailwind_actions.v | 4 +- .../web/tailwind4/tailwind_actions.v | 4 +- lib/installers/web/tailwind4/tailwind_model.v | 1 - lib/mcp/backend_interface.v | 6 +- lib/mcp/backend_memory.v | 60 +- lib/mcp/baobab/baobab_tools.v | 41 +- lib/mcp/baobab/developer.v | 14 +- lib/mcp/baobab/mcp.v | 28 +- lib/mcp/baobab/scripts/run | Bin 11698400 -> 0 bytes lib/mcp/baobab/scripts/run.vsh | 11 - lib/mcp/developer/generate_mcp_test.v | 209 ----- lib/mcp/developer/mcp.v | 33 - lib/mcp/developer/scripts/run | Bin 9104960 -> 0 bytes lib/mcp/developer/vlang_tools.v | 31 - lib/mcp/error.v | 4 +- lib/mcp/factory.v | 70 +- lib/mcp/handler_initialize.v | 4 +- lib/mcp/handler_initialize_test.v | 52 +- lib/mcp/handler_prompts.v | 26 +- lib/mcp/handler_resources.v | 56 +- lib/mcp/handler_tools.v | 39 +- lib/mcp/logger/logger.v | 2 +- lib/mcp/model_configuration.v | 18 +- lib/mcp/model_configuration_test.v | 44 +- lib/mcp/model_error.v | 16 +- lib/mcp/scripts/.gitignore | 2 - lib/mcp/scripts/echo_stdin | Bin 292440 -> 0 bytes lib/mcp/scripts/echo_stdin.sh | 9 - lib/mcp/scripts/echo_stdin.v | 33 - lib/mcp/scripts/run_server | Bin 1739384 -> 0 bytes lib/mcp/scripts/run_server.v | 11 - lib/mcp/server.v | 16 +- lib/mcp/tool_handler.v | 2 +- lib/mcp/v_do/.gitignore | 2 +- lib/mcp/v_do/test_client.vsh | 176 ++-- lib/mcp/v_do/v_do | Bin 1890360 -> 0 bytes lib/mcp/v_do/vdo.v | 44 +- lib/osal/startupmanager/startupmanager.v | 4 +- lib/schemas/jsonrpc/client.v | 16 +- lib/schemas/jsonrpc/client_test.v | 6 +- lib/schemas/jsonrpc/handler.v | 6 +- lib/schemas/jsonrpc/handler_test.v | 22 +- lib/schemas/jsonrpc/model_error.v | 34 +- lib/schemas/jsonrpc/model_notification.v | 30 +- lib/schemas/jsonrpc/model_request.v | 44 +- lib/schemas/jsonrpc/model_request_test.v | 32 +- lib/schemas/jsonrpc/model_response.v | 84 +- lib/schemas/jsonrpc/model_response_test.v | 98 ++- .../testdata/testserver/openrpc_server.v | 8 +- lib/schemas/jsonschema/codegen/codegen.v | 67 +- lib/schemas/jsonschema/codegen/codegen_test.v | 50 +- lib/schemas/jsonschema/codegen/generate.v | 24 +- .../jsonschema/codegen/generate_test.v | 8 +- lib/schemas/jsonschema/consts_numeric.v | 91 ++- lib/schemas/jsonschema/decode.v | 2 +- lib/schemas/jsonschema/decode_test.v | 12 +- lib/schemas/jsonschema/model.v | 117 ++- .../openapi/codegen/client_typescript.v | 55 +- .../openapi/codegen/client_typescript_test.v | 40 +- lib/schemas/openapi/codegen/to_code.v | 32 +- lib/schemas/openapi/controller_http.v | 336 ++++---- lib/schemas/openapi/controller_playground.v | 32 +- lib/schemas/openapi/decode.v | 25 +- lib/schemas/openapi/decode_test.v | 70 +- lib/schemas/openapi/factory.v | 109 +-- lib/schemas/openapi/handler.v | 30 +- lib/schemas/openapi/model.v | 244 +++--- lib/schemas/openrpc/codegen/generate.v | 21 +- lib/schemas/openrpc/codegen/generate_client.v | 14 +- .../openrpc/codegen/generate_handler.v | 18 +- .../openrpc/codegen/generate_interface.v | 17 +- lib/schemas/openrpc/codegen/generate_model.v | 2 +- lib/schemas/openrpc/codegen/to_code.v | 12 +- lib/schemas/openrpc/controller_http.v | 40 +- lib/schemas/openrpc/controller_http_test.v | 44 +- lib/schemas/openrpc/controller_ws.v | 8 +- lib/schemas/openrpc/decode.v | 6 +- lib/schemas/openrpc/decode_test.v | 2 +- lib/schemas/openrpc/encode_test.v | 34 +- lib/schemas/openrpc/factory.v | 10 +- lib/schemas/openrpc/handler.v | 10 +- lib/schemas/openrpc/inflate.v | 36 +- lib/schemas/openrpc/model.v | 8 +- lib/schemas/openrpc/parse_example.v | 8 +- lib/schemas/openrpc/parse_example_test.v | 12 +- lib/schemas/openrpc/playground.v | 6 +- lib/threefold/grid3/deployer/deployment.v | 2 +- .../grid3/deployer/tfgrid3deployer_factory_.v | 4 +- .../grid3/deployer/tfgrid3deployer_model.v | 32 +- lib/threefold/grid3/deployer/vmachine.v | 47 +- lib/threefold/grid3/deployer/zdbs.v | 14 +- lib/threefold/grid3/models/deployment.v | 1 + lib/threefold/grid3/models/workload.v | 1 - lib/threefold/grid3/models/zdb.v | 3 +- lib/threefold/grid3/models/zmachine.v | 13 +- lib/threefold/grid3/models/znet.v | 12 +- lib/threefold/grid4/cloudslices/model_node.v | 35 +- .../grid4/cloudslices/model_node_template.v | 5 +- lib/vfs/vfs_db/database_get.v | 35 +- lib/vfs/vfs_db/database_get_test.v | 58 +- lib/vfs/vfs_db/database_set.v | 20 +- lib/vfs/vfs_db/decode.v | 12 +- lib/vfs/vfs_db/encode.v | 2 +- lib/vfs/vfs_db/encode_test.v | 2 +- lib/vfs/vfs_db/factory.v | 8 +- lib/vfs/vfs_db/factory_test.v | 8 +- lib/vfs/vfs_db/model_directory_test.v | 96 +-- lib/vfs/vfs_db/model_file.v | 2 +- lib/vfs/vfs_db/model_file_test.v | 166 ++-- lib/vfs/vfs_db/model_fsentry_test.v | 138 ++-- lib/vfs/vfs_db/model_symlink_test.v | 120 +-- lib/vfs/vfs_db/vfs_directory.v | 120 ++- lib/vfs/vfs_db/vfs_directory_test.v | 186 ++--- lib/vfs/vfs_db/vfs_implementation.v | 52 +- lib/vfs/vfs_db/vfs_implementation_test.v | 18 +- lib/vfs/vfs_db/vfs_print_test.v | 92 +-- lib/vfs/vfs_db/vfs_test.v | 120 +-- lib/vfs/vfs_nested/vfsnested.v | 61 +- lib/web/docusaurus/config.v | 60 +- lib/web/docusaurus/config_load.v | 3 +- lib/web/docusaurus/dsite.v | 104 ++- lib/web/docusaurus/dsite_get.v | 26 +- lib/web/docusaurus/factory.v | 4 +- lib/web/docusaurus/play.v | 70 +- lib/web/docusaurus/template.v | 11 +- lib/web/starlight/clean.v | 3 +- lib/web/starlight/config.v | 18 +- lib/web/starlight/factory.v | 4 +- lib/web/starlight/site.v | 42 +- lib/web/starlight/site_get.v | 30 +- lib/web/starlight/template.v | 15 +- 371 files changed, 8238 insertions(+), 9082 deletions(-) rename {lib/mcp => TOSORT}/developer/README.md (100%) rename {lib/mcp => TOSORT}/developer/developer.v (79%) rename {lib/mcp => TOSORT}/developer/generate_mcp.v (97%) rename {lib/mcp => TOSORT}/developer/generate_mcp_helpers.v (90%) create mode 100644 TOSORT/developer/generate_mcp_test.v rename {lib/mcp => TOSORT}/developer/generate_mcp_tools.v (52%) create mode 100644 TOSORT/developer/mcp.v rename {lib/mcp => TOSORT}/developer/scripts/run.vsh (85%) rename {lib/mcp => TOSORT}/developer/templates/prompt_generate_mcp.txt (100%) rename {lib/mcp => TOSORT}/developer/templates/tool_code.v.template (100%) rename {lib/mcp => TOSORT}/developer/templates/tool_handler.v.template (100%) rename {lib/mcp => TOSORT}/developer/testdata/mock_module/mock.v (88%) rename {lib/mcp => TOSORT}/developer/testdata/vlang_test_standalone.v (77%) rename {lib/mcp => TOSORT}/developer/vlang.v (81%) rename {lib/mcp => TOSORT}/developer/vlang_test.v (73%) create mode 100644 TOSORT/developer/vlang_tools.v rename {lib/data/ourdb_syncer/examples => examples/data/ourdb_syncer}/db_example.v (100%) rename {lib/data/ourdb_syncer/examples => examples/data/ourdb_syncer}/master_example.v (100%) rename {lib/data/ourdb_syncer/examples => examples/data/ourdb_syncer}/worker_example.v (100%) delete mode 100644 lib/clients/qdrant/collections.v delete mode 100644 lib/clients/qdrant/points.v delete mode 100644 lib/clients/qdrant/qdrant_client.v delete mode 100644 lib/clients/qdrant/qdrant_client_test.v delete mode 100755 lib/mcp/baobab/scripts/run delete mode 100755 lib/mcp/baobab/scripts/run.vsh delete mode 100644 lib/mcp/developer/generate_mcp_test.v delete mode 100644 lib/mcp/developer/mcp.v delete mode 100755 lib/mcp/developer/scripts/run delete mode 100644 lib/mcp/developer/vlang_tools.v delete mode 100644 lib/mcp/scripts/.gitignore delete mode 100755 lib/mcp/scripts/echo_stdin delete mode 100755 lib/mcp/scripts/echo_stdin.sh delete mode 100644 lib/mcp/scripts/echo_stdin.v delete mode 100755 lib/mcp/scripts/run_server delete mode 100755 lib/mcp/scripts/run_server.v delete mode 100755 lib/mcp/v_do/v_do diff --git a/lib/mcp/developer/README.md b/TOSORT/developer/README.md similarity index 100% rename from lib/mcp/developer/README.md rename to TOSORT/developer/README.md diff --git a/lib/mcp/developer/developer.v b/TOSORT/developer/developer.v similarity index 79% rename from lib/mcp/developer/developer.v rename to TOSORT/developer/developer.v index acf04d69..ff1119b6 100644 --- a/lib/mcp/developer/developer.v +++ b/TOSORT/developer/developer.v @@ -1,27 +1,30 @@ module developer +import freeflowuniverse.herolib.mcp @[heap] pub struct Developer {} - pub fn result_to_mcp_tool_contents[T](result T) []mcp.ToolContent { return [result_to_mcp_tool_content(result)] } pub fn result_to_mcp_tool_content[T](result T) mcp.ToolContent { return $if T is string { - mcp.ToolContent{ - typ: 'text' + mcp.ToolContent + { + typ: 'text' text: result.str() } } $else $if T is int { - mcp.ToolContent{ - typ: 'number' + mcp.ToolContent + { + typ: 'number' number: result.int() } } $else $if T is bool { - mcp.ToolContent{ - typ: 'boolean' + mcp.ToolContent + { + typ: 'boolean' boolean: result.bool() } } $else $if result is $array { @@ -29,8 +32,9 @@ pub fn result_to_mcp_tool_content[T](result T) mcp.ToolContent { for item in result { items << result_to_mcp_tool_content(item) } - return mcp.ToolContent{ - typ: 'array' + return mcp.ToolContent + { + typ: 'array' items: items } } $else $if T is $struct { @@ -38,8 +42,9 @@ pub fn result_to_mcp_tool_content[T](result T) mcp.ToolContent { $for field in T.fields { properties[field.name] = result_to_mcp_tool_content(result.$(field.name)) } - return mcp.ToolContent{ - typ: 'object' + return mcp.ToolContent + { + typ: 'object' properties: properties } } $else { @@ -53,4 +58,4 @@ pub fn array_to_mcp_tool_contents[U](array []U) []mcp.ToolContent { contents << result_to_mcp_tool_content(item) } return contents -} \ No newline at end of file +} diff --git a/lib/mcp/developer/generate_mcp.v b/TOSORT/developer/generate_mcp.v similarity index 97% rename from lib/mcp/developer/generate_mcp.v rename to TOSORT/developer/generate_mcp.v index cbd075ba..a02b6e27 100644 --- a/lib/mcp/developer/generate_mcp.v +++ b/TOSORT/developer/generate_mcp.v @@ -2,10 +2,17 @@ module developer import freeflowuniverse.herolib.core.code import freeflowuniverse.herolib.mcp +import os // create_mcp_tool_code receives the name of a V language function string, and the path to the module in which it exists. // returns an MCP Tool code in v for attaching the function to the mcp server pub fn (d &Developer) create_mcp_tool_code(function_name string, module_path string) !string { + println('DEBUG: Looking for function ${function_name} in module path: ${module_path}') + if !os.exists(module_path) { + println('DEBUG: Module path does not exist: ${module_path}') + return error('Module path does not exist: ${module_path}') + } + function_ := get_function_from_module(module_path, function_name)! println('Function string found:\n${function_}') @@ -381,4 +388,4 @@ fn parse_struct_fields(struct_def string) map[string]string { } return fields -} \ No newline at end of file +} diff --git a/lib/mcp/developer/generate_mcp_helpers.v b/TOSORT/developer/generate_mcp_helpers.v similarity index 90% rename from lib/mcp/developer/generate_mcp_helpers.v rename to TOSORT/developer/generate_mcp_helpers.v index 999c6fdd..2600a971 100644 --- a/lib/mcp/developer/generate_mcp_helpers.v +++ b/TOSORT/developer/generate_mcp_helpers.v @@ -1,7 +1,7 @@ module developer import freeflowuniverse.herolib.mcp -import x.json2 {Any} +import x.json2 pub fn result_to_mcp_tool_contents[T](result T) []mcp.ToolContent { return [result_to_mcp_tool_content(result)] @@ -10,17 +10,17 @@ pub fn result_to_mcp_tool_contents[T](result T) []mcp.ToolContent { pub fn result_to_mcp_tool_content[T](result T) mcp.ToolContent { return $if T is string { mcp.ToolContent{ - typ: 'text' + typ: 'text' text: result.str() } } $else $if T is int { mcp.ToolContent{ - typ: 'number' + typ: 'number' number: result.int() } } $else $if T is bool { mcp.ToolContent{ - typ: 'boolean' + typ: 'boolean' boolean: result.bool() } } $else $if result is $array { @@ -29,7 +29,7 @@ pub fn result_to_mcp_tool_content[T](result T) mcp.ToolContent { items << result_to_mcp_tool_content(item) } return mcp.ToolContent{ - typ: 'array' + typ: 'array' items: items } } $else $if T is $struct { @@ -38,7 +38,7 @@ pub fn result_to_mcp_tool_content[T](result T) mcp.ToolContent { properties[field.name] = result_to_mcp_tool_content(result.$(field.name)) } return mcp.ToolContent{ - typ: 'object' + typ: 'object' properties: properties } } $else { @@ -52,4 +52,4 @@ pub fn array_to_mcp_tool_contents[U](array []U) []mcp.ToolContent { contents << result_to_mcp_tool_content(item) } return contents -} \ No newline at end of file +} diff --git a/TOSORT/developer/generate_mcp_test.v b/TOSORT/developer/generate_mcp_test.v new file mode 100644 index 00000000..d386ac4a --- /dev/null +++ b/TOSORT/developer/generate_mcp_test.v @@ -0,0 +1,205 @@ +module developer + +import freeflowuniverse.herolib.mcp +import json +import os + +// fn test_parse_struct_fields() { +// // Test case 1: Simple struct with primitive types +// simple_struct := 'pub struct User { +// name string +// age int +// active bool +// }' + +// fields := parse_struct_fields(simple_struct) +// assert fields.len == 3 +// assert fields['name'] == 'string' +// assert fields['age'] == 'int' +// assert fields['active'] == 'bool' + +// // Test case 2: Struct with pub: and mut: sections +// complex_struct := 'pub struct Config { +// pub: +// host string +// port int +// mut: +// connected bool +// retries int +// }' + +// fields2 := parse_struct_fields(complex_struct) +// assert fields2.len == 4 +// assert fields2['host'] == 'string' +// assert fields2['port'] == 'int' +// assert fields2['connected'] == 'bool' +// assert fields2['retries'] == 'int' + +// // Test case 3: Struct with attributes and comments +// struct_with_attrs := 'pub struct ApiResponse { +// // User ID +// id int +// // User full name +// name string @[json: "full_name"] +// // Whether account is active +// active bool +// }' + +// fields3 := parse_struct_fields(struct_with_attrs) +// assert fields3.len == 3 // All fields are included +// assert fields3['id'] == 'int' +// assert fields3['active'] == 'bool' + +// // Test case 4: Empty struct +// empty_struct := 'pub struct Empty {}' +// fields4 := parse_struct_fields(empty_struct) +// assert fields4.len == 0 + +// println('test_parse_struct_fields passed') +// } + +// fn test_create_mcp_tool_input_schema() { +// d := Developer{} + +// // Test case 1: Primitive types +// string_schema := d.create_mcp_tool_input_schema('string') or { panic(err) } +// assert string_schema.typ == 'string' + +// int_schema := d.create_mcp_tool_input_schema('int') or { panic(err) } +// assert int_schema.typ == 'integer' + +// float_schema := d.create_mcp_tool_input_schema('float') or { panic(err) } +// assert float_schema.typ == 'number' + +// bool_schema := d.create_mcp_tool_input_schema('bool') or { panic(err) } +// assert bool_schema.typ == 'boolean' + +// // Test case 2: Array type +// array_schema := d.create_mcp_tool_input_schema('[]string') or { panic(err) } +// assert array_schema.typ == 'array' +// // In our implementation, arrays don't have items directly in the schema + +// // Test case 3: Struct type +// struct_def := 'pub struct Person { +// name string +// age int +// }' + +// struct_schema := d.create_mcp_tool_input_schema(struct_def) or { panic(err) } +// assert struct_schema.typ == 'object' +// assert struct_schema.properties.len == 2 +// assert struct_schema.properties['name'].typ == 'string' +// assert struct_schema.properties['age'].typ == 'integer' + +// println('test_create_mcp_tool_input_schema passed') +// } + +// fn test_create_mcp_tool() { +// d := Developer{} + +// // Test case 1: Simple function with primitive types +// simple_fn := '// Get user by ID +// // Returns user information +// pub fn get_user(id int, include_details bool) { +// // Implementation +// }' + +// tool1 := d.create_mcp_tool(simple_fn, {}) or { panic(err) } +// assert tool1.name == 'get_user' +// expected_desc1 := 'Get user by ID\nReturns user information' +// assert tool1.description == expected_desc1 +// assert tool1.input_schema.typ == 'object' +// assert tool1.input_schema.properties.len == 2 +// assert tool1.input_schema.properties['id'].typ == 'integer' +// assert tool1.input_schema.properties['include_details'].typ == 'boolean' +// assert tool1.input_schema.required.len == 2 +// assert 'id' in tool1.input_schema.required +// assert 'include_details' in tool1.input_schema.required + +// // Test case 2: Method with receiver +// method_fn := '// Update user profile +// pub fn (u User) update_profile(name string, age int) bool { +// // Implementation +// return true +// }' + +// tool2 := d.create_mcp_tool(method_fn, {}) or { panic(err) } +// assert tool2.name == 'update_profile' +// assert tool2.description == 'Update user profile' +// assert tool2.input_schema.properties.len == 2 +// assert tool2.input_schema.properties['name'].typ == 'string' +// assert tool2.input_schema.properties['age'].typ == 'integer' + +// // Test case 3: Function with complex types +// complex_fn := '// Create new configuration +// // Sets up system configuration +// fn create_config(name string, settings Config) !Config { +// // Implementation +// }' + +// config_struct := 'pub struct Config { +// server_url string +// max_retries int +// timeout float +// }' + +// tool3 := d.create_mcp_tool(complex_fn, { +// 'Config': config_struct +// }) or { panic(err) } +// assert tool3.name == 'create_config' +// expected_desc3 := 'Create new configuration\nSets up system configuration' +// assert tool3.description == expected_desc3 +// assert tool3.input_schema.properties.len == 2 +// assert tool3.input_schema.properties['name'].typ == 'string' +// assert tool3.input_schema.properties['settings'].typ == 'object' + +// // Test case 4: Function with no parameters +// no_params_fn := '// Initialize system +// pub fn initialize() { +// // Implementation +// }' + +// tool4 := d.create_mcp_tool(no_params_fn, {}) or { panic(err) } +// assert tool4.name == 'initialize' +// assert tool4.description == 'Initialize system' +// assert tool4.input_schema.properties.len == 0 +// assert tool4.input_schema.required.len == 0 + +// println('test_create_mcp_tool passed') +// } + +// fn test_create_mcp_tool_code() { +// d := Developer{} + +// // Test with the complex function that has struct parameters and return type +// module_path := "${os.dir(@FILE)}/testdata/mock_module" +// function_name := 'test_function' + +// code := d.create_mcp_tool_code(function_name, module_path) or { +// panic('Failed to create MCP tool code: ${err}') +// } + +// // Print the code instead of panic for debugging +// println('Generated code:') +// println('----------------------------------------') +// println(code) +// println('----------------------------------------') + +// // Verify the generated code contains the expected elements +// assert code.contains('test_function_tool') +// assert code.contains('TestConfig') +// assert code.contains('TestResult') + +// // Test with a simple function that has primitive types +// simple_function_name := 'simple_function' +// simple_code := d.create_mcp_tool_code(simple_function_name, module_path) or { +// panic('Failed to create MCP tool code for simple function: ${err}') +// } + +// // Verify the simple function code +// assert simple_code.contains('simple_function_tool') +// assert simple_code.contains('name string') +// assert simple_code.contains('count int') + +// // println('test_create_mcp_tool_code passed') +// } diff --git a/lib/mcp/developer/generate_mcp_tools.v b/TOSORT/developer/generate_mcp_tools.v similarity index 52% rename from lib/mcp/developer/generate_mcp_tools.v rename to TOSORT/developer/generate_mcp_tools.v index d4413cd1..9195e3c9 100644 --- a/lib/mcp/developer/generate_mcp_tools.v +++ b/TOSORT/developer/generate_mcp_tools.v @@ -1,32 +1,35 @@ module developer import freeflowuniverse.herolib.mcp -import x.json2 as json {Any} +import x.json2 as json { Any } // import json const create_mcp_tool_code_tool = mcp.Tool{ - name: 'create_mcp_tool_code' - description: 'create_mcp_tool_code receives the name of a V language function string, and the path to the module in which it exists. + name: 'create_mcp_tool_code' + description: 'create_mcp_tool_code receives the name of a V language function string, and the path to the module in which it exists. returns an MCP Tool code in v for attaching the function to the mcp server' - input_schema: mcp.ToolInputSchema{ - typ: 'object' - properties: {'function_name': mcp.ToolProperty{ - typ: 'string' - items: mcp.ToolItems{ - typ: '' - enum: [] - } - enum: [] - }, 'module_path': mcp.ToolProperty{ - typ: 'string' - items: mcp.ToolItems{ - typ: '' - enum: [] - } - enum: [] - }} - required: ['function_name', 'module_path'] - } + input_schema: mcp.ToolInputSchema{ + typ: 'object' + properties: { + 'function_name': mcp.ToolProperty{ + typ: 'string' + items: mcp.ToolItems{ + typ: '' + enum: [] + } + enum: [] + } + 'module_path': mcp.ToolProperty{ + typ: 'string' + items: mcp.ToolItems{ + typ: '' + enum: [] + } + enum: [] + } + } + required: ['function_name', 'module_path'] + } } pub fn (d &Developer) create_mcp_tool_code_tool_handler(arguments map[string]Any) !mcp.ToolCallResult { @@ -37,59 +40,56 @@ pub fn (d &Developer) create_mcp_tool_code_tool_handler(arguments map[string]Any } return mcp.ToolCallResult{ is_error: false - content: result_to_mcp_tool_contents[string](result) + content: result_to_mcp_tool_contents[string](result) } } // Tool definition for the create_mcp_tool function const create_mcp_tool_tool = mcp.Tool{ - name: 'create_mcp_tool' - description: 'Parses a V language function string and returns an MCP Tool struct. This tool analyzes function signatures, extracts parameters, and generates the appropriate MCP Tool representation.' + name: 'create_mcp_tool' + description: 'Parses a V language function string and returns an MCP Tool struct. This tool analyzes function signatures, extracts parameters, and generates the appropriate MCP Tool representation.' input_schema: mcp.ToolInputSchema{ - typ: 'object' + typ: 'object' properties: { 'function': mcp.ToolProperty{ typ: 'string' } - 'types': mcp.ToolProperty{ + 'types': mcp.ToolProperty{ typ: 'object' } } - required: ['function'] + required: ['function'] } } pub fn (d &Developer) create_mcp_tool_tool_handler(arguments map[string]Any) !mcp.ToolCallResult { function := arguments['function'].str() types := json.decode[map[string]string](arguments['types'].str())! - result := d.create_mcp_tool(function, types) or { - return mcp.error_tool_call_result(err) - } + result := d.create_mcp_tool(function, types) or { return mcp.error_tool_call_result(err) } return mcp.ToolCallResult{ is_error: false - content: result_to_mcp_tool_contents[string](result.str()) + content: result_to_mcp_tool_contents[string](result.str()) } } - // Tool definition for the create_mcp_tool_handler function const create_mcp_tool_handler_tool = mcp.Tool{ - name: 'create_mcp_tool_handler' - description: 'Generates a tool handler for the create_mcp_tool function. This tool handler accepts function string and types map and returns an MCP ToolCallResult.' + name: 'create_mcp_tool_handler' + description: 'Generates a tool handler for the create_mcp_tool function. This tool handler accepts function string and types map and returns an MCP ToolCallResult.' input_schema: mcp.ToolInputSchema{ - typ: 'object' + typ: 'object' properties: { 'function': mcp.ToolProperty{ typ: 'string' - }, - 'types': mcp.ToolProperty{ + } + 'types': mcp.ToolProperty{ typ: 'object' - }, - 'result': mcp.ToolProperty{ + } + 'result': mcp.ToolProperty{ typ: 'string' } } - required: ['function', 'result'] + required: ['function', 'result'] } } @@ -103,6 +103,6 @@ pub fn (d &Developer) create_mcp_tool_handler_tool_handler(arguments map[string] } return mcp.ToolCallResult{ is_error: false - content: result_to_mcp_tool_contents[string](result) + content: result_to_mcp_tool_contents[string](result) } } diff --git a/TOSORT/developer/mcp.v b/TOSORT/developer/mcp.v new file mode 100644 index 00000000..f5ee4d97 --- /dev/null +++ b/TOSORT/developer/mcp.v @@ -0,0 +1,31 @@ +module developer + +import freeflowuniverse.herolib.mcp.logger +import freeflowuniverse.herolib.mcp +import freeflowuniverse.herolib.schemas.jsonrpc + +// pub fn new_mcp_server(d &Developer) !&mcp.Server { +// logger.info('Creating new Developer MCP server') + +// // Initialize the server with the empty handlers map +// mut server := mcp.new_server(mcp.MemoryBackend{ +// tools: { +// 'create_mcp_tool': create_mcp_tool_tool +// 'create_mcp_tool_handler': create_mcp_tool_handler_tool +// 'create_mcp_tool_code': create_mcp_tool_code_tool +// } +// tool_handlers: { +// 'create_mcp_tool': d.create_mcp_tool_tool_handler +// 'create_mcp_tool_handler': d.create_mcp_tool_handler_tool_handler +// 'create_mcp_tool_code': d.create_mcp_tool_code_tool_handler +// } +// }, mcp.ServerParams{ +// config: mcp.ServerConfiguration{ +// server_info: mcp.ServerInfo{ +// name: 'developer' +// version: '1.0.0' +// } +// } +// })! +// return server +// } diff --git a/lib/mcp/developer/scripts/run.vsh b/TOSORT/developer/scripts/run.vsh similarity index 85% rename from lib/mcp/developer/scripts/run.vsh rename to TOSORT/developer/scripts/run.vsh index 2bbeb710..7f7dc891 100755 --- a/lib/mcp/developer/scripts/run.vsh +++ b/TOSORT/developer/scripts/run.vsh @@ -5,7 +5,6 @@ import freeflowuniverse.herolib.mcp.logger mut server := developer.new_mcp_server(&developer.Developer{})! server.start() or { - logger.fatal('Error starting server: $err') + logger.fatal('Error starting server: ${err}') exit(1) } - diff --git a/lib/mcp/developer/templates/prompt_generate_mcp.txt b/TOSORT/developer/templates/prompt_generate_mcp.txt similarity index 100% rename from lib/mcp/developer/templates/prompt_generate_mcp.txt rename to TOSORT/developer/templates/prompt_generate_mcp.txt diff --git a/lib/mcp/developer/templates/tool_code.v.template b/TOSORT/developer/templates/tool_code.v.template similarity index 100% rename from lib/mcp/developer/templates/tool_code.v.template rename to TOSORT/developer/templates/tool_code.v.template diff --git a/lib/mcp/developer/templates/tool_handler.v.template b/TOSORT/developer/templates/tool_handler.v.template similarity index 100% rename from lib/mcp/developer/templates/tool_handler.v.template rename to TOSORT/developer/templates/tool_handler.v.template diff --git a/lib/mcp/developer/testdata/mock_module/mock.v b/TOSORT/developer/testdata/mock_module/mock.v similarity index 88% rename from lib/mcp/developer/testdata/mock_module/mock.v rename to TOSORT/developer/testdata/mock_module/mock.v index 3b1fe5b4..4ac7b86d 100644 --- a/lib/mcp/developer/testdata/mock_module/mock.v +++ b/TOSORT/developer/testdata/mock_module/mock.v @@ -3,10 +3,10 @@ module mock_module // TestConfig represents a configuration for testing pub struct TestConfig { pub: - name string + name string enabled bool - count int - value float64 + count int + value float64 } // TestResult represents the result of a test operation @@ -14,7 +14,7 @@ pub struct TestResult { pub: success bool message string - code int + code int } // test_function is a simple function for testing the MCP tool code generation @@ -24,11 +24,11 @@ pub fn test_function(config TestConfig) !TestResult { if config.name == '' { return error('Name cannot be empty') } - + return TestResult{ success: config.enabled message: 'Test completed for ${config.name}' - code: if config.enabled { 0 } else { 1 } + code: if config.enabled { 0 } else { 1 } } } diff --git a/lib/mcp/developer/testdata/vlang_test_standalone.v b/TOSORT/developer/testdata/vlang_test_standalone.v similarity index 77% rename from lib/mcp/developer/testdata/vlang_test_standalone.v rename to TOSORT/developer/testdata/vlang_test_standalone.v index 267b6585..ef1fd6c6 100644 --- a/lib/mcp/developer/testdata/vlang_test_standalone.v +++ b/TOSORT/developer/testdata/vlang_test_standalone.v @@ -12,22 +12,22 @@ fn get_type_from_module(module_path string, type_name string) !string { } for v_file in v_files { - content := os.read_file(v_file) or { - return error('Failed to read file ${v_file}: ${err}') - } - + content := os.read_file(v_file) or { return error('Failed to read file ${v_file}: ${err}') } + type_str := 'struct ${type_name} {' i := content.index(type_str) or { -1 } - if i == -1 { continue } + if i == -1 { + continue + } start_i := i + type_str.len closing_i := find_closing_brace(content, start_i) or { return error('could not find where declaration for type ${type_name} ends') } - + return content.substr(start_i, closing_i + 1) } - + return error('type ${type_name} not found in module ${module_path}') } @@ -49,10 +49,8 @@ fn find_closing_brace(content string, start_i int) ?int { // Helper function to list V files fn list_v_files(dir string) ![]string { - files := os.ls(dir) or { - return error('Error listing directory: $err') - } - + files := os.ls(dir) or { return error('Error listing directory: ${err}') } + mut v_files := []string{} for file in files { if file.ends_with('.v') && !file.ends_with('_.v') { @@ -60,7 +58,7 @@ fn list_v_files(dir string) ![]string { v_files << filepath } } - + return v_files } @@ -69,9 +67,9 @@ fn create_test_files() !(string, string, string) { // Create a temporary directory for our test files test_dir := os.temp_dir() test_file_path := os.join_path(test_dir, 'test_type.v') - + // Create a test file with a simple struct - test_content := "module test_module + test_content := 'module test_module struct TestType { name string @@ -83,14 +81,14 @@ struct TestType { struct OtherType { id string } -" +' os.write_file(test_file_path, test_content) or { - eprintln('Failed to create test file: $err') - return error('Failed to create test file: $err') + eprintln('Failed to create test file: ${err}') + return error('Failed to create test file: ${err}') } - + // Create a test file with a nested struct - nested_test_content := "module test_module + nested_test_content := 'module test_module struct NestedType { config map[string]string { @@ -101,13 +99,13 @@ struct NestedType { value string } } -" +' nested_test_file := os.join_path(test_dir, 'nested_test.v') os.write_file(nested_test_file, nested_test_content) or { - eprintln('Failed to create nested test file: $err') - return error('Failed to create nested test file: $err') + eprintln('Failed to create nested test file: ${err}') + return error('Failed to create nested test file: ${err}') } - + return test_dir, test_file_path, nested_test_file } @@ -115,22 +113,22 @@ struct NestedType { fn test_get_type_from_module() { // Create test files test_dir, test_file_path, nested_test_file := create_test_files() or { - eprintln('Failed to create test files: $err') + eprintln('Failed to create test files: ${err}') assert false return } // Test case 1: Get a simple struct type_content := get_type_from_module(test_dir, 'TestType') or { - eprintln('Failed to get type: $err') + eprintln('Failed to get type: ${err}') assert false return } - + // Verify the content matches what we expect - expected := "\n\tname string\n\tage int\n\tactive bool\n}" - assert type_content == expected, 'Expected: "$expected", got: "$type_content"' - + expected := '\n\tname string\n\tage int\n\tactive bool\n}' + assert type_content == expected, 'Expected: "${expected}", got: "${type_content}"' + // Test case 2: Try to get a non-existent type non_existent := get_type_from_module(test_dir, 'NonExistentType') or { // This should fail, so we expect an error @@ -138,21 +136,21 @@ fn test_get_type_from_module() { '' } assert non_existent == '', 'Expected empty string for non-existent type' - + // Test case 3: Test with nested braces in the struct nested_type_content := get_type_from_module(test_dir, 'NestedType') or { - eprintln('Failed to get nested type: $err') + eprintln('Failed to get nested type: ${err}') assert false return } - - expected_nested := "\n\tconfig map[string]string {\n\t\trequired: true\n\t}\n\tdata []struct {\n\t\tkey string\n\t\tvalue string\n\t}\n}" - assert nested_type_content == expected_nested, 'Expected: "$expected_nested", got: "$nested_type_content"' - + + expected_nested := '\n\tconfig map[string]string {\n\t\trequired: true\n\t}\n\tdata []struct {\n\t\tkey string\n\t\tvalue string\n\t}\n}' + assert nested_type_content == expected_nested, 'Expected: "${expected_nested}", got: "${nested_type_content}"' + // Clean up test files os.rm(test_file_path) or {} os.rm(nested_test_file) or {} - + println('All tests for get_type_from_module passed successfully!') } diff --git a/lib/mcp/developer/vlang.v b/TOSORT/developer/vlang.v similarity index 81% rename from lib/mcp/developer/vlang.v rename to TOSORT/developer/vlang.v index a076c588..936f5a6e 100644 --- a/lib/mcp/developer/vlang.v +++ b/TOSORT/developer/vlang.v @@ -7,7 +7,7 @@ import log fn get_module_dir(mod string) string { module_parts := mod.trim_string_left('freeflowuniverse.herolib').split('.') - return '${os.home_dir()}/code/github/freeflowuniverse/herolib/lib/${module_parts.join("/")}' + return '${os.home_dir()}/code/github/freeflowuniverse/herolib/lib/${module_parts.join('/')}' } // given a module path and a type name, returns the type definition of that type within that module @@ -20,25 +20,23 @@ fn get_type_from_module(module_path string, type_name string) !string { for v_file in v_files { println('Checking file: ${v_file}') - content := os.read_file(v_file) or { - return error('Failed to read file ${v_file}: ${err}') - } + content := os.read_file(v_file) or { return error('Failed to read file ${v_file}: ${err}') } - // Look for both regular and pub struct declarations mut type_str := 'struct ${type_name} {' mut i := content.index(type_str) or { -1 } mut is_pub := false - + if i == -1 { // Try with pub struct type_str = 'pub struct ${type_name} {' i = content.index(type_str) or { -1 } is_pub = true } - - if i == -1 { - type_import := content.split_into_lines().filter(it.contains('import') && it.contains(type_name)) + + if i == -1 { + type_import := content.split_into_lines().filter(it.contains('import') + && it.contains(type_name)) if type_import.len > 0 { log.debug('debugzoooo') mod := type_import[0].trim_space().trim_string_left('import ').all_before(' ') @@ -51,22 +49,22 @@ fn get_type_from_module(module_path string, type_name string) !string { // Find the start of the struct definition including comments mut comment_start := i mut line_start := i - + // Find the start of the line containing the struct definition for j := i; j >= 0; j-- { - if j == 0 || content[j-1] == `\n` { + if j == 0 || content[j - 1] == `\n` { line_start = j break } } - + // Find the start of the comment block (if any) for j := line_start - 1; j >= 0; j-- { if j == 0 { comment_start = 0 break } - + // If we hit a blank line or a non-comment line, stop if content[j] == `\n` { if j > 0 && j < content.len - 1 { @@ -84,15 +82,15 @@ fn get_type_from_module(module_path string, type_name string) !string { closing_i := find_closing_brace(content, i + type_str.len) or { return error('could not find where declaration for type ${type_name} ends') } - + // Get the full struct definition including the struct declaration line full_struct := content.substr(line_start, closing_i + 1) println('Found struct definition:\n${full_struct}') - + // Return the full struct definition return full_struct } - + return error('type ${type_name} not found in module ${module_path}') } @@ -108,17 +106,17 @@ fn get_function_from_module(module_path string, function_name string) !string { println('Found ${v_files.len} V files in ${module_path}') for v_file in v_files { println('Checking file: ${v_file}') - result := get_function_from_file(v_file, function_name) or { + result := get_function_from_file(v_file, function_name) or { println('Function not found in ${v_file}: ${err}') - continue + continue } println('Found function ${function_name} in ${v_file}') return result } - + return error('function ${function_name} not found in module ${module_path}') } - + fn find_closing_brace(content string, start_i int) ?int { mut brace_count := 1 for i := start_i; i < content.len; i++ { @@ -134,9 +132,6 @@ fn find_closing_brace(content string, start_i int) ?int { return none } - - - // get_function_from_file parses a V file and extracts a specific function block including its comments // ARGS: // file_path string - path to the V file @@ -146,16 +141,16 @@ fn get_function_from_file(file_path string, function_name string) !string { content := os.read_file(file_path) or { return error('Failed to read file: ${file_path}: ${err}') } - + lines := content.split_into_lines() mut result := []string{} mut in_function := false mut brace_count := 0 mut comment_block := []string{} - + for i, line in lines { trimmed := line.trim_space() - + // Collect comments that might be above the function if trimmed.starts_with('//') { if !in_function { @@ -165,10 +160,10 @@ fn get_function_from_file(file_path string, function_name string) !string { } continue } - + // Check if we found the function - if !in_function && (trimmed.starts_with('fn ${function_name}(') || - trimmed.starts_with('pub fn ${function_name}(')) { + if !in_function && (trimmed.starts_with('fn ${function_name}(') + || trimmed.starts_with('pub fn ${function_name}(')) { in_function = true // Add collected comments result << comment_block @@ -179,11 +174,11 @@ fn get_function_from_file(file_path string, function_name string) !string { } continue } - + // If we're inside the function, keep track of braces if in_function { result << line - + for c in line { if c == `{` { brace_count++ @@ -191,7 +186,7 @@ fn get_function_from_file(file_path string, function_name string) !string { brace_count-- } } - + // If brace_count is 0, we've reached the end of the function if brace_count == 0 && trimmed.contains('}') { return result.join('\n') @@ -203,20 +198,18 @@ fn get_function_from_file(file_path string, function_name string) !string { } } } - + if !in_function { return error('Function "${function_name}" not found in ${file_path}') } - + return result.join('\n') } // list_v_files returns all .v files in a directory (non-recursive), excluding generated files ending with _.v fn list_v_files(dir string) ![]string { - files := os.ls(dir) or { - return error('Error listing directory: $err') - } - + files := os.ls(dir) or { return error('Error listing directory: ${err}') } + mut v_files := []string{} for file in files { if file.ends_with('.v') && !file.ends_with('_.v') { @@ -224,53 +217,50 @@ fn list_v_files(dir string) ![]string { v_files << filepath } } - + return v_files } // test runs v test on the specified file or directory pub fn vtest(fullpath string) !string { - logger.info('test $fullpath') - if !os.exists(fullpath) { - return error('File or directory does not exist: $fullpath') + logger.info('test ${fullpath}') + if !os.exists(fullpath) { + return error('File or directory does not exist: ${fullpath}') } if os.is_dir(fullpath) { - mut results:="" - for item in list_v_files(fullpath)!{ + mut results := '' + for item in list_v_files(fullpath)! { results += vtest(item)! results += '\n-----------------------\n' } return results - }else{ + } else { cmd := 'v -gc none -stats -enable-globals -show-c-output -keepc -n -w -cg -o /tmp/tester.c -g -cc tcc test ${fullpath}' - logger.debug('Executing command: $cmd') + logger.debug('Executing command: ${cmd}') result := os.execute(cmd) if result.exit_code != 0 { - return error('Test failed for $fullpath with exit code ${result.exit_code}\n${result.output}') + return error('Test failed for ${fullpath} with exit code ${result.exit_code}\n${result.output}') } else { - logger.info('Test completed for $fullpath') + logger.info('Test completed for ${fullpath}') } - return 'Command: $cmd\nExit code: ${result.exit_code}\nOutput:\n${result.output}' + return 'Command: ${cmd}\nExit code: ${result.exit_code}\nOutput:\n${result.output}' } } - // vvet runs v vet on the specified file or directory pub fn vvet(fullpath string) !string { - logger.info('vet $fullpath') + logger.info('vet ${fullpath}') if !os.exists(fullpath) { - return error('File or directory does not exist: $fullpath') + return error('File or directory does not exist: ${fullpath}') } if os.is_dir(fullpath) { - mut results := "" - files := list_v_files(fullpath) or { - return error('Error listing V files: $err') - } + mut results := '' + files := list_v_files(fullpath) or { return error('Error listing V files: ${err}') } for file in files { results += vet_file(file) or { - logger.error('Failed to vet $file: $err') - return error('Failed to vet $file: $err') + logger.error('Failed to vet ${file}: ${err}') + return error('Failed to vet ${file}: ${err}') } results += '\n-----------------------\n' } @@ -283,14 +273,14 @@ pub fn vvet(fullpath string) !string { // vet_file runs v vet on a single file fn vet_file(file string) !string { cmd := 'v vet -v -w ${file}' - logger.debug('Executing command: $cmd') + logger.debug('Executing command: ${cmd}') result := os.execute(cmd) if result.exit_code != 0 { - return error('Vet failed for $file with exit code ${result.exit_code}\n${result.output}') + return error('Vet failed for ${file} with exit code ${result.exit_code}\n${result.output}') } else { - logger.info('Vet completed for $file') + logger.info('Vet completed for ${file}') } - return 'Command: $cmd\nExit code: ${result.exit_code}\nOutput:\n${result.output}' + return 'Command: ${cmd}\nExit code: ${result.exit_code}\nOutput:\n${result.output}' } -// cmd := 'v -gc none -stats -enable-globals -show-c-output -keepc -n -w -cg -o /tmp/tester.c -g -cc tcc ${fullpath}' \ No newline at end of file +// cmd := 'v -gc none -stats -enable-globals -show-c-output -keepc -n -w -cg -o /tmp/tester.c -g -cc tcc ${fullpath}' diff --git a/lib/mcp/developer/vlang_test.v b/TOSORT/developer/vlang_test.v similarity index 73% rename from lib/mcp/developer/vlang_test.v rename to TOSORT/developer/vlang_test.v index 0093a00c..3ec33054 100644 --- a/lib/mcp/developer/vlang_test.v +++ b/TOSORT/developer/vlang_test.v @@ -12,9 +12,9 @@ fn create_test_files() !(string, string, string) { // Create a temporary directory for our test files test_dir := os.temp_dir() test_file_path := os.join_path(test_dir, 'test_type.v') - + // Create a test file with a simple struct - test_content := "module test_module + test_content := 'module test_module struct TestType { name string @@ -26,14 +26,14 @@ struct TestType { struct OtherType { id string } -" +' os.write_file(test_file_path, test_content) or { - eprintln('Failed to create test file: $err') - return error('Failed to create test file: $err') + eprintln('Failed to create test file: ${err}') + return error('Failed to create test file: ${err}') } - + // Create a test file with a nested struct - nested_test_content := "module test_module + nested_test_content := 'module test_module struct NestedType { config map[string]string { @@ -44,13 +44,13 @@ struct NestedType { value string } } -" +' nested_test_file := os.join_path(test_dir, 'nested_test.v') os.write_file(nested_test_file, nested_test_content) or { - eprintln('Failed to create nested test file: $err') - return error('Failed to create nested test file: $err') + eprintln('Failed to create nested test file: ${err}') + return error('Failed to create nested test file: ${err}') } - + return test_dir, test_file_path, nested_test_file } @@ -58,22 +58,22 @@ struct NestedType { fn test_get_type_from_module() { // Create test files test_dir, test_file_path, nested_test_file := create_test_files() or { - eprintln('Failed to create test files: $err') + eprintln('Failed to create test files: ${err}') assert false return } // Test case 1: Get a simple struct type_content := get_type_from_module(test_dir, 'TestType') or { - eprintln('Failed to get type: $err') + eprintln('Failed to get type: ${err}') assert false return } - + // Verify the content matches what we expect - expected := "\n\tname string\n\tage int\n\tactive bool\n}" - assert type_content == expected, 'Expected: "$expected", got: "$type_content"' - + expected := '\n\tname string\n\tage int\n\tactive bool\n}' + assert type_content == expected, 'Expected: "${expected}", got: "${type_content}"' + // Test case 2: Try to get a non-existent type non_existent := get_type_from_module(test_dir, 'NonExistentType') or { // This should fail, so we expect an error @@ -81,20 +81,20 @@ fn test_get_type_from_module() { '' } assert non_existent == '', 'Expected empty string for non-existent type' - + // Test case 3: Test with nested braces in the struct nested_type_content := get_type_from_module(test_dir, 'NestedType') or { - eprintln('Failed to get nested type: $err') + eprintln('Failed to get nested type: ${err}') assert false return } - - expected_nested := "\n\tconfig map[string]string {\n\t\trequired: true\n\t}\n\tdata []struct {\n\t\tkey string\n\t\tvalue string\n\t}\n}" - assert nested_type_content == expected_nested, 'Expected: "$expected_nested", got: "$nested_type_content"' - + + expected_nested := '\n\tconfig map[string]string {\n\t\trequired: true\n\t}\n\tdata []struct {\n\t\tkey string\n\t\tvalue string\n\t}\n}' + assert nested_type_content == expected_nested, 'Expected: "${expected_nested}", got: "${nested_type_content}"' + // Clean up test files os.rm(test_file_path) or {} os.rm(nested_test_file) or {} - + println('All tests for get_type_from_module passed successfully!') } diff --git a/TOSORT/developer/vlang_tools.v b/TOSORT/developer/vlang_tools.v new file mode 100644 index 00000000..95282cde --- /dev/null +++ b/TOSORT/developer/vlang_tools.v @@ -0,0 +1,34 @@ +module developer + +import freeflowuniverse.herolib.mcp + +const get_function_from_file_tool = mcp.Tool{ + name: 'get_function_from_file' + description: 'get_function_from_file parses a V file and extracts a specific function block including its comments +ARGS: +file_path string - path to the V file +function_name string - name of the function to extract +RETURNS: string - the function block including comments, or empty string if not found' + input_schema: mcp.ToolInputSchema{ + typ: 'object' + properties: { + 'file_path': mcp.ToolProperty{ + typ: 'string' + items: mcp.ToolItems{ + typ: '' + enum: [] + } + enum: [] + } + 'function_name': mcp.ToolProperty{ + typ: 'string' + items: mcp.ToolItems{ + typ: '' + enum: [] + } + enum: [] + } + } + required: ['file_path', 'function_name'] + } +} diff --git a/examples/aiexamples/openai_chat_completion.vsh b/examples/aiexamples/openai_chat_completion.vsh index 04741fda..2eb7125e 100755 --- a/examples/aiexamples/openai_chat_completion.vsh +++ b/examples/aiexamples/openai_chat_completion.vsh @@ -10,60 +10,60 @@ fn main() { // Set environment variable for testing // In production, you would set this in your environment // osal.env_set(key: 'JINAKEY', value: 'your-api-key') - + // Check if JINAKEY environment variable exists if !osal.env_exists('JINAKEY') { println('JINAKEY environment variable not set. Please set it before running this example.') exit(1) } - + // Create a Jina client instance mut client := jina.get(name: 'default')! - + println('Jina client initialized successfully.') - + // Example: Create embeddings model := 'jina-embeddings-v3' texts := ['Hello, world!', 'How are you doing?'] - + println('Creating embeddings for texts: ${texts}') result := client.create_embeddings(texts, model, 'retrieval.query')! - + println('Embeddings created successfully.') println('Model: ${result['model']}') println('Data count: ${result['data'].arr().len}') - + // Example: List classifiers println('\nListing classifiers:') classifiers := client.list_classifiers() or { println('Failed to list classifiers: ${err}') return } - + println('Classifiers retrieved successfully.') - + // Example: Create a classifier println('\nTraining a classifier:') examples := [ jina.TrainingExample{ - text: 'This movie was great!' + text: 'This movie was great!' label: 'positive' }, jina.TrainingExample{ - text: 'I did not like this movie.' + text: 'I did not like this movie.' label: 'negative' }, jina.TrainingExample{ - text: 'The movie was okay.' + text: 'The movie was okay.' label: 'neutral' - } + }, ] - + training_result := client.train(examples, model, 'private') or { println('Failed to train classifier: ${err}') return } - + println('Classifier trained successfully.') println('Classifier ID: ${training_result['classifier_id']}') } diff --git a/examples/baobab/generator/basic/generate_actor_module.vsh b/examples/baobab/generator/basic/generate_actor_module.vsh index f6a63b81..79d8076d 100755 --- a/examples/baobab/generator/basic/generate_actor_module.vsh +++ b/examples/baobab/generator/basic/generate_actor_module.vsh @@ -12,12 +12,11 @@ const openrpc_spec_path = os.join_path(example_dir, 'openrpc.json') openrpc_spec := openrpc.new(path: openrpc_spec_path)! actor_spec := specification.from_openrpc(openrpc_spec)! -actor_module := generator.generate_actor_module( - actor_spec, +actor_module := generator.generate_actor_module(actor_spec, interfaces: [.openrpc] )! -actor_module.write(example_dir, - format: true +actor_module.write(example_dir, + format: true overwrite: true -)! \ No newline at end of file +)! diff --git a/examples/baobab/generator/basic/generate_methods.vsh b/examples/baobab/generator/basic/generate_methods.vsh index 35f45811..a9d17dea 100755 --- a/examples/baobab/generator/basic/generate_methods.vsh +++ b/examples/baobab/generator/basic/generate_methods.vsh @@ -13,7 +13,7 @@ openrpc_spec := openrpc.new(path: openrpc_spec_path)! actor_spec := specification.from_openrpc(openrpc_spec)! methods_file := generator.generate_methods_file(actor_spec)! -methods_file.write(example_dir, - format: true +methods_file.write(example_dir, + format: true overwrite: true -)! \ No newline at end of file +)! diff --git a/examples/baobab/generator/basic/generate_openrpc_file.vsh b/examples/baobab/generator/basic/generate_openrpc_file.vsh index 5bef3b21..1a564e5b 100755 --- a/examples/baobab/generator/basic/generate_openrpc_file.vsh +++ b/examples/baobab/generator/basic/generate_openrpc_file.vsh @@ -14,6 +14,6 @@ actor_spec := specification.from_openrpc(openrpc_spec_)! openrpc_spec := actor_spec.to_openrpc() openrpc_file := generator.generate_openrpc_file(openrpc_spec)! -openrpc_file.write(os.join_path(example_dir,'docs'), +openrpc_file.write(os.join_path(example_dir, 'docs'), overwrite: true -)! \ No newline at end of file +)! diff --git a/examples/baobab/generator/geomind_poc/generate.vsh b/examples/baobab/generator/geomind_poc/generate.vsh index f68350d1..a32b8ccd 100755 --- a/examples/baobab/generator/geomind_poc/generate.vsh +++ b/examples/baobab/generator/geomind_poc/generate.vsh @@ -5,7 +5,6 @@ import freeflowuniverse.herolib.baobab.specification import freeflowuniverse.herolib.schemas.openapi import os - const example_dir = os.dir(@FILE) const specs = ['merchant', 'profiler', 'farmer'] @@ -13,13 +12,12 @@ for spec in specs { openapi_spec_path := os.join_path(example_dir, '${spec}.json') openapi_spec := openapi.new(path: openapi_spec_path, process: true)! actor_spec := specification.from_openapi(openapi_spec)! - actor_module := generator.generate_actor_folder( - actor_spec, + actor_module := generator.generate_actor_folder(actor_spec, interfaces: [.openapi, .http] )! - actor_module.write(example_dir, - format: true + actor_module.write(example_dir, + format: true overwrite: true - compile: false + compile: false )! -} \ No newline at end of file +} diff --git a/examples/baobab/generator/geomind_poc/model.v b/examples/baobab/generator/geomind_poc/model.v index d52be1c7..4a047495 100644 --- a/examples/baobab/generator/geomind_poc/model.v +++ b/examples/baobab/generator/geomind_poc/model.v @@ -15,67 +15,67 @@ pub: name string description string // technical specifications - specs map[string]string + specs map[string]string // price per unit - price f64 + price f64 // currency code (e.g., 'USD', 'EUR') - currency string + currency string } pub struct ProductTemplate { pub: - id string - name string - description string + id string + name string + description string // components that make up this product template - components []ProductComponentTemplate + components []ProductComponentTemplate // merchant who created this template - merchant_id string + merchant_id string // category of the product (e.g., 'electronics', 'clothing') - category string + category string // whether this template is available for use - active bool + active bool } pub struct Product { pub: - id string - template_id string + id string + template_id string // specific instance details that may differ from template - name string - description string + name string + description string // actual price of this product instance - price f64 - currency string + price f64 + currency string // merchant selling this product - merchant_id string + merchant_id string // current stock level - stock_quantity int + stock_quantity int // whether this product is available for purchase - available bool + available bool } pub struct OrderItem { pub: - product_id string - quantity int - price f64 - currency string + product_id string + quantity int + price f64 + currency string } pub struct Order { pub: - id string + id string // customer identifier - customer_id string + customer_id string // items in the order - items []OrderItem + items []OrderItem // total order amount - total_amount f64 - currency string + total_amount f64 + currency string // order status (e.g., 'pending', 'confirmed', 'shipped', 'delivered') - status string + status string // timestamps - created_at string - updated_at string + created_at string + updated_at string } diff --git a/examples/baobab/generator/geomind_poc/play.v b/examples/baobab/generator/geomind_poc/play.v index 4f5ff357..746f2b60 100644 --- a/examples/baobab/generator/geomind_poc/play.v +++ b/examples/baobab/generator/geomind_poc/play.v @@ -3,7 +3,7 @@ module geomind_poc import freeflowuniverse.crystallib.core.playbook { PlayBook } // play_commerce processes heroscript actions for the commerce system -pub fn play_commerce(mut plbook playbook.PlayBook) ! { +pub fn play_commerce(mut plbook PlayBook) ! { commerce_actions := plbook.find(filter: 'commerce.')! mut c := Commerce{} @@ -12,20 +12,20 @@ pub fn play_commerce(mut plbook playbook.PlayBook) ! { 'merchant' { mut p := action.params merchant := c.create_merchant( - name: p.get('name')!, - description: p.get_default('description', '')!, - contact: p.get('contact')! + name: p.get('name')! + description: p.get_default('description', '')! + contact: p.get('contact')! )! println('Created merchant: ${merchant.name}') } 'component' { mut p := action.params component := c.create_product_component_template( - name: p.get('name')!, - description: p.get_default('description', '')!, - specs: p.get_map(), - price: p.get_float('price')!, - currency: p.get('currency')! + name: p.get('name')! + description: p.get_default('description', '')! + specs: p.get_map() + price: p.get_float('price')! + currency: p.get('currency')! )! println('Created component: ${component.name}') } @@ -39,30 +39,30 @@ pub fn play_commerce(mut plbook playbook.PlayBook) ! { // In a real implementation, you would fetch the component from storage // For this example, we create a dummy component component := ProductComponentTemplate{ - id: id - name: 'Component' + id: id + name: 'Component' description: '' - specs: map[string]string{} - price: 0 - currency: 'USD' + specs: map[string]string{} + price: 0 + currency: 'USD' } components << component } - + template := c.create_product_template( - name: p.get('name')!, - description: p.get_default('description', '')!, - components: components, - merchant_id: p.get('merchant_id')!, - category: p.get_default('category', 'General')! + name: p.get('name')! + description: p.get_default('description', '')! + components: components + merchant_id: p.get('merchant_id')! + category: p.get_default('category', 'General')! )! println('Created template: ${template.name}') } 'product' { mut p := action.params product := c.create_product( - template_id: p.get('template_id')!, - merchant_id: p.get('merchant_id')!, + template_id: p.get('template_id')! + merchant_id: p.get('merchant_id')! stock_quantity: p.get_int('stock_quantity')! )! println('Created product: ${product.name} with stock: ${product.stock_quantity}') @@ -80,23 +80,23 @@ pub fn play_commerce(mut plbook playbook.PlayBook) ! { } item := OrderItem{ product_id: parts[0] - quantity: parts[1].int() - price: parts[2].f64() - currency: parts[3] + quantity: parts[1].int() + price: parts[2].f64() + currency: parts[3] } items << item } - + order := c.create_order( - customer_id: p.get('customer_id')!, - items: items + customer_id: p.get('customer_id')! + items: items )! println('Created order: ${order.id} with ${order.items.len} items') } 'update_order' { mut p := action.params order := c.update_order_status( - order_id: p.get('order_id')!, + order_id: p.get('order_id')! new_status: p.get('status')! )! println('Updated order ${order.id} status to: ${order.status}') diff --git a/examples/baobab/generator/geomind_poc/server.v b/examples/baobab/generator/geomind_poc/server.v index dc9cd221..6c67984b 100644 --- a/examples/baobab/generator/geomind_poc/server.v +++ b/examples/baobab/generator/geomind_poc/server.v @@ -1,14 +1,15 @@ module geomind_poc import crypto.rand +import time // Commerce represents the main e-commerce server handling all operations pub struct Commerce { mut: - merchants map[string]Merchant - templates map[string]ProductTemplate - products map[string]Product - orders map[string]Order + merchants map[string]Merchant + templates map[string]ProductTemplate + products map[string]Product + orders map[string]Order } // generate_id creates a unique identifier @@ -20,11 +21,11 @@ fn generate_id() string { pub fn (mut c Commerce) create_merchant(name string, description string, contact string) !Merchant { merchant_id := generate_id() merchant := Merchant{ - id: merchant_id - name: name + id: merchant_id + name: name description: description - contact: contact - active: true + contact: contact + active: true } c.merchants[merchant_id] = merchant return merchant @@ -33,12 +34,12 @@ pub fn (mut c Commerce) create_merchant(name string, description string, contact // create_product_component_template creates a new component template pub fn (mut c Commerce) create_product_component_template(name string, description string, specs map[string]string, price f64, currency string) !ProductComponentTemplate { component := ProductComponentTemplate{ - id: generate_id() - name: name + id: generate_id() + name: name description: description - specs: specs - price: price - currency: currency + specs: specs + price: price + currency: currency } return component } @@ -48,15 +49,15 @@ pub fn (mut c Commerce) create_product_template(name string, description string, if merchant_id !in c.merchants { return error('Merchant not found') } - + template := ProductTemplate{ - id: generate_id() - name: name + id: generate_id() + name: name description: description - components: components + components: components merchant_id: merchant_id - category: category - active: true + category: category + active: true } c.templates[template.id] = template return template @@ -70,23 +71,23 @@ pub fn (mut c Commerce) create_product(template_id string, merchant_id string, s if merchant_id !in c.merchants { return error('Merchant not found') } - + template := c.templates[template_id] mut total_price := 0.0 for component in template.components { total_price += component.price } - + product := Product{ - id: generate_id() - template_id: template_id - name: template.name - description: template.description - price: total_price - currency: template.components[0].currency // assuming all components use same currency - merchant_id: merchant_id + id: generate_id() + template_id: template_id + name: template.name + description: template.description + price: total_price + currency: template.components[0].currency // assuming all components use same currency + merchant_id: merchant_id stock_quantity: stock_quantity - available: true + available: true } c.products[product.id] = product return product @@ -96,7 +97,7 @@ pub fn (mut c Commerce) create_product(template_id string, merchant_id string, s pub fn (mut c Commerce) create_order(customer_id string, items []OrderItem) !Order { mut total_amount := 0.0 mut currency := '' - + for item in items { if item.product_id !in c.products { return error('Product not found: ${item.product_id}') @@ -112,19 +113,19 @@ pub fn (mut c Commerce) create_order(customer_id string, items []OrderItem) !Ord return error('Mixed currencies are not supported') } } - + order := Order{ - id: generate_id() - customer_id: customer_id - items: items + id: generate_id() + customer_id: customer_id + items: items total_amount: total_amount - currency: currency - status: 'pending' - created_at: time.now().str() - updated_at: time.now().str() + currency: currency + status: 'pending' + created_at: time.now().str() + updated_at: time.now().str() } c.orders[order.id] = order - + // Update stock quantities for item in items { mut product := c.products[item.product_id] @@ -134,7 +135,7 @@ pub fn (mut c Commerce) create_order(customer_id string, items []OrderItem) !Ord } c.products[item.product_id] = product } - + return order } @@ -143,7 +144,7 @@ pub fn (mut c Commerce) update_order_status(order_id string, new_status string) if order_id !in c.orders { return error('Order not found') } - + mut order := c.orders[order_id] order.status = new_status order.updated_at = time.now().str() @@ -156,7 +157,7 @@ pub fn (c Commerce) get_merchant_products(merchant_id string) ![]Product { if merchant_id !in c.merchants { return error('Merchant not found') } - + mut products := []Product{} for product in c.products.values() { if product.merchant_id == merchant_id { @@ -171,7 +172,7 @@ pub fn (c Commerce) get_merchant_orders(merchant_id string) ![]Order { if merchant_id !in c.merchants { return error('Merchant not found') } - + mut orders := []Order{} for order in c.orders.values() { mut includes_merchant := false diff --git a/examples/baobab/generator/mcc_example.vsh b/examples/baobab/generator/mcc_example.vsh index 26ec5d3a..0356d203 100755 --- a/examples/baobab/generator/mcc_example.vsh +++ b/examples/baobab/generator/mcc_example.vsh @@ -5,20 +5,21 @@ import freeflowuniverse.herolib.baobab.specification import freeflowuniverse.herolib.schemas.openapi import os -const example_dir = os.join_path('${os.home_dir()}/code/github/freeflowuniverse/herolib/lib/circles/mcc', 'baobab') -const openapi_spec_path = os.join_path('${os.home_dir()}/code/github/freeflowuniverse/herolib/lib/circles/mcc', 'openapi.json') +const example_dir = os.join_path('${os.home_dir()}/code/github/freeflowuniverse/herolib/lib/circles/mcc', + 'baobab') +const openapi_spec_path = os.join_path('${os.home_dir()}/code/github/freeflowuniverse/herolib/lib/circles/mcc', + 'openapi.json') // the actor specification obtained from the OpenRPC Specification openapi_spec := openapi.new(path: openapi_spec_path)! actor_spec := specification.from_openapi(openapi_spec)! -actor_module := generator.generate_actor_module( - actor_spec, +actor_module := generator.generate_actor_module(actor_spec, interfaces: [.openapi, .http] )! -actor_module.write(example_dir, - format: true +actor_module.write(example_dir, + format: true overwrite: true - compile: false -)! \ No newline at end of file + compile: false +)! diff --git a/examples/baobab/generator/openapi_e2e/generate_actor_module.vsh b/examples/baobab/generator/openapi_e2e/generate_actor_module.vsh index 7e5cd97f..652fe92c 100755 --- a/examples/baobab/generator/openapi_e2e/generate_actor_module.vsh +++ b/examples/baobab/generator/openapi_e2e/generate_actor_module.vsh @@ -14,15 +14,14 @@ actor_spec := specification.from_openapi(openapi_spec)! println(actor_spec) -actor_module := generator.generate_actor_module( - actor_spec, +actor_module := generator.generate_actor_module(actor_spec, interfaces: [.openapi, .http] )! -actor_module.write(example_dir, - format: false +actor_module.write(example_dir, + format: false overwrite: true - compile: false + compile: false )! -// os.execvp('bash', ['${example_dir}/meeting_scheduler_actor/scripts/run.sh'])! \ No newline at end of file +// os.execvp('bash', ['${example_dir}/meeting_scheduler_actor/scripts/run.sh'])! diff --git a/examples/baobab/specification/openapi_to_specification.vsh b/examples/baobab/specification/openapi_to_specification.vsh index 8808ede2..18447dd8 100755 --- a/examples/baobab/specification/openapi_to_specification.vsh +++ b/examples/baobab/specification/openapi_to_specification.vsh @@ -10,4 +10,4 @@ const openapi_spec_path = os.join_path(example_dir, 'openapi.json') // the actor specification obtained from the OpenRPC Specification openapi_spec := openapi.new(path: openapi_spec_path)! actor_specification := specification.from_openapi(openapi_spec)! -println(actor_specification) \ No newline at end of file +println(actor_specification) diff --git a/examples/baobab/specification/openrpc_to_specification.vsh b/examples/baobab/specification/openrpc_to_specification.vsh index d2f655ab..f40bd9e5 100755 --- a/examples/baobab/specification/openrpc_to_specification.vsh +++ b/examples/baobab/specification/openrpc_to_specification.vsh @@ -10,4 +10,4 @@ const openrpc_spec_path = os.join_path(example_dir, 'openrpc.json') // the actor specification obtained from the OpenRPC Specification openrpc_spec := openrpc.new(path: openrpc_spec_path)! actor_specification := specification.from_openrpc(openrpc_spec)! -println(actor_specification) \ No newline at end of file +println(actor_specification) diff --git a/examples/baobab/specification/specification_to_openapi.vsh b/examples/baobab/specification/specification_to_openapi.vsh index e2207ab7..37a54d62 100755 --- a/examples/baobab/specification/specification_to_openapi.vsh +++ b/examples/baobab/specification/specification_to_openapi.vsh @@ -7,101 +7,101 @@ import freeflowuniverse.herolib.schemas.openrpc import os const actor_specification = specification.ActorSpecification{ - name: 'PetStore' - interfaces: [.openrpc] - methods: [ - specification.ActorMethod{ - name: 'GetPets' - description: 'finds pets in the system that the user has access to by tags and within a limit' - parameters: [ - openrpc.ContentDescriptor{ - name: 'tags' - description: 'tags to filter by' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'array' - items: jsonschema.Items(jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - })) - }) - }, - openrpc.ContentDescriptor{ - name: 'limit' - description: 'maximum number of results to return' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'integer' - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'pet_list' - description: 'all pets from the system, that matches the tags' - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/Pet' - }) - } - }, - specification.ActorMethod{ - name: 'CreatePet' - description: 'creates a new pet in the store. Duplicates are allowed.' - parameters: [ - openrpc.ContentDescriptor{ - name: 'new_pet' - description: 'Pet to add to the store.' - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/NewPet' - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'pet' - description: 'the newly created pet' - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/Pet' - }) - } - }, - specification.ActorMethod{ - name: 'GetPetById' - description: 'gets a pet based on a single ID, if the user has access to the pet' - parameters: [ - openrpc.ContentDescriptor{ - name: 'id' - description: 'ID of pet to fetch' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'integer' - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'pet' - description: 'pet response' - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/Pet' - }) - } - }, - specification.ActorMethod{ - name: 'DeletePetById' - description: 'deletes a single pet based on the ID supplied' - parameters: [ - openrpc.ContentDescriptor{ - name: 'id' - description: 'ID of pet to delete' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'integer' - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'pet' - description: 'pet deleted' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'null' - }) - } - } - ] + name: 'PetStore' + interfaces: [.openrpc] + methods: [ + specification.ActorMethod{ + name: 'GetPets' + description: 'finds pets in the system that the user has access to by tags and within a limit' + parameters: [ + openrpc.ContentDescriptor{ + name: 'tags' + description: 'tags to filter by' + schema: jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'array' + items: jsonschema.Items(jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'string' + })) + }) + }, + openrpc.ContentDescriptor{ + name: 'limit' + description: 'maximum number of results to return' + schema: jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'integer' + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'pet_list' + description: 'all pets from the system, that matches the tags' + schema: jsonschema.SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/Pet' + }) + } + }, + specification.ActorMethod{ + name: 'CreatePet' + description: 'creates a new pet in the store. Duplicates are allowed.' + parameters: [ + openrpc.ContentDescriptor{ + name: 'new_pet' + description: 'Pet to add to the store.' + schema: jsonschema.SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/NewPet' + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'pet' + description: 'the newly created pet' + schema: jsonschema.SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/Pet' + }) + } + }, + specification.ActorMethod{ + name: 'GetPetById' + description: 'gets a pet based on a single ID, if the user has access to the pet' + parameters: [ + openrpc.ContentDescriptor{ + name: 'id' + description: 'ID of pet to fetch' + schema: jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'integer' + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'pet' + description: 'pet response' + schema: jsonschema.SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/Pet' + }) + } + }, + specification.ActorMethod{ + name: 'DeletePetById' + description: 'deletes a single pet based on the ID supplied' + parameters: [ + openrpc.ContentDescriptor{ + name: 'id' + description: 'ID of pet to delete' + schema: jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'integer' + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'pet' + description: 'pet deleted' + schema: jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'null' + }) + } + }, + ] } openapi_specification := actor_specification.to_openapi() -println(json.encode_pretty(openapi_specification)) \ No newline at end of file +println(json.encode_pretty(openapi_specification)) diff --git a/examples/baobab/specification/specification_to_openrpc.vsh b/examples/baobab/specification/specification_to_openrpc.vsh index 04bd391d..91386186 100755 --- a/examples/baobab/specification/specification_to_openrpc.vsh +++ b/examples/baobab/specification/specification_to_openrpc.vsh @@ -8,102 +8,102 @@ import freeflowuniverse.herolib.schemas.openrpc import os const actor_specification = specification.ActorSpecification{ - name: 'PetStore' - structure: code.Struct{} - interfaces: [.openrpc] - methods: [ - specification.ActorMethod{ - name: 'GetPets' - description: 'finds pets in the system that the user has access to by tags and within a limit' - parameters: [ - openrpc.ContentDescriptor{ - name: 'tags' - description: 'tags to filter by' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'array' - items: jsonschema.Items(jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - })) - }) - }, - openrpc.ContentDescriptor{ - name: 'limit' - description: 'maximum number of results to return' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'integer' - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'pet_list' - description: 'all pets from the system, that matches the tags' - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/Pet' - }) - } - }, - specification.ActorMethod{ - name: 'CreatePet' - description: 'creates a new pet in the store. Duplicates are allowed.' - parameters: [ - openrpc.ContentDescriptor{ - name: 'new_pet' - description: 'Pet to add to the store.' - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/NewPet' - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'pet' - description: 'the newly created pet' - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/Pet' - }) - } - }, - specification.ActorMethod{ - name: 'GetPetById' - description: 'gets a pet based on a single ID, if the user has access to the pet' - parameters: [ - openrpc.ContentDescriptor{ - name: 'id' - description: 'ID of pet to fetch' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'integer' - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'pet' - description: 'pet response' - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/Pet' - }) - } - }, - specification.ActorMethod{ - name: 'DeletePetById' - description: 'deletes a single pet based on the ID supplied' - parameters: [ - openrpc.ContentDescriptor{ - name: 'id' - description: 'ID of pet to delete' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'integer' - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'pet' - description: 'pet deleted' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'null' - }) - } - } - ] + name: 'PetStore' + structure: code.Struct{} + interfaces: [.openrpc] + methods: [ + specification.ActorMethod{ + name: 'GetPets' + description: 'finds pets in the system that the user has access to by tags and within a limit' + parameters: [ + openrpc.ContentDescriptor{ + name: 'tags' + description: 'tags to filter by' + schema: jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'array' + items: jsonschema.Items(jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'string' + })) + }) + }, + openrpc.ContentDescriptor{ + name: 'limit' + description: 'maximum number of results to return' + schema: jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'integer' + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'pet_list' + description: 'all pets from the system, that matches the tags' + schema: jsonschema.SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/Pet' + }) + } + }, + specification.ActorMethod{ + name: 'CreatePet' + description: 'creates a new pet in the store. Duplicates are allowed.' + parameters: [ + openrpc.ContentDescriptor{ + name: 'new_pet' + description: 'Pet to add to the store.' + schema: jsonschema.SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/NewPet' + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'pet' + description: 'the newly created pet' + schema: jsonschema.SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/Pet' + }) + } + }, + specification.ActorMethod{ + name: 'GetPetById' + description: 'gets a pet based on a single ID, if the user has access to the pet' + parameters: [ + openrpc.ContentDescriptor{ + name: 'id' + description: 'ID of pet to fetch' + schema: jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'integer' + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'pet' + description: 'pet response' + schema: jsonschema.SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/Pet' + }) + } + }, + specification.ActorMethod{ + name: 'DeletePetById' + description: 'deletes a single pet based on the ID supplied' + parameters: [ + openrpc.ContentDescriptor{ + name: 'id' + description: 'ID of pet to delete' + schema: jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'integer' + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'pet' + description: 'pet deleted' + schema: jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'null' + }) + } + }, + ] } openrpc_specification := actor_specification.to_openrpc() -println(json.encode_pretty(openrpc_specification)) \ No newline at end of file +println(json.encode_pretty(openrpc_specification)) diff --git a/examples/biztools/bizmodel.vsh b/examples/biztools/bizmodel.vsh index aa7227c3..921ca10a 100755 --- a/examples/biztools/bizmodel.vsh +++ b/examples/biztools/bizmodel.vsh @@ -8,13 +8,10 @@ const build_path = os.join_path(os.dir(@FILE), '/docusaurus') buildpath := '${os.home_dir()}/hero/var/mdbuild/bizmodel' -mut model := bizmodel.generate("test", playbook_path)! +mut model := bizmodel.generate('test', playbook_path)! println(model.sheet) println(model.sheet.export()!) -model.sheet.export(path:"~/Downloads/test.csv")! -model.sheet.export(path:"~/code/github/freeflowuniverse/starlight_template/src/content/test.csv")! - - - +model.sheet.export(path: '~/Downloads/test.csv')! +model.sheet.export(path: '~/code/github/freeflowuniverse/starlight_template/src/content/test.csv')! diff --git a/examples/biztools/bizmodel_docusaurus/bizmodel_docusaurus.vsh b/examples/biztools/bizmodel_docusaurus/bizmodel_docusaurus.vsh index e72410b1..b1fb31ec 100755 --- a/examples/biztools/bizmodel_docusaurus/bizmodel_docusaurus.vsh +++ b/examples/biztools/bizmodel_docusaurus/bizmodel_docusaurus.vsh @@ -6,13 +6,13 @@ import freeflowuniverse.herolib.core.playbook import freeflowuniverse.herolib.core.playcmds import os -//TODO: need to fix wrong location +// TODO: need to fix wrong location const playbook_path = os.dir(@FILE) + '/playbook' const build_path = os.join_path(os.dir(@FILE), '/docusaurus') buildpath := '${os.home_dir()}/hero/var/mdbuild/bizmodel' -mut model := bizmodel.getset("example")! +mut model := bizmodel.getset('example')! model.workdir = build_path model.play(mut playbook.new(path: playbook_path)!)! @@ -22,16 +22,13 @@ println(model.sheet.export()!) // model.sheet.export(path:"~/Downloads/test.csv")! // model.sheet.export(path:"~/code/github/freeflowuniverse/starlight_template/src/content/test.csv")! - - - report := model.new_report( - name: 'example_report' + name: 'example_report' title: 'Example Business Model' )! report.export( - path: build_path + path: build_path overwrite: true - format: .docusaurus + format: .docusaurus )! diff --git a/examples/clients/groq/groq_client.vsh b/examples/clients/groq/groq_client.vsh index 670c9833..e419cc19 100755 --- a/examples/clients/groq/groq_client.vsh +++ b/examples/clients/groq/groq_client.vsh @@ -15,9 +15,9 @@ fn main() { } // Get the configured client - mut client := openai.OpenAI { - name: 'groq' - api_key: key + mut client := openai.OpenAI{ + name: 'groq' + api_key: key server_url: 'https://api.groq.com/openai/v1' } @@ -29,9 +29,9 @@ fn main() { res := client.chat_completion(model, openai.Messages{ messages: [ openai.Message{ - role: .user + role: .user content: 'What are the key differences between Groq and other AI inference providers?' - } + }, ] })! diff --git a/examples/core/agent_encoding.vsh b/examples/core/agent_encoding.vsh index 4b51a2b8..831bdef3 100755 --- a/examples/core/agent_encoding.vsh +++ b/examples/core/agent_encoding.vsh @@ -5,44 +5,44 @@ import freeflowuniverse.herolib.core.jobs.model // Create a test agent with some sample data mut agent := model.Agent{ - pubkey: 'ed25519:1234567890abcdef' - address: '192.168.1.100' - port: 9999 + pubkey: 'ed25519:1234567890abcdef' + address: '192.168.1.100' + port: 9999 description: 'Test agent for binary encoding' - status: model.AgentStatus{ - guid: 'agent-123' + status: model.AgentStatus{ + guid: 'agent-123' timestamp_first: ourtime.now() - timestamp_last: ourtime.now() - status: model.AgentState.ok + timestamp_last: ourtime.now() + status: model.AgentState.ok } - services: [] - signature: 'signature-data-here' + services: [] + signature: 'signature-data-here' } // Add a service mut service := model.AgentService{ - actor: 'vm' + actor: 'vm' description: 'Virtual machine management' - status: model.AgentServiceState.ok - public: true - actions: [] + status: model.AgentServiceState.ok + public: true + actions: [] } // Add an action to the service mut action := model.AgentServiceAction{ - action: 'create' - description: 'Create a new virtual machine' - status: model.AgentServiceState.ok - public: true - params: { - 'name': 'Name of the VM' + action: 'create' + description: 'Create a new virtual machine' + status: model.AgentServiceState.ok + public: true + params: { + 'name': 'Name of the VM' 'memory': 'Memory in MB' - 'cpu': 'Number of CPU cores' + 'cpu': 'Number of CPU cores' } params_example: { - 'name': 'my-test-vm' + 'name': 'my-test-vm' 'memory': '2048' - 'cpu': '2' + 'cpu': '2' } } @@ -79,30 +79,30 @@ assert decoded_agent.services.len == agent.services.len if decoded_agent.services.len > 0 { service1 := decoded_agent.services[0] original_service := agent.services[0] - + assert service1.actor == original_service.actor assert service1.description == original_service.description assert service1.status == original_service.status assert service1.public == original_service.public - + // Verify actions assert service1.actions.len == original_service.actions.len if service1.actions.len > 0 { action1 := service1.actions[0] original_action := original_service.actions[0] - + assert action1.action == original_action.action assert action1.description == original_action.description assert action1.status == original_action.status assert action1.public == original_action.public - + // Verify params assert action1.params.len == original_action.params.len for key, value in original_action.params { assert key in action1.params assert action1.params[key] == value } - + // Verify params_example assert action1.params_example.len == original_action.params_example.len for key, value in original_action.params_example { diff --git a/lib/data/ourdb_syncer/examples/db_example.v b/examples/data/ourdb_syncer/db_example.v similarity index 100% rename from lib/data/ourdb_syncer/examples/db_example.v rename to examples/data/ourdb_syncer/db_example.v diff --git a/lib/data/ourdb_syncer/examples/master_example.v b/examples/data/ourdb_syncer/master_example.v similarity index 100% rename from lib/data/ourdb_syncer/examples/master_example.v rename to examples/data/ourdb_syncer/master_example.v diff --git a/lib/data/ourdb_syncer/examples/worker_example.v b/examples/data/ourdb_syncer/worker_example.v similarity index 100% rename from lib/data/ourdb_syncer/examples/worker_example.v rename to examples/data/ourdb_syncer/worker_example.v diff --git a/examples/hero/generation/openapi_generation/example_actor/actor.v b/examples/hero/generation/openapi_generation/example_actor/actor.v index daa692f5..084db005 100644 --- a/examples/hero/generation/openapi_generation/example_actor/actor.v +++ b/examples/hero/generation/openapi_generation/example_actor/actor.v @@ -1,7 +1,7 @@ module example_actor import os -import freeflowuniverse.herolib.hero.baobab.stage {IActor, RunParams} +import freeflowuniverse.herolib.hero.baobab.stage { IActor, RunParams } import freeflowuniverse.herolib.web.openapi import time @@ -10,13 +10,11 @@ const openapi_spec_json = os.read_file(openapi_spec_path) or { panic(err) } const openapi_specification = openapi.json_decode(openapi_spec_json)! struct ExampleActor { - stage.Actor + stage.Actor } fn new() !ExampleActor { - return ExampleActor{ - stage.new_actor('example') - } + return ExampleActor{stage.new_actor('example')} } pub fn run() ! { diff --git a/examples/hero/openapi/actor.vsh b/examples/hero/openapi/actor.vsh index 8cb11a79..15486bc0 100755 --- a/examples/hero/openapi/actor.vsh +++ b/examples/hero/openapi/actor.vsh @@ -70,74 +70,86 @@ fn (mut actor Actor) listen() ! { // Handle method invocations fn (mut actor Actor) handle_method(cmd string, data string) !string { - param_anys := json2.raw_decode(data)!.arr() - match cmd { - 'listPets' { - pets := if param_anys.len == 0 { - actor.data_store.list_pets() - } else { - params := json.decode(ListPetParams, param_anys[0].str())! - actor.data_store.list_pets(params) - } - return json.encode(pets) - } - 'createPet' { - response := if param_anys.len == 0 { - return error('at least data expected') - } else if param_anys.len == 1 { - payload := json.decode(NewPet, param_anys[0].str())! - actor.data_store.create_pet(payload) - } else { - return error('expected 1 param, found too many') - } - // data := json.decode(NewPet, data) or { return error('Invalid pet data: $err') } - // created_pet := actor.data_store.create_pet(pet) - return json.encode(response) - } - 'getPet' { - response := if param_anys.len == 0 { - return error('at least data expected') - } else if param_anys.len == 1 { - payload := param_anys[0].int() - actor.data_store.get_pet(payload)! - } else { - return error('expected 1 param, found too many') - } - - return json.encode(response) - } - 'deletePet' { - params := json.decode(map[string]int, data) or { return error('Invalid params: $err') } - actor.data_store.delete_pet(params['petId']) or { return error('Pet not found: $err') } - return json.encode({'message': 'Pet deleted'}) - } - 'listOrders' { - orders := actor.data_store.list_orders() - return json.encode(orders) - } - 'getOrder' { - params := json.decode(map[string]int, data) or { return error('Invalid params: $err') } - order := actor.data_store.get_order(params['orderId']) or { - return error('Order not found: $err') - } - return json.encode(order) - } - 'deleteOrder' { - params := json.decode(map[string]int, data) or { return error('Invalid params: $err') } - actor.data_store.delete_order(params['orderId']) or { - return error('Order not found: $err') - } - return json.encode({'message': 'Order deleted'}) - } - 'createUser' { - user := json.decode(NewUser, data) or { return error('Invalid user data: $err') } - created_user := actor.data_store.create_user(user) - return json.encode(created_user) - } - else { - return error('Unknown method: $cmd') - } - } + param_anys := json2.raw_decode(data)!.arr() + match cmd { + 'listPets' { + pets := if param_anys.len == 0 { + actor.data_store.list_pets() + } else { + params := json.decode(ListPetParams, param_anys[0].str())! + actor.data_store.list_pets(params) + } + return json.encode(pets) + } + 'createPet' { + response := if param_anys.len == 0 { + return error('at least data expected') + } else if param_anys.len == 1 { + payload := json.decode(NewPet, param_anys[0].str())! + actor.data_store.create_pet(payload) + } else { + return error('expected 1 param, found too many') + } + // data := json.decode(NewPet, data) or { return error('Invalid pet data: $err') } + // created_pet := actor.data_store.create_pet(pet) + return json.encode(response) + } + 'getPet' { + response := if param_anys.len == 0 { + return error('at least data expected') + } else if param_anys.len == 1 { + payload := param_anys[0].int() + actor.data_store.get_pet(payload)! + } else { + return error('expected 1 param, found too many') + } + + return json.encode(response) + } + 'deletePet' { + params := json.decode(map[string]int, data) or { + return error('Invalid params: ${err}') + } + actor.data_store.delete_pet(params['petId']) or { + return error('Pet not found: ${err}') + } + return json.encode({ + 'message': 'Pet deleted' + }) + } + 'listOrders' { + orders := actor.data_store.list_orders() + return json.encode(orders) + } + 'getOrder' { + params := json.decode(map[string]int, data) or { + return error('Invalid params: ${err}') + } + order := actor.data_store.get_order(params['orderId']) or { + return error('Order not found: ${err}') + } + return json.encode(order) + } + 'deleteOrder' { + params := json.decode(map[string]int, data) or { + return error('Invalid params: ${err}') + } + actor.data_store.delete_order(params['orderId']) or { + return error('Order not found: ${err}') + } + return json.encode({ + 'message': 'Order deleted' + }) + } + 'createUser' { + user := json.decode(NewUser, data) or { return error('Invalid user data: ${err}') } + created_user := actor.data_store.create_user(user) + return json.encode(created_user) + } + else { + return error('Unknown method: ${cmd}') + } + } } @[params] diff --git a/examples/installers/db/qdrant.vsh b/examples/installers/db/qdrant.vsh index 0866411f..d212f36d 100755 --- a/examples/installers/db/qdrant.vsh +++ b/examples/installers/db/qdrant.vsh @@ -6,4 +6,3 @@ mut db := qdrant_installer.get()! db.install()! db.start()! - diff --git a/examples/installers/installers.vsh b/examples/installers/installers.vsh index c93fa089..56855b0f 100755 --- a/examples/installers/installers.vsh +++ b/examples/installers/installers.vsh @@ -8,5 +8,5 @@ import freeflowuniverse.herolib.core core.interactive_set()! // make sure the sudo works so we can do things even if it requires those rights -mut i1:=golang.get()! +mut i1 := golang.get()! i1.install()! diff --git a/examples/installers/lang/python.vsh b/examples/installers/lang/python.vsh index 75acca39..24cd2978 100755 --- a/examples/installers/lang/python.vsh +++ b/examples/installers/lang/python.vsh @@ -5,6 +5,4 @@ import freeflowuniverse.herolib.installers.lang.python as python_module mut python_installer := python_module.get()! python_installer.install()! - - // python_installer.destroy()! diff --git a/examples/jina_example.vsh b/examples/jina_example.vsh index 77f0de9d..8358831b 100755 --- a/examples/jina_example.vsh +++ b/examples/jina_example.vsh @@ -7,44 +7,44 @@ import json fn main() { // Initialize Jina client mut j := jina.Jina{ - name: 'test_client' + name: 'test_client' secret: os.getenv('JINAKEY') } - + // Initialize the client j = jina.obj_init(j) or { println('Error initializing Jina client: ${err}') return } - + // Check if authentication works auth_ok := j.check_auth() or { println('Authentication failed: ${err}') return } - + println('Authentication successful: ${auth_ok}') - + // Create embeddings model := 'jina-embeddings-v2-base-en' input := ['Hello world', 'This is a test'] - + embeddings := j.create_embeddings(input, model, 'search') or { println('Error creating embeddings: ${err}') return } - + println('Embeddings created successfully!') println('Model: ${embeddings.model}') println('Dimension: ${embeddings.dimension}') println('Number of embeddings: ${embeddings.data.len}') - + // If there are embeddings, print the first one (truncated) if embeddings.data.len > 0 { first_embedding := embeddings.data[0] println('First embedding (first 5 values): ${first_embedding.embedding[0..5]}') } - + // Usage information println('Token usage: ${embeddings.usage.total_tokens} ${embeddings.usage.unit}') } diff --git a/examples/jobs/vfs_jobs_example.vsh b/examples/jobs/vfs_jobs_example.vsh index 12d1ba7a..9afaab58 100644 --- a/examples/jobs/vfs_jobs_example.vsh +++ b/examples/jobs/vfs_jobs_example.vsh @@ -21,74 +21,64 @@ create_count := fp.int('create', `c`, 5, 'Number of jobs to create') help_requested := fp.bool('help', `h`, false, 'Show help message') if help_requested { - println(fp.usage()) - exit(0) + println(fp.usage()) + exit(0) } additional_args := fp.finalize() or { - eprintln(err) - println(fp.usage()) - exit(1) + eprintln(err) + println(fp.usage()) + exit(1) } // Create a new HeroRunner instance -mut runner := model.new() or { - panic('Failed to create HeroRunner: ${err}') -} +mut runner := model.new() or { panic('Failed to create HeroRunner: ${err}') } println('\n---------BEGIN VFS JOBS EXAMPLE') // Create some jobs println('\n---------CREATING JOBS') -for i in 0..create_count { - mut job := runner.jobs.new() - job.guid = 'job_${i}_${time.now().unix}' - job.actor = 'example_actor' - job.action = 'test_action' - job.params = { - 'param1': 'value1' - 'param2': 'value2' - } - - // For demonstration, make some jobs older by adjusting their creation time - if i % 2 == 0 { - job.status.created.time = time.now().add_days(-(cleanup_days + 1)) - } - - runner.jobs.set(job) or { - panic('Failed to set job: ${err}') - } - println('Created job with GUID: ${job.guid}') +for i in 0 .. create_count { + mut job := runner.jobs.new() + job.guid = 'job_${i}_${time.now().unix}' + job.actor = 'example_actor' + job.action = 'test_action' + job.params = { + 'param1': 'value1' + 'param2': 'value2' + } + + // For demonstration, make some jobs older by adjusting their creation time + if i % 2 == 0 { + job.status.created.time = time.now().add_days(-(cleanup_days + 1)) + } + + runner.jobs.set(job) or { panic('Failed to set job: ${err}') } + println('Created job with GUID: ${job.guid}') } // List all jobs println('\n---------LISTING ALL JOBS') -jobs := runner.jobs.list() or { - panic('Failed to list jobs: ${err}') -} +jobs := runner.jobs.list() or { panic('Failed to list jobs: ${err}') } println('Found ${jobs.len} jobs:') for job in jobs { - days_ago := (time.now().unix - job.status.created.time.unix) / (60 * 60 * 24) - println('- ${job.guid} (created ${days_ago} days ago)') + days_ago := (time.now().unix - job.status.created.time.unix) / (60 * 60 * 24) + println('- ${job.guid} (created ${days_ago} days ago)') } // Clean up old jobs println('\n---------CLEANING UP OLD JOBS') println('Cleaning up jobs older than ${cleanup_days} days...') -deleted_count := runner.cleanup_jobs(cleanup_days) or { - panic('Failed to clean up jobs: ${err}') -} +deleted_count := runner.cleanup_jobs(cleanup_days) or { panic('Failed to clean up jobs: ${err}') } println('Deleted ${deleted_count} old jobs') // List remaining jobs println('\n---------LISTING REMAINING JOBS') -remaining_jobs := runner.jobs.list() or { - panic('Failed to list jobs: ${err}') -} +remaining_jobs := runner.jobs.list() or { panic('Failed to list jobs: ${err}') } println('Found ${remaining_jobs.len} remaining jobs:') for job in remaining_jobs { - days_ago := (time.now().unix - job.status.created.time.unix) / (60 * 60 * 24) - println('- ${job.guid} (created ${days_ago} days ago)') + days_ago := (time.now().unix - job.status.created.time.unix) / (60 * 60 * 24) + println('- ${job.guid} (created ${days_ago} days ago)') } println('\n---------END VFS JOBS EXAMPLE') diff --git a/examples/schemas/openapi/codegen/calendar_ts_client.vsh b/examples/schemas/openapi/codegen/calendar_ts_client.vsh index 77689bb8..bbe748ee 100755 --- a/examples/schemas/openapi/codegen/calendar_ts_client.vsh +++ b/examples/schemas/openapi/codegen/calendar_ts_client.vsh @@ -3,7 +3,6 @@ // Calendar Typescript Client Generation Example // This example demonstrates how to generate a typescript client // from a given OpenAPI Specification using the `openapi/codegen` module. - import os import freeflowuniverse.herolib.schemas.openapi import freeflowuniverse.herolib.schemas.openapi.codegen @@ -15,5 +14,3 @@ const specification = openapi.new(path: '${dir}/meeting_api.json') or { // generate typescript client folder and write it in dir codegen.ts_client_folder(specification)!.write(dir, overwrite: true)! - - diff --git a/examples/threefold/tfgrid3deployer/hetzner/hetzner.vsh b/examples/threefold/tfgrid3deployer/hetzner/hetzner.vsh index 47380ba1..a6fd56f8 100644 --- a/examples/threefold/tfgrid3deployer/hetzner/hetzner.vsh +++ b/examples/threefold/tfgrid3deployer/hetzner/hetzner.vsh @@ -11,18 +11,18 @@ griddriver.install()! v := tfgrid3deployer.get()! println('cred: ${v}') -deployment_name := 'herzner_dep' +deployment_name := 'hetzner_dep' mut deployment := tfgrid3deployer.new_deployment(deployment_name)! // TODO: find a way to filter hetzner nodes deployment.add_machine( name: 'hetzner_vm' - cpu: 1 - memory: 2 + cpu: 2 + memory: 5 planetary: false - public_ip4: true + public_ip4: false size: 10 // 10 gig - mycelium: tfgrid3deployer.Mycelium{} + // mycelium: tfgrid3deployer.Mycelium{} ) deployment.deploy()! diff --git a/examples/threefold/tfgrid3deployer/tfgrid3deployer_example.vsh b/examples/threefold/tfgrid3deployer/tfgrid3deployer_example.vsh index e5102be1..a03df698 100755 --- a/examples/threefold/tfgrid3deployer/tfgrid3deployer_example.vsh +++ b/examples/threefold/tfgrid3deployer/tfgrid3deployer_example.vsh @@ -13,8 +13,8 @@ fn main() { // mut deployment := tfgrid3deployer.get_deployment(deployment_name)! deployment.add_machine( name: 'my_vm1' - cpu: 1 - memory: 2 + cpu: 2 + memory: 4 planetary: false public_ip4: false nodes: [167] @@ -32,10 +32,10 @@ fn main() { deployment.add_webname(name: 'mywebname2', backend: 'http://37.27.132.47:8000') deployment.deploy()! - deployment.remove_machine('my_vm1')! - deployment.remove_webname('mywebname2')! - deployment.remove_zdb('my_zdb')! - deployment.deploy()! + // deployment.remove_machine('my_vm1')! + // deployment.remove_webname('mywebname2')! + // deployment.remove_zdb('my_zdb')! + // deployment.deploy()! - tfgrid3deployer.delete_deployment(deployment_name)! + // tfgrid3deployer.delete_deployment(deployment_name)! } diff --git a/examples/threefold/tfgrid3deployer/vm.vsh b/examples/threefold/tfgrid3deployer/vm.vsh index 7e209afb..769a34c8 100755 --- a/examples/threefold/tfgrid3deployer/vm.vsh +++ b/examples/threefold/tfgrid3deployer/vm.vsh @@ -16,7 +16,7 @@ fn deploy_vm() ! { memory: 2 planetary: false public_ip4: true - nodes: [node_id] + nodes: [node_id] ) deployment.deploy()! println(deployment) @@ -27,13 +27,13 @@ fn delete_vm() ! { } fn main() { - if os.args.len < 2 { - println('Please provide a command: "deploy" or "delete"') - return - } - match os.args[1] { - 'deploy' { deploy_vm()! } - 'delete' { delete_vm()! } - else { println('Invalid command. Use "deploy" or "delete"') } - } + if os.args.len < 2 { + println('Please provide a command: "deploy" or "delete"') + return + } + match os.args[1] { + 'deploy' { deploy_vm()! } + 'delete' { delete_vm()! } + else { println('Invalid command. Use "deploy" or "delete"') } + } } diff --git a/examples/threefold/tfgrid3deployer/vm_gw_caddy/vm_gw_caddy.vsh b/examples/threefold/tfgrid3deployer/vm_gw_caddy/vm_gw_caddy.vsh index fbec2d49..e5d2a434 100755 --- a/examples/threefold/tfgrid3deployer/vm_gw_caddy/vm_gw_caddy.vsh +++ b/examples/threefold/tfgrid3deployer/vm_gw_caddy/vm_gw_caddy.vsh @@ -25,7 +25,7 @@ deployment.add_machine( public_ip4: false size: 10 // 10 gig mycelium: deployer.Mycelium{} - nodes: [vm_node] + nodes: [vm_node] ) deployment.deploy()! diff --git a/examples/vfs/vfs_db/dedupestor_vfs.vsh b/examples/vfs/vfs_db/dedupestor_vfs.vsh index 696b679e..8ff80639 100755 --- a/examples/vfs/vfs_db/dedupestor_vfs.vsh +++ b/examples/vfs/vfs_db/dedupestor_vfs.vsh @@ -11,13 +11,14 @@ pub struct VFSDedupeDB { } pub fn (mut db VFSDedupeDB) set(args ourdb.OurDBSetArgs) !u32 { - return db.store(args.data, - dedupestor.Reference{owner: u16(1), id: args.id or {panic('VFS Must provide id')}} - )! + return db.store(args.data, dedupestor.Reference{ + owner: u16(1) + id: args.id or { panic('VFS Must provide id') } + })! } pub fn (mut db VFSDedupeDB) delete(id u32) ! { - db.DedupeStore.delete(id, dedupestor.Reference{owner: u16(1), id: id})! + db.DedupeStore.delete(id, dedupestor.Reference{ owner: u16(1), id: id })! } example_data_dir := os.join_path(os.dir(@FILE), 'example_db') @@ -33,35 +34,23 @@ mut db_data := VFSDedupeDB{ } mut db_metadata := ourdb.new( - path: os.join_path(example_data_dir, 'metadata') + path: os.join_path(example_data_dir, 'metadata') incremental_mode: false )! // Create VFS with separate databases for data and metadata -mut vfs := vfs_db.new(mut db_data, mut db_metadata) or { - panic('Failed to create VFS: ${err}') -} +mut vfs := vfs_db.new(mut db_data, mut db_metadata) or { panic('Failed to create VFS: ${err}') } println('\n---------BEGIN EXAMPLE') println('---------WRITING FILES') -vfs.file_create('/some_file.txt') or { - panic('Failed to create file: ${err}') -} -vfs.file_create('/another_file.txt') or { - panic('Failed to create file: ${err}') -} +vfs.file_create('/some_file.txt') or { panic('Failed to create file: ${err}') } +vfs.file_create('/another_file.txt') or { panic('Failed to create file: ${err}') } -vfs.file_write('/some_file.txt', 'gibberish'.bytes()) or { - panic('Failed to write file: ${err}') -} -vfs.file_write('/another_file.txt', 'abcdefg'.bytes()) or { - panic('Failed to write file: ${err}') -} +vfs.file_write('/some_file.txt', 'gibberish'.bytes()) or { panic('Failed to write file: ${err}') } +vfs.file_write('/another_file.txt', 'abcdefg'.bytes()) or { panic('Failed to write file: ${err}') } println('\n---------READING FILES') -some_file_content := vfs.file_read('/some_file.txt') or { - panic('Failed to read file: ${err}') -} +some_file_content := vfs.file_read('/some_file.txt') or { panic('Failed to read file: ${err}') } println(some_file_content.bytestr()) another_file_content := vfs.file_read('/another_file.txt') or { @@ -69,19 +58,15 @@ another_file_content := vfs.file_read('/another_file.txt') or { } println(another_file_content.bytestr()) -println("\n---------WRITING DUPLICATE FILE (DB SIZE: ${os.file_size(os.join_path(example_data_dir, 'data/0.db'))})") -vfs.file_create('/duplicate.txt') or { - panic('Failed to create file: ${err}') -} -vfs.file_write('/duplicate.txt', 'gibberish'.bytes()) or { - panic('Failed to write file: ${err}') -} +println('\n---------WRITING DUPLICATE FILE (DB SIZE: ${os.file_size(os.join_path(example_data_dir, + 'data/0.db'))})') +vfs.file_create('/duplicate.txt') or { panic('Failed to create file: ${err}') } +vfs.file_write('/duplicate.txt', 'gibberish'.bytes()) or { panic('Failed to write file: ${err}') } -println("\n---------WROTE DUPLICATE FILE (DB SIZE: ${os.file_size(os.join_path(example_data_dir, 'data/0.db'))})") +println('\n---------WROTE DUPLICATE FILE (DB SIZE: ${os.file_size(os.join_path(example_data_dir, + 'data/0.db'))})') println('---------READING FILES') -some_file_content3 := vfs.file_read('/some_file.txt') or { - panic('Failed to read file: ${err}') -} +some_file_content3 := vfs.file_read('/some_file.txt') or { panic('Failed to read file: ${err}') } println(some_file_content3.bytestr()) another_file_content3 := vfs.file_read('/another_file.txt') or { @@ -89,22 +74,21 @@ another_file_content3 := vfs.file_read('/another_file.txt') or { } println(another_file_content3.bytestr()) -duplicate_content := vfs.file_read('/duplicate.txt') or { - panic('Failed to read file: ${err}') -} +duplicate_content := vfs.file_read('/duplicate.txt') or { panic('Failed to read file: ${err}') } println(duplicate_content.bytestr()) -println("\n---------DELETING DUPLICATE FILE (DB SIZE: ${os.file_size(os.join_path(example_data_dir, 'data/0.db'))})") -vfs.file_delete('/duplicate.txt') or { - panic('Failed to delete file: ${err}') -} +println('\n---------DELETING DUPLICATE FILE (DB SIZE: ${os.file_size(os.join_path(example_data_dir, + 'data/0.db'))})') +vfs.file_delete('/duplicate.txt') or { panic('Failed to delete file: ${err}') } -data_path := os.join_path(example_data_dir, 'data/0.db') -db_file_path := os.join_path(data_path, '0.db') -println("---------READING FILES (DB SIZE: ${if os.exists(db_file_path) { os.file_size(db_file_path) } else { 0 }})") -some_file_content2 := vfs.file_read('/some_file.txt') or { - panic('Failed to read file: ${err}') -} +data_path2 := os.join_path(example_data_dir, 'data/0.db') +db_file_path := os.join_path(data_path2, '0.db') +println('---------READING FILES (DB SIZE: ${if os.exists(db_file_path) { + os.file_size(db_file_path) +} else { + 0 +}})') +some_file_content2 := vfs.file_read('/some_file.txt') or { panic('Failed to read file: ${err}') } println(some_file_content2.bytestr()) another_file_content2 := vfs.file_read('/another_file.txt') or { @@ -119,4 +103,4 @@ println(another_file_content2.bytestr()) // } // if duplicate_content.len > 0 { // println(duplicate_content.bytestr()) -// } \ No newline at end of file +// } diff --git a/examples/vfs/vfs_db/ourdb_vfs.vsh b/examples/vfs/vfs_db/ourdb_vfs.vsh index 37237336..4c5a50c4 100755 --- a/examples/vfs/vfs_db/ourdb_vfs.vsh +++ b/examples/vfs/vfs_db/ourdb_vfs.vsh @@ -16,26 +16,24 @@ os.mkdir_all(metadata_dir)! // Create separate databases for data and metadata mut db_data := ourdb.new( - path: data_dir + path: data_dir incremental_mode: false )! mut db_metadata := ourdb.new( - path: metadata_dir + path: metadata_dir incremental_mode: false )! // Create VFS with separate databases for data and metadata -mut vfs := vfs_db.new_with_separate_dbs( - mut db_data, - mut db_metadata, - data_dir: data_dir, +mut vfs := vfs_db.new_with_separate_dbs(mut db_data, mut db_metadata, + data_dir: data_dir metadata_dir: metadata_dir )! // Create a root directory if it doesn't exist if !vfs.exists('/') { - vfs.dir_create('/')! + vfs.dir_create('/')! } // Create some files and directories @@ -55,13 +53,13 @@ println('Nested file content: ${vfs.file_read('/test_dir/nested_file.txt')!.byte println('Root directory contents:') root_entries := vfs.dir_list('/')! for entry in root_entries { - println('- ${entry.get_metadata().name} (${entry.get_metadata().file_type})') + println('- ${entry.get_metadata().name} (${entry.get_metadata().file_type})') } println('Test directory contents:') test_dir_entries := vfs.dir_list('/test_dir')! for entry in test_dir_entries { - println('- ${entry.get_metadata().name} (${entry.get_metadata().file_type})') + println('- ${entry.get_metadata().name} (${entry.get_metadata().file_type})') } // Create a duplicate file with the same content diff --git a/examples/vfs/vfs_db/vfs_basics.vsh b/examples/vfs/vfs_db/vfs_basics.vsh index 1522e15c..80d3f030 100755 --- a/examples/vfs/vfs_db/vfs_basics.vsh +++ b/examples/vfs/vfs_db/vfs_basics.vsh @@ -16,59 +16,43 @@ os.mkdir_all(example_data_dir)! // Create separate databases for data and metadata mut db_data := ourdb.new( - path: os.join_path(example_data_dir, 'data') + path: os.join_path(example_data_dir, 'data') incremental_mode: false )! mut db_metadata := ourdb.new( - path: os.join_path(example_data_dir, 'metadata') + path: os.join_path(example_data_dir, 'metadata') incremental_mode: false )! // Create VFS with separate databases for data and metadata -mut vfs := vfs_db.new(mut db_data, mut db_metadata) or { - panic('Failed to create VFS: ${err}') -} +mut vfs := vfs_db.new(mut db_data, mut db_metadata) or { panic('Failed to create VFS: ${err}') } println('\n---------BEGIN DIRECTORY OPERATIONS EXAMPLE') // Create directories with subdirectories println('\n---------CREATING DIRECTORIES') -vfs.dir_create('/dir1') or { - panic('Failed to create directory: ${err}') -} +vfs.dir_create('/dir1') or { panic('Failed to create directory: ${err}') } println('Created directory: /dir1') -vfs.dir_create('/dir1/subdir1') or { - panic('Failed to create directory: ${err}') -} +vfs.dir_create('/dir1/subdir1') or { panic('Failed to create directory: ${err}') } println('Created directory: /dir1/subdir1') -vfs.dir_create('/dir1/subdir2') or { - panic('Failed to create directory: ${err}') -} +vfs.dir_create('/dir1/subdir2') or { panic('Failed to create directory: ${err}') } println('Created directory: /dir1/subdir2') -vfs.dir_create('/dir2') or { - panic('Failed to create directory: ${err}') -} +vfs.dir_create('/dir2') or { panic('Failed to create directory: ${err}') } println('Created directory: /dir2') -vfs.dir_create('/dir2/subdir1') or { - panic('Failed to create directory: ${err}') -} +vfs.dir_create('/dir2/subdir1') or { panic('Failed to create directory: ${err}') } println('Created directory: /dir2/subdir1') -vfs.dir_create('/dir2/subdir1/subsubdir1') or { - panic('Failed to create directory: ${err}') -} +vfs.dir_create('/dir2/subdir1/subsubdir1') or { panic('Failed to create directory: ${err}') } println('Created directory: /dir2/subdir1/subsubdir1') // List directories println('\n---------LISTING ROOT DIRECTORY') -root_entries := vfs.dir_list('/') or { - panic('Failed to list directory: ${err}') -} +root_entries := vfs.dir_list('/') or { panic('Failed to list directory: ${err}') } println('Root directory contains:') for entry in root_entries { entry_type := if entry.get_metadata().file_type == .directory { 'directory' } else { 'file' } @@ -76,9 +60,7 @@ for entry in root_entries { } println('\n---------LISTING /dir1 DIRECTORY') -dir1_entries := vfs.dir_list('/dir1') or { - panic('Failed to list directory: ${err}') -} +dir1_entries := vfs.dir_list('/dir1') or { panic('Failed to list directory: ${err}') } println('/dir1 directory contains:') for entry in dir1_entries { entry_type := if entry.get_metadata().file_type == .directory { 'directory' } else { 'file' } @@ -87,9 +69,7 @@ for entry in dir1_entries { // Write a file in a subdirectory println('\n---------WRITING FILE IN SUBDIRECTORY') -vfs.file_create('/dir1/subdir1/test_file.txt') or { - panic('Failed to create file: ${err}') -} +vfs.file_create('/dir1/subdir1/test_file.txt') or { panic('Failed to create file: ${err}') } println('Created file: /dir1/subdir1/test_file.txt') test_content := 'This is a test file in a subdirectory' @@ -104,13 +84,15 @@ file_content := vfs.file_read('/dir1/subdir1/test_file.txt') or { panic('Failed to read file: ${err}') } println('File content: ${file_content.bytestr()}') -println('Content verification: ${if file_content.bytestr() == test_content { 'SUCCESS' } else { 'FAILED' }}') +println('Content verification: ${if file_content.bytestr() == test_content { + 'SUCCESS' +} else { + 'FAILED' +}}') // List the subdirectory to see the file println('\n---------LISTING /dir1/subdir1 DIRECTORY') -subdir1_entries := vfs.dir_list('/dir1/subdir1') or { - panic('Failed to list directory: ${err}') -} +subdir1_entries := vfs.dir_list('/dir1/subdir1') or { panic('Failed to list directory: ${err}') } println('/dir1/subdir1 directory contains:') for entry in subdir1_entries { entry_type := if entry.get_metadata().file_type == .directory { 'directory' } else { 'file' } @@ -119,9 +101,7 @@ for entry in subdir1_entries { // Delete the file println('\n---------DELETING FILE') -vfs.file_delete('/dir1/subdir1/test_file.txt') or { - panic('Failed to delete file: ${err}') -} +vfs.file_delete('/dir1/subdir1/test_file.txt') or { panic('Failed to delete file: ${err}') } println('Deleted file: /dir1/subdir1/test_file.txt') // List the subdirectory again to verify the file is gone @@ -158,7 +138,11 @@ deep_file_content := vfs.file_read('/dir2/subdir1/subsubdir1/deep_file.txt') or panic('Failed to read file: ${err}') } println('File content: ${deep_file_content.bytestr()}') -println('Content verification: ${if deep_file_content.bytestr() == deep_content { 'SUCCESS' } else { 'FAILED' }}') +println('Content verification: ${if deep_file_content.bytestr() == deep_content { + 'SUCCESS' +} else { + 'FAILED' +}}') // Clean up by deleting directories (optional) println('\n---------CLEANING UP') diff --git a/examples/webdav/webdav_vfs.vsh b/examples/webdav/webdav_vfs.vsh index c333d846..3d4ab5bc 100755 --- a/examples/webdav/webdav_vfs.vsh +++ b/examples/webdav/webdav_vfs.vsh @@ -6,15 +6,18 @@ import freeflowuniverse.herolib.data.ourdb import os import log -const database_path := os.join_path(os.dir(@FILE), 'database') +const database_path = os.join_path(os.dir(@FILE), 'database') -mut metadata_db := ourdb.new(path:os.join_path(database_path, 'metadata'))! -mut data_db := ourdb.new(path:os.join_path(database_path, 'data'))! +mut metadata_db := ourdb.new(path: os.join_path(database_path, 'metadata'))! +mut data_db := ourdb.new(path: os.join_path(database_path, 'data'))! mut vfs := vfs_db.new(mut metadata_db, mut data_db)! -mut server := webdav.new_server(vfs: vfs, user_db: { - 'admin': '123' -})! +mut server := webdav.new_server( + vfs: vfs + user_db: { + 'admin': '123' + } +)! log.set_level(.debug) -server.run() \ No newline at end of file +server.run() diff --git a/examples/webtools/markdown_renderer/markdown_parser.vsh b/examples/webtools/markdown_renderer/markdown_parser.vsh index 6384c6ee..5ce12208 100755 --- a/examples/webtools/markdown_renderer/markdown_parser.vsh +++ b/examples/webtools/markdown_renderer/markdown_parser.vsh @@ -91,4 +91,3 @@ println('\nFootnotes:') for id, footnote in nav.footnotes() { println(' [^${id}]: ${footnote.content}') } - diff --git a/examples/webtools/markdown_renderer/markdown_render.vsh b/examples/webtools/markdown_renderer/markdown_render.vsh index 62e51986..e4ff64b5 100755 --- a/examples/webtools/markdown_renderer/markdown_render.vsh +++ b/examples/webtools/markdown_renderer/markdown_render.vsh @@ -7,8 +7,8 @@ import os import markdown import freeflowuniverse.herolib.data.markdownparser2 -path2:="${os.home_dir()}/code/github/freeflowuniverse/herolib/examples/webtools/mdbook_markdown/content/links.md" -path1:="${os.home_dir()}/code/github/freeflowuniverse/herolib/examples/webtools/mdbook_markdown/content/test.md" +path2 := '${os.home_dir()}/code/github/freeflowuniverse/herolib/examples/webtools/mdbook_markdown/content/links.md' +path1 := '${os.home_dir()}/code/github/freeflowuniverse/herolib/examples/webtools/mdbook_markdown/content/test.md' text := os.read_file(path1)! diff --git a/examples/webtools/mdbook_markdown/doctree_export.vsh b/examples/webtools/mdbook_markdown/doctree_export.vsh index df2fa9f3..9b2eca0e 100755 --- a/examples/webtools/mdbook_markdown/doctree_export.vsh +++ b/examples/webtools/mdbook_markdown/doctree_export.vsh @@ -18,10 +18,9 @@ for project in 'projectinca, legal, why'.split(',').map(it.trim_space()) { )! } - tree.export( - destination: '/tmp/mdexport' - reset: true - //keep_structure: true + destination: '/tmp/mdexport' + reset: true + // keep_structure: true exclude_errors: false )! diff --git a/examples/webtools/starllight_example.vsh b/examples/webtools/starllight_example.vsh index efb7c915..dc656e05 100755 --- a/examples/webtools/starllight_example.vsh +++ b/examples/webtools/starllight_example.vsh @@ -10,8 +10,8 @@ mut docs := starlight.new( // Create a new starlight site mut site := docs.get( - url: 'https://git.ourworld.tf/tfgrid/docs_aibox' - init:true //init means we put config files if not there + url: 'https://git.ourworld.tf/tfgrid/docs_aibox' + init: true // init means we put config files if not there )! -site.dev()! \ No newline at end of file +site.dev()! diff --git a/lib/baobab/generator/_archive/client_typescript.v b/lib/baobab/generator/_archive/client_typescript.v index 7c1495a5..71156309 100644 --- a/lib/baobab/generator/_archive/client_typescript.v +++ b/lib/baobab/generator/_archive/client_typescript.v @@ -1,10 +1,10 @@ module generator -import freeflowuniverse.herolib.core.code {Folder, File} +import freeflowuniverse.herolib.core.code import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.schemas.jsonschema.codegen { schema_to_struct } -import freeflowuniverse.herolib.schemas.openrpc.codegen as openrpc_codegen { content_descriptor_to_parameter } -import freeflowuniverse.herolib.baobab.specification {ActorSpecification, ActorMethod, BaseObject} +import freeflowuniverse.herolib.schemas.jsonschema.codegen +import freeflowuniverse.herolib.schemas.openrpc.codegen as openrpc_codegen +import freeflowuniverse.herolib.baobab.specification import net.http // pub enum BaseObjectMethodType { @@ -50,7 +50,7 @@ import net.http // name_snake := texttools.snake_case(object) // name_pascal := texttools.pascal_case(object) // root := get_endpoint_root(params.endpoint) - + // return "async list${name_pascal}(): Promise<${name_pascal}[]> {\n return this.restClient.get<${name_pascal}[]>(`/${root}/${name_snake}`);\n }" // } @@ -58,7 +58,7 @@ fn get_endpoint_root(root string) string { return if root == '' { '' } else { - "/${root.trim('/')}" + '/${root.trim('/')}' } } @@ -112,7 +112,7 @@ fn get_endpoint_root(root string) string { // .map(content_descriptor_to_parameter(it) or {panic(err)}) // .map(it.typescript()) // .join(', ') - + // return_type := content_descriptor_to_parameter(method.result) or {panic(err)}.typ.typescript() // return 'async ${name}(${params}): Promise<${return_type}> {}' -// } \ No newline at end of file +// } diff --git a/lib/baobab/generator/_archive/client_typescript_test.v b/lib/baobab/generator/_archive/client_typescript_test.v index 2c3140fc..3a8efb7e 100644 --- a/lib/baobab/generator/_archive/client_typescript_test.v +++ b/lib/baobab/generator/_archive/client_typescript_test.v @@ -3,198 +3,201 @@ module generator import x.json2 as json import arrays import freeflowuniverse.herolib.core.code -import freeflowuniverse.herolib.baobab.specification +import freeflowuniverse.herolib.baobab.specification import freeflowuniverse.herolib.schemas.openrpc import freeflowuniverse.herolib.schemas.jsonschema const specification = specification.ActorSpecification{ - name: 'Pet Store' - description: 'A sample API for a pet store' - structure: code.Struct{} - interfaces: [.openapi] - methods: [ - specification.ActorMethod{ - name: 'listPets' - summary: 'List all pets' - example: openrpc.ExamplePairing{ - params: [ - openrpc.ExampleRef(openrpc.Example{ - name: 'Example limit' - description: 'Example Maximum number of pets to return' - value: 10 - }) - ] - result: openrpc.ExampleRef(openrpc.Example{ - name: 'Example response' - value: json.raw_decode('[ + name: 'Pet Store' + description: 'A sample API for a pet store' + structure: code.Struct{} + interfaces: [.openapi] + methods: [ + specification.ActorMethod{ + name: 'listPets' + summary: 'List all pets' + example: openrpc.ExamplePairing{ + params: [ + openrpc.ExampleRef(openrpc.Example{ + name: 'Example limit' + description: 'Example Maximum number of pets to return' + value: 10 + }), + ] + result: openrpc.ExampleRef(openrpc.Example{ + name: 'Example response' + value: json.raw_decode('[ {"id": 1, "name": "Fluffy", "tag": "dog"}, {"id": 2, "name": "Whiskers", "tag": "cat"} ]')! - }) - } - parameters: [ - openrpc.ContentDescriptor{ - name: 'limit' - summary: 'Maximum number of pets to return' - description: 'Maximum number of pets to return' - required: false - schema: jsonschema.SchemaRef(jsonschema.Schema{ - ...jsonschema.schema_u32, - example: 10 - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'pets' - description: 'A paged array of pets' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'array' - items: jsonschema.Items(jsonschema.SchemaRef(jsonschema.Schema{ - id: 'pet' - title: 'Pet' - typ: 'object' - properties: { - 'id': jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/PetId' - }), - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - })) - }) - } - errors: [ - openrpc.ErrorSpec{ - code: 400 - message: 'Invalid request' - } - ] - }, - specification.ActorMethod{ - name: 'createPet' - summary: 'Create a new pet' - example: openrpc.ExamplePairing{ - result: openrpc.ExampleRef(openrpc.Example{ - name: 'Example response' - value: '[]' - }) - } - result: openrpc.ContentDescriptor{ - name: 'result' - description: 'The response of the operation.' - required: true - } - errors: [ - openrpc.ErrorSpec{ - code: 400 - message: 'Invalid input' - } - ] - }, - specification.ActorMethod{ - name: 'getPet' - summary: 'Get a pet by ID' - example: openrpc.ExamplePairing{ - params: [ - openrpc.ExampleRef(openrpc.Example{ - name: 'Example petId' - description: 'Example ID of the pet to retrieve' - value: 1 - }) - ] - result: openrpc.ExampleRef(openrpc.Example{ - name: 'Example response' - value: json.raw_decode('{"id": 1, "name": "Fluffy", "tag": "dog"}')! - }) - } - parameters: [ - openrpc.ContentDescriptor{ - name: 'petId' - summary: 'ID of the pet to retrieve' - description: 'ID of the pet to retrieve' - required: true - schema: jsonschema.SchemaRef(jsonschema.Schema{ - ...jsonschema.schema_u32, - format:'uint32' - example: 1 - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'result' - description: 'The response of the operation.' - required: true - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/Pet' - }) - } - errors: [ - openrpc.ErrorSpec{ - code: 404 - message: 'Pet not found' - } - ] - }, - specification.ActorMethod{ - name: 'deletePet' - summary: 'Delete a pet by ID' - example: openrpc.ExamplePairing{ - params: [ - openrpc.ExampleRef(openrpc.Example{ - name: 'Example petId' - description: 'Example ID of the pet to delete' - value: 1 - }) - ] - } - parameters: [ - openrpc.ContentDescriptor{ - name: 'petId' - summary: 'ID of the pet to delete' - description: 'ID of the pet to delete' - required: true - schema: jsonschema.SchemaRef(jsonschema.Schema{ - ...jsonschema.schema_u32, - example: 1 - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'result' - description: 'The response of the operation.' - required: true - } - errors: [ - openrpc.ErrorSpec{ - code: 404 - message: 'Pet not found' - } - ] - } - ] - objects: [ - specification.BaseObject{ - schema: jsonschema.Schema{ - title: 'Pet' - typ: 'object' - properties: { - 'id': jsonschema.schema_u32, - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - } - } - ] + }) + } + parameters: [ + openrpc.ContentDescriptor{ + name: 'limit' + summary: 'Maximum number of pets to return' + description: 'Maximum number of pets to return' + required: false + schema: jsonschema.SchemaRef(jsonschema.Schema{ + ...jsonschema.schema_u32 + example: 10 + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'pets' + description: 'A paged array of pets' + schema: jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'array' + items: jsonschema.Items(jsonschema.SchemaRef(jsonschema.Schema{ + id: 'pet' + title: 'Pet' + typ: 'object' + properties: { + 'id': jsonschema.SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/PetId' + }) + 'name': jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'string' + }) + 'tag': jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'string' + }) + } + required: [ + 'id', + 'name', + ] + })) + }) + } + errors: [ + openrpc.ErrorSpec{ + code: 400 + message: 'Invalid request' + }, + ] + }, + specification.ActorMethod{ + name: 'createPet' + summary: 'Create a new pet' + example: openrpc.ExamplePairing{ + result: openrpc.ExampleRef(openrpc.Example{ + name: 'Example response' + value: '[]' + }) + } + result: openrpc.ContentDescriptor{ + name: 'result' + description: 'The response of the operation.' + required: true + } + errors: [ + openrpc.ErrorSpec{ + code: 400 + message: 'Invalid input' + }, + ] + }, + specification.ActorMethod{ + name: 'getPet' + summary: 'Get a pet by ID' + example: openrpc.ExamplePairing{ + params: [ + openrpc.ExampleRef(openrpc.Example{ + name: 'Example petId' + description: 'Example ID of the pet to retrieve' + value: 1 + }), + ] + result: openrpc.ExampleRef(openrpc.Example{ + name: 'Example response' + value: json.raw_decode('{"id": 1, "name": "Fluffy", "tag": "dog"}')! + }) + } + parameters: [ + openrpc.ContentDescriptor{ + name: 'petId' + summary: 'ID of the pet to retrieve' + description: 'ID of the pet to retrieve' + required: true + schema: jsonschema.SchemaRef(jsonschema.Schema{ + ...jsonschema.schema_u32 + format: 'uint32' + example: 1 + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'result' + description: 'The response of the operation.' + required: true + schema: jsonschema.SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/Pet' + }) + } + errors: [ + openrpc.ErrorSpec{ + code: 404 + message: 'Pet not found' + }, + ] + }, + specification.ActorMethod{ + name: 'deletePet' + summary: 'Delete a pet by ID' + example: openrpc.ExamplePairing{ + params: [ + openrpc.ExampleRef(openrpc.Example{ + name: 'Example petId' + description: 'Example ID of the pet to delete' + value: 1 + }), + ] + } + parameters: [ + openrpc.ContentDescriptor{ + name: 'petId' + summary: 'ID of the pet to delete' + description: 'ID of the pet to delete' + required: true + schema: jsonschema.SchemaRef(jsonschema.Schema{ + ...jsonschema.schema_u32 + example: 1 + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'result' + description: 'The response of the operation.' + required: true + } + errors: [ + openrpc.ErrorSpec{ + code: 404 + message: 'Pet not found' + }, + ] + }, + ] + objects: [ + specification.BaseObject{ + schema: jsonschema.Schema{ + title: 'Pet' + typ: 'object' + properties: { + 'id': jsonschema.schema_u32 + 'name': jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'string' + }) + 'tag': jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'string' + }) + } + required: ['id', 'name'] + } + }, + ] } fn test_typescript_client_folder() { diff --git a/lib/baobab/generator/_archive/write_object_methods.v b/lib/baobab/generator/_archive/write_object_methods.v index 582904b4..3cf06b99 100644 --- a/lib/baobab/generator/_archive/write_object_methods.v +++ b/lib/baobab/generator/_archive/write_object_methods.v @@ -1,12 +1,12 @@ module generator -import freeflowuniverse.herolib.baobab.specification {BaseObject} -import freeflowuniverse.herolib.core.code { type_from_symbol, VFile, CodeItem, Function, Import, Param, Param, Struct, StructField, Type } +import freeflowuniverse.herolib.baobab.specification +import freeflowuniverse.herolib.core.code { Param, Param, type_from_symbol } import freeflowuniverse.herolib.core.texttools const id_param = Param{ name: 'id' - typ: type_from_symbol('u32') + typ: type_from_symbol('u32') } // pub fn generate_object_code(actor Struct, object BaseObject) VFile { @@ -211,8 +211,8 @@ const id_param = Param{ // only_mutable: false // ) // body := 'return ${object_type}List{items:actor.backend.list[${object_type}]()!}' - -// result_struct := generate_list_result_struct(actor, object) + +// result_struct := generate_list_result_struct(actor, object) // mut result := Param{} // result.typ.symbol = result_struct.name // result.is_result = true diff --git a/lib/baobab/generator/_archive/write_object_tests.v b/lib/baobab/generator/_archive/write_object_tests.v index 37aee662..206b05e8 100644 --- a/lib/baobab/generator/_archive/write_object_tests.v +++ b/lib/baobab/generator/_archive/write_object_tests.v @@ -1,7 +1,7 @@ module generator -import freeflowuniverse.herolib.core.code { VFile, CustomCode, Function, Import, Struct } -import freeflowuniverse.herolib.baobab.specification {BaseObject} +import freeflowuniverse.herolib.core.code +import freeflowuniverse.herolib.baobab.specification import rand import freeflowuniverse.herolib.core.texttools diff --git a/lib/baobab/generator/generate_act.v b/lib/baobab/generator/generate_act.v index d0c37696..72d2742a 100644 --- a/lib/baobab/generator/generate_act.v +++ b/lib/baobab/generator/generate_act.v @@ -1,10 +1,10 @@ module generator -import freeflowuniverse.herolib.core.code { Result, Object, Param, Folder, IFile, VFile, CodeItem, File, Function, Import, Module, Struct, CustomCode } +import freeflowuniverse.herolib.core.code { CodeItem, CustomCode, Function, Import, Object, Param, Result, VFile } import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.schemas.openrpc {Example, ContentDescriptor} -import freeflowuniverse.herolib.schemas.jsonschema.codegen {schemaref_to_type} -import freeflowuniverse.herolib.baobab.specification {ActorMethod, ActorSpecification} +import freeflowuniverse.herolib.schemas.openrpc { ContentDescriptor, Example } +import freeflowuniverse.herolib.schemas.jsonschema.codegen { schemaref_to_type } +import freeflowuniverse.herolib.baobab.specification { ActorMethod, ActorSpecification } fn generate_handle_file(spec ActorSpecification) !VFile { mut items := []CodeItem{} @@ -12,14 +12,21 @@ fn generate_handle_file(spec ActorSpecification) !VFile { for method in spec.methods { items << generate_method_handle(spec.name, method)! } - return VFile { - name: 'act' + return VFile{ + name: 'act' imports: [ - Import{mod:'freeflowuniverse.herolib.baobab.stage' types:['Action']} - Import{mod:'freeflowuniverse.herolib.core.texttools'} - Import{mod:'x.json2 as json'} + Import{ + mod: 'freeflowuniverse.herolib.baobab.stage' + types: ['Action'] + }, + Import{ + mod: 'freeflowuniverse.herolib.core.texttools' + }, + Import{ + mod: 'x.json2 as json' + }, ] - items: items + items: items } } @@ -74,13 +81,22 @@ pub fn generate_method_handle(actor_name string, method ActorMethod) !Function { call_stmt := generate_call_stmt(actor_name, method)! body += '${call_stmt}\n' body += '${generate_return_stmt(method)!}\n' - return Function { - name: 'handle_${name_fixed}' + return Function{ + name: 'handle_${name_fixed}' description: '// Handler for ${name_fixed}\n' - receiver: Param{name: 'actor', mutable: true, typ: Object{'${actor_name_pascal}Actor'}} - params: [Param{name: 'action', typ: Object{'Action'}}] - result: Param{typ: Result{Object{'Action'}}} - body: body + receiver: Param{ + name: 'actor' + mutable: true + typ: Object{'${actor_name_pascal}Actor'} + } + params: [Param{ + name: 'action' + typ: Object{'Action'} + }] + result: Param{ + typ: Result{Object{'Action'}} + } + body: body } } @@ -95,28 +111,41 @@ pub fn generate_example_method_handle(actor_name string, method ActorMethod) !Fu if method.example.result is Example { 'return Action{...action, result: json.encode(\'${method.example.result.value}\')}' } else { - "return action" + 'return action' } - } else { "return action" } - return Function { - name: 'handle_${name_fixed}_example' + } else { + 'return action' + } + return Function{ + name: 'handle_${name_fixed}_example' description: '// Handler for ${name_fixed}\n' - receiver: Param{name: 'actor', mutable: true, typ: Object{'${actor_name_pascal}Actor'}} - params: [Param{name: 'action', typ: Object{'Action'}}] - result: Param{typ: Result{Object{'Action'}}} - body: body + receiver: Param{ + name: 'actor' + mutable: true + typ: Object{'${actor_name_pascal}Actor'} + } + params: [Param{ + name: 'action' + typ: Object{'Action'} + }] + result: Param{ + typ: Result{Object{'Action'}} + } + body: body } } fn generate_call_stmt(name string, method ActorMethod) !string { mut call_stmt := if schemaref_to_type(method.result.schema).vgen().trim_space() != '' { '${texttools.snake_case(method.result.name)} := ' - } else {''} + } else { + '' + } method_name := texttools.snake_case(method.name) snake_name := texttools.snake_case(name) param_names := method.parameters.map(texttools.snake_case(it.name)) - call_stmt += 'actor.${snake_name}.${method_name}(${param_names.join(", ")})!' + call_stmt += 'actor.${snake_name}.${method_name}(${param_names.join(', ')})!' return call_stmt } @@ -124,7 +153,7 @@ fn generate_return_stmt(method ActorMethod) !string { if schemaref_to_type(method.result.schema).vgen().trim_space() != '' { return 'return Action{...action, result: json.encode(${texttools.snake_case(method.result.name)})}' } - return "return action" + return 'return action' } // Helper function to generate a case block for the main router @@ -138,12 +167,13 @@ fn generate_decode_stmt(name string, param ContentDescriptor) !string { param_type := schemaref_to_type(param.schema) if param_type is Object { return 'json.decode[${schemaref_to_type(param.schema).vgen()}](${name})!' - } - else if param_type is code.Array { + } else if param_type is code.Array { return 'json.decode[${schemaref_to_type(param.schema).vgen()}](${name})' } param_symbol := param_type.vgen() return if param_symbol == 'string' { '${name}.str()' - } else {'${name}.${param_type.vgen()}()'} -} \ No newline at end of file + } else { + '${name}.${param_type.vgen()}()' + } +} diff --git a/lib/baobab/generator/generate_actor_folder.v b/lib/baobab/generator/generate_actor_folder.v index addd5efb..2d06098d 100644 --- a/lib/baobab/generator/generate_actor_folder.v +++ b/lib/baobab/generator/generate_actor_folder.v @@ -1,9 +1,9 @@ module generator -import freeflowuniverse.herolib.core.code { Folder, IFolder, IFile, VFile, CodeItem, File, Function, Import, Module, Struct, CustomCode } +import freeflowuniverse.herolib.core.code { File, Folder, IFile, IFolder } import freeflowuniverse.herolib.schemas.openapi import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.baobab.specification {ActorMethod, ActorSpecification, ActorInterface} +import freeflowuniverse.herolib.baobab.specification { ActorInterface, ActorSpecification } import json @[params] @@ -15,7 +15,7 @@ pub: pub fn generate_actor_folder(spec ActorSpecification, params Params) !Folder { mut files := []IFile{} mut folders := []IFolder{} - + files = [generate_readme_file(spec)!] mut docs_files := []IFile{} @@ -33,7 +33,7 @@ pub fn generate_actor_folder(spec ActorSpecification, params Params) !Folder { // convert actor spec to openrpc spec openapi_spec_raw := spec.to_openapi() spec_files << generate_openapi_file(openapi_spec_raw)! - + openapi_spec := openapi.process(openapi_spec_raw)! folders << generate_openapi_ts_client(openapi_spec)! } @@ -41,27 +41,27 @@ pub fn generate_actor_folder(spec ActorSpecification, params Params) !Folder { } } - specs_folder := Folder { - name: 'specs' + specs_folder := Folder{ + name: 'specs' files: spec_files } // folder with docs - folders << Folder { - name: 'docs' - files: docs_files + folders << Folder{ + name: 'docs' + files: docs_files folders: [specs_folder] } folders << generate_scripts_folder(spec.name, false) folders << generate_examples_folder()! - + // create module with code files and docs folder name_fixed := texttools.snake_case(spec.name) - - return code.Folder{ - name: '${name_fixed}' - files: files + + return Folder{ + name: '${name_fixed}' + files: files folders: folders modules: [generate_actor_module(spec, params)!] } @@ -69,14 +69,14 @@ pub fn generate_actor_folder(spec ActorSpecification, params Params) !Folder { fn generate_readme_file(spec ActorSpecification) !File { return File{ - name: 'README' + name: 'README' extension: 'md' - content: '# ${spec.name}\n${spec.description}' + content: '# ${spec.name}\n${spec.description}' } } pub fn generate_examples_folder() !Folder { - return Folder { + return Folder{ name: 'examples' } -} \ No newline at end of file +} diff --git a/lib/baobab/generator/generate_actor_source.v b/lib/baobab/generator/generate_actor_source.v index 84733079..ac34f04b 100644 --- a/lib/baobab/generator/generate_actor_source.v +++ b/lib/baobab/generator/generate_actor_source.v @@ -1,25 +1,25 @@ module generator -import freeflowuniverse.herolib.core.code { Folder, IFolder, IFile, VFile, CodeItem, File, Function, Import, Module, Struct, CustomCode } +import freeflowuniverse.herolib.core.code { CustomCode, IFile, IFolder, Module, VFile } import freeflowuniverse.herolib.schemas.openapi import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.baobab.specification {ActorMethod, ActorSpecification, ActorInterface} +import freeflowuniverse.herolib.baobab.specification { ActorInterface, ActorSpecification } import json pub fn generate_actor_module(spec ActorSpecification, params Params) !Module { mut files := []IFile{} mut folders := []IFolder{} - + files = [ generate_actor_file(spec)!, generate_actor_test_file(spec)!, generate_specs_file(spec.name, params.interfaces)!, generate_handle_file(spec)!, - generate_methods_file(spec)! - generate_methods_interface_file(spec)! - generate_methods_example_file(spec)! - generate_client_file(spec)! - generate_model_file(spec)! + generate_methods_file(spec)!, + generate_methods_interface_file(spec)!, + generate_methods_example_file(spec)!, + generate_client_file(spec)!, + generate_model_file(spec)!, ] // generate code files for supported interfaces @@ -57,15 +57,15 @@ pub fn generate_actor_module(spec ActorSpecification, params Params) !Module { } } } - + // create module with code files and docs folder name_fixed := texttools.snake_case(spec.name) return code.new_module( - name: '${name_fixed}' + name: '${name_fixed}' description: spec.description - files: files - folders: folders - in_src: true + files: files + folders: folders + in_src: true ) } @@ -75,8 +75,8 @@ fn generate_actor_file(spec ActorSpecification) !VFile { name_snake := texttools.snake_case(spec.name) name_pascal := texttools.pascal_case(spec.name) actor_code := $tmpl('./templates/actor.v.template') - return VFile { - name: 'actor' + return VFile{ + name: 'actor' items: [CustomCode{actor_code}] } } @@ -86,8 +86,8 @@ fn generate_actor_test_file(spec ActorSpecification) !VFile { actor_name_snake := texttools.snake_case(spec.name) actor_name_pascal := texttools.pascal_case(spec.name) actor_test_code := $tmpl('./templates/actor_test.v.template') - return VFile { - name: 'actor_test' + return VFile{ + name: 'actor_test' items: [CustomCode{actor_test_code}] } } @@ -99,8 +99,8 @@ fn generate_specs_file(name string, interfaces []ActorInterface) !VFile { actor_name_snake := texttools.snake_case(name) actor_name_pascal := texttools.pascal_case(name) actor_code := $tmpl('./templates/specifications.v.template') - return VFile { - name: 'specifications' + return VFile{ + name: 'specifications' items: [CustomCode{actor_code}] } -} \ No newline at end of file +} diff --git a/lib/baobab/generator/generate_actor_test.v b/lib/baobab/generator/generate_actor_test.v index f3c1f587..2be004b1 100644 --- a/lib/baobab/generator/generate_actor_test.v +++ b/lib/baobab/generator/generate_actor_test.v @@ -5,269 +5,272 @@ import freeflowuniverse.herolib.baobab.specification import freeflowuniverse.herolib.schemas.openrpc import freeflowuniverse.herolib.schemas.jsonschema import os -import x.json2 as json {Any} +import x.json2 as json const actor_spec = specification.ActorSpecification{ - name: 'Pet Store' - description: 'A sample API for a pet store' - structure: code.Struct{} - interfaces: [.openapi] - methods: [ - specification.ActorMethod{ - name: 'listPets' - summary: 'List all pets' - example: openrpc.ExamplePairing{ - params: [ - openrpc.ExampleRef(openrpc.Example{ - name: 'Example limit' - description: 'Example Maximum number of pets to return' - value: 10 - }) - ] - result: openrpc.ExampleRef(openrpc.Example{ - name: 'Example response' - value: json.raw_decode('[ + name: 'Pet Store' + description: 'A sample API for a pet store' + structure: code.Struct{} + interfaces: [.openapi] + methods: [ + specification.ActorMethod{ + name: 'listPets' + summary: 'List all pets' + example: openrpc.ExamplePairing{ + params: [ + openrpc.ExampleRef(openrpc.Example{ + name: 'Example limit' + description: 'Example Maximum number of pets to return' + value: 10 + }), + ] + result: openrpc.ExampleRef(openrpc.Example{ + name: 'Example response' + value: json.raw_decode('[ {"id": 1, "name": "Fluffy", "tag": "dog"}, {"id": 2, "name": "Whiskers", "tag": "cat"} ]')! - }) - } - parameters: [ - openrpc.ContentDescriptor{ - name: 'limit' - summary: 'Maximum number of pets to return' - description: 'Maximum number of pets to return' - required: false - schema: jsonschema.SchemaRef(jsonschema.Schema{ - ...jsonschema.schema_u32, - example: 10 - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'pets' - description: 'A paged array of pets' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'array' - items: jsonschema.Items(jsonschema.SchemaRef(jsonschema.Schema{ - id: 'pet' - title: 'Pet' - typ: 'object' - properties: { - 'id': jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/PetId' - }), - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - })) - }) - } - errors: [ - openrpc.ErrorSpec{ - code: 400 - message: 'Invalid request' - } - ] - }, - specification.ActorMethod{ - name: 'newPet' - summary: 'Create a new pet' - parameters: [ - openrpc.ContentDescriptor{ - name: 'result' - description: 'The response of the operation.' - required: true - schema: jsonschema.SchemaRef(jsonschema.Schema{ - id: 'pet' - title: 'Pet' - typ: 'object' - properties: { - 'id': jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/PetId' - }), - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - }) - } - ] - example: openrpc.ExamplePairing{ - result: openrpc.ExampleRef(openrpc.Example{ - name: 'Example response' - value: '[]' - }) - } - result: openrpc.ContentDescriptor{ - name: 'petId' - summary: 'ID of the created pet' - description: 'ID of the created pet' - required: true - schema: jsonschema.SchemaRef(jsonschema.Schema{ - ...jsonschema.schema_u32, - example: 1 - }) - } - errors: [ - openrpc.ErrorSpec{ - code: 400 - message: 'Invalid input' - } - ] - }, - specification.ActorMethod{ - name: 'getPet' - summary: 'Get a pet by ID' - example: openrpc.ExamplePairing{ - params: [ - openrpc.ExampleRef(openrpc.Example{ - name: 'Example petId' - description: 'Example ID of the pet to retrieve' - value: 1 - }) - ] - result: openrpc.ExampleRef(openrpc.Example{ - name: 'Example response' - value: json.raw_decode('{"id": 1, "name": "Fluffy", "tag": "dog"}')! - }) - } - parameters: [ - openrpc.ContentDescriptor{ - name: 'petId' - summary: 'ID of the pet to retrieve' - description: 'ID of the pet to retrieve' - required: true - schema: jsonschema.SchemaRef(jsonschema.Schema{ - ...jsonschema.schema_u32, - format:'uint32' - example: 1 - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'result' - description: 'The response of the operation.' - required: true - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/Pet' - }) - } - errors: [ - openrpc.ErrorSpec{ - code: 404 - message: 'Pet not found' - } - ] - }, - specification.ActorMethod{ - name: 'deletePet' - summary: 'Delete a pet by ID' - example: openrpc.ExamplePairing{ - params: [ - openrpc.ExampleRef(openrpc.Example{ - name: 'Example petId' - description: 'Example ID of the pet to delete' - value: 1 - }) - ] - } - parameters: [ - openrpc.ContentDescriptor{ - name: 'petId' - summary: 'ID of the pet to delete' - description: 'ID of the pet to delete' - required: true - schema: jsonschema.SchemaRef(jsonschema.Schema{ - ...jsonschema.schema_u32, - example: 1 - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'result' - description: 'The response of the operation.' - required: true - } - errors: [ - openrpc.ErrorSpec{ - code: 404 - message: 'Pet not found' - } - ] - } - ] - objects: [ - specification.BaseObject{ - schema: jsonschema.Schema{ - title: 'Pet' - typ: 'object' - properties: { - 'id': jsonschema.schema_u32, - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - } - } - ] + }) + } + parameters: [ + openrpc.ContentDescriptor{ + name: 'limit' + summary: 'Maximum number of pets to return' + description: 'Maximum number of pets to return' + required: false + schema: jsonschema.SchemaRef(jsonschema.Schema{ + ...jsonschema.schema_u32 + example: 10 + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'pets' + description: 'A paged array of pets' + schema: jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'array' + items: jsonschema.Items(jsonschema.SchemaRef(jsonschema.Schema{ + id: 'pet' + title: 'Pet' + typ: 'object' + properties: { + 'id': jsonschema.SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/PetId' + }) + 'name': jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'string' + }) + 'tag': jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'string' + }) + } + required: [ + 'id', + 'name', + ] + })) + }) + } + errors: [ + openrpc.ErrorSpec{ + code: 400 + message: 'Invalid request' + }, + ] + }, + specification.ActorMethod{ + name: 'newPet' + summary: 'Create a new pet' + parameters: [ + openrpc.ContentDescriptor{ + name: 'result' + description: 'The response of the operation.' + required: true + schema: jsonschema.SchemaRef(jsonschema.Schema{ + id: 'pet' + title: 'Pet' + typ: 'object' + properties: { + 'id': jsonschema.SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/PetId' + }) + 'name': jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'string' + }) + 'tag': jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'string' + }) + } + required: ['id', 'name'] + }) + }, + ] + example: openrpc.ExamplePairing{ + result: openrpc.ExampleRef(openrpc.Example{ + name: 'Example response' + value: '[]' + }) + } + result: openrpc.ContentDescriptor{ + name: 'petId' + summary: 'ID of the created pet' + description: 'ID of the created pet' + required: true + schema: jsonschema.SchemaRef(jsonschema.Schema{ + ...jsonschema.schema_u32 + example: 1 + }) + } + errors: [ + openrpc.ErrorSpec{ + code: 400 + message: 'Invalid input' + }, + ] + }, + specification.ActorMethod{ + name: 'getPet' + summary: 'Get a pet by ID' + example: openrpc.ExamplePairing{ + params: [ + openrpc.ExampleRef(openrpc.Example{ + name: 'Example petId' + description: 'Example ID of the pet to retrieve' + value: 1 + }), + ] + result: openrpc.ExampleRef(openrpc.Example{ + name: 'Example response' + value: json.raw_decode('{"id": 1, "name": "Fluffy", "tag": "dog"}')! + }) + } + parameters: [ + openrpc.ContentDescriptor{ + name: 'petId' + summary: 'ID of the pet to retrieve' + description: 'ID of the pet to retrieve' + required: true + schema: jsonschema.SchemaRef(jsonschema.Schema{ + ...jsonschema.schema_u32 + format: 'uint32' + example: 1 + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'result' + description: 'The response of the operation.' + required: true + schema: jsonschema.SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/Pet' + }) + } + errors: [ + openrpc.ErrorSpec{ + code: 404 + message: 'Pet not found' + }, + ] + }, + specification.ActorMethod{ + name: 'deletePet' + summary: 'Delete a pet by ID' + example: openrpc.ExamplePairing{ + params: [ + openrpc.ExampleRef(openrpc.Example{ + name: 'Example petId' + description: 'Example ID of the pet to delete' + value: 1 + }), + ] + } + parameters: [ + openrpc.ContentDescriptor{ + name: 'petId' + summary: 'ID of the pet to delete' + description: 'ID of the pet to delete' + required: true + schema: jsonschema.SchemaRef(jsonschema.Schema{ + ...jsonschema.schema_u32 + example: 1 + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'result' + description: 'The response of the operation.' + required: true + } + errors: [ + openrpc.ErrorSpec{ + code: 404 + message: 'Pet not found' + }, + ] + }, + ] + objects: [ + specification.BaseObject{ + schema: jsonschema.Schema{ + title: 'Pet' + typ: 'object' + properties: { + 'id': jsonschema.schema_u32 + 'name': jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'string' + }) + 'tag': jsonschema.SchemaRef(jsonschema.Schema{ + typ: 'string' + }) + } + required: ['id', 'name'] + } + }, + ] } const destination = '${os.dir(@FILE)}/testdata' fn test_generate_plain_actor_module() { - // plain actor module without interfaces + // plain actor module without interfaces actor_module := generate_actor_module(actor_spec)! - actor_module.write(destination, - format: true - overwrite: true - test: true - )! + actor_module.write(destination, + format: true + overwrite: true + test: true + )! } fn test_generate_actor_module_with_openrpc_interface() { - // plain actor module without interfaces + // plain actor module without interfaces actor_module := generate_actor_module(actor_spec, interfaces: [.openrpc])! - actor_module.write(destination, - format: true - overwrite: true - test: true - )! + actor_module.write(destination, + format: true + overwrite: true + test: true + )! } fn test_generate_actor_module_with_openapi_interface() { - // plain actor module without interfaces - actor_module := generate_actor_module(actor_spec, - interfaces: [.openapi] - )! - actor_module.write(destination, - format: true - overwrite: true - test: true - )! + // plain actor module without interfaces + actor_module := generate_actor_module(actor_spec, + interfaces: [.openapi] + )! + actor_module.write(destination, + format: true + overwrite: true + test: true + )! } fn test_generate_actor_module_with_all_interfaces() { - // plain actor module without interfaces - actor_module := generate_actor_module(actor_spec, - interfaces: [.openapi, .openrpc, .http] - )! - actor_module.write(destination, - format: true - overwrite: true - test: true - )! + // plain actor module without interfaces + actor_module := generate_actor_module(actor_spec, + interfaces: [.openapi, .openrpc, .http] + )! + actor_module.write(destination, + format: true + overwrite: true + test: true + )! } diff --git a/lib/baobab/generator/generate_clients.v b/lib/baobab/generator/generate_clients.v index c8649674..247cf88c 100644 --- a/lib/baobab/generator/generate_clients.v +++ b/lib/baobab/generator/generate_clients.v @@ -1,18 +1,18 @@ module generator -import freeflowuniverse.herolib.core.code { Param, Folder, IFile, VFile, CodeItem, File, Function, Import, Module, Struct, CustomCode, Result } +import freeflowuniverse.herolib.core.code { CodeItem, CustomCode, Function, Import, Param, Result, VFile } import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.schemas.jsonschema.codegen as jsonschema_codegen {schemaref_to_type} -import freeflowuniverse.herolib.schemas.openrpc.codegen {content_descriptor_to_parameter} -import freeflowuniverse.herolib.baobab.specification {ActorMethod, ActorSpecification} +import freeflowuniverse.herolib.schemas.jsonschema.codegen as jsonschema_codegen { schemaref_to_type } +import freeflowuniverse.herolib.schemas.openrpc.codegen { content_descriptor_to_parameter } +import freeflowuniverse.herolib.baobab.specification { ActorMethod, ActorSpecification } pub fn generate_client_file(spec ActorSpecification) !VFile { actor_name_snake := texttools.snake_case(spec.name) actor_name_pascal := texttools.pascal_case(spec.name) - + mut items := []CodeItem{} - items << CustomCode {' + items << CustomCode{' pub struct Client { stage.Client } @@ -22,12 +22,12 @@ pub fn generate_client_file(spec ActorSpecification) !VFile { Client: stage.new_client(config)! } }'} - + for method in spec.methods { items << generate_client_method(method)! } - - return VFile { + + return VFile{ imports: [ Import{ mod: 'freeflowuniverse.herolib.baobab.stage' @@ -36,39 +36,39 @@ pub fn generate_client_file(spec ActorSpecification) !VFile { mod: 'freeflowuniverse.herolib.core.redisclient' }, Import{ - mod: 'x.json2 as json' + mod: 'x.json2 as json' types: ['Any'] - } + }, ] - name: 'client_actor' - items: items + name: 'client_actor' + items: items } } pub fn generate_example_client_file(spec ActorSpecification) !VFile { actor_name_snake := texttools.snake_case(spec.name) actor_name_pascal := texttools.pascal_case(spec.name) - + mut items := []CodeItem{} - items << CustomCode {' + items << CustomCode{" pub struct Client { stage.Client } fn new_client() !Client { - mut redis := redisclient.new(\'localhost:6379\')! - mut rpc_q := redis.rpc_get(\'actor_example_\${name}\') + mut redis := redisclient.new('localhost:6379')! + mut rpc_q := redis.rpc_get('actor_example_\${name}') return Client{ rpc: rpc_q } - }'} - + }"} + for method in spec.methods { items << generate_client_method(method)! } - - return VFile { + + return VFile{ imports: [ Import{ mod: 'freeflowuniverse.herolib.baobab.stage' @@ -77,23 +77,23 @@ pub fn generate_example_client_file(spec ActorSpecification) !VFile { mod: 'freeflowuniverse.herolib.core.redisclient' }, Import{ - mod: 'x.json2 as json' + mod: 'x.json2 as json' types: ['Any'] - } + }, ] - name: 'client' - items: items + name: 'client' + items: items } } - - pub fn generate_client_method(method ActorMethod) !Function { name_fixed := texttools.snake_case(method.name) call_params := if method.parameters.len > 0 { method.parameters.map(texttools.snake_case(it.name)).map('Any(${it}.str())').join(', ') - } else {''} + } else { + '' + } params_stmt := if method.parameters.len == 0 { '' @@ -118,16 +118,19 @@ pub fn generate_client_method(method ActorMethod) !Function { result_stmt := if result_type == '' { '' } else { - "return json.decode[${result_type}](action.result)!" + 'return json.decode[${result_type}](action.result)!' } result_param := content_descriptor_to_parameter(method.result)! - return Function { - receiver: code.new_param(v: 'mut client Client')! - result: Param{...result_param, typ: Result{result_param.typ}} - name: name_fixed - body: '${params_stmt}\n${client_call_stmt}\n${result_stmt}' - summary: method.summary + return Function{ + receiver: code.new_param(v: 'mut client Client')! + result: Param{ + ...result_param + typ: Result{result_param.typ} + } + name: name_fixed + body: '${params_stmt}\n${client_call_stmt}\n${result_stmt}' + summary: method.summary description: method.description - params: method.parameters.map(content_descriptor_to_parameter(it)!) + params: method.parameters.map(content_descriptor_to_parameter(it)!) } -} \ No newline at end of file +} diff --git a/lib/baobab/generator/generate_command.v b/lib/baobab/generator/generate_command.v index 6eba3d01..e54ff226 100644 --- a/lib/baobab/generator/generate_command.v +++ b/lib/baobab/generator/generate_command.v @@ -1,8 +1,8 @@ module generator -import freeflowuniverse.herolib.core.code { Folder, IFile, VFile, CodeItem, File, Function, Import, Module, Struct, CustomCode } +import freeflowuniverse.herolib.core.code { CodeItem, CustomCode, Import, VFile } import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.baobab.specification {ActorMethod, ActorSpecification} +import freeflowuniverse.herolib.baobab.specification { ActorMethod, ActorSpecification } pub fn generate_command_file(spec ActorSpecification) !VFile { mut items := []CodeItem{} @@ -64,7 +64,7 @@ pub fn generate_method_cmd_function(actor_name string, method ActorMethod) strin actor_name_snake := texttools.snake_case(actor_name) method_name_snake := texttools.snake_case(method.name) - + method_call := if method.result.name == '' { '${actor_name_snake}.${method_name_snake}()!' } else { diff --git a/lib/baobab/generator/generate_interface.v b/lib/baobab/generator/generate_interface.v index e27a95ff..7a8ddea4 100644 --- a/lib/baobab/generator/generate_interface.v +++ b/lib/baobab/generator/generate_interface.v @@ -1,17 +1,17 @@ module generator -import freeflowuniverse.herolib.baobab.specification {ActorInterface} -import freeflowuniverse.herolib.core.code { Folder, IFile, VFile, CodeItem, File, Function, Import, Module, Struct, CustomCode } +import freeflowuniverse.herolib.baobab.specification { ActorInterface } +import freeflowuniverse.herolib.core.code { CustomCode, VFile } fn generate_openrpc_interface_files(interfaces []ActorInterface) (VFile, VFile) { http := ActorInterface.http in interfaces - iface_file := VFile { - name: 'interface_openrpc' + iface_file := VFile{ + name: 'interface_openrpc' items: [CustomCode{$tmpl('./templates/interface_openrpc.v.template')}] } - iface_test_file := VFile { - name: 'interface_openrpc_test' + iface_test_file := VFile{ + name: 'interface_openrpc_test' items: [CustomCode{$tmpl('./templates/interface_openrpc_test.v.template')}] } return iface_file, iface_test_file @@ -20,12 +20,12 @@ fn generate_openrpc_interface_files(interfaces []ActorInterface) (VFile, VFile) fn generate_openapi_interface_files(interfaces []ActorInterface) (VFile, VFile) { http := ActorInterface.http in interfaces dollar := '$' - iface_file := VFile { - name: 'interface_openapi' + iface_file := VFile{ + name: 'interface_openapi' items: [CustomCode{$tmpl('./templates/interface_openapi.v.template')}] } - iface_test_file := VFile { - name: 'interface_openapi_test' + iface_test_file := VFile{ + name: 'interface_openapi_test' items: [CustomCode{$tmpl('./templates/interface_openapi_test.v.template')}] } return iface_file, iface_test_file @@ -36,12 +36,12 @@ fn generate_http_interface_files(controllers []ActorInterface) (VFile, VFile) { openapi := ActorInterface.openapi in controllers openrpc := ActorInterface.openrpc in controllers - iface_file := VFile { - name: 'interface_http' + iface_file := VFile{ + name: 'interface_http' items: [CustomCode{$tmpl('./templates/interface_http.v.template')}] } - iface_test_file := VFile { - name: 'interface_http_test' + iface_test_file := VFile{ + name: 'interface_http_test' items: [CustomCode{$tmpl('./templates/interface_http_test.v.template')}] } return iface_file, iface_test_file diff --git a/lib/baobab/generator/generate_methods.v b/lib/baobab/generator/generate_methods.v index 44d5589e..2c603c3f 100644 --- a/lib/baobab/generator/generate_methods.v +++ b/lib/baobab/generator/generate_methods.v @@ -1,62 +1,80 @@ module generator -import freeflowuniverse.herolib.core.code { Array, Folder, IFile, VFile, CodeItem, File, Function, Param, Import, Module, Struct, CustomCode, Result } +import freeflowuniverse.herolib.core.code { Array, CodeItem, Function, Import, Param, Result, Struct, VFile } import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.schemas.openrpc {ContentDescriptor} -import freeflowuniverse.herolib.schemas.openrpc.codegen {content_descriptor_to_parameter, content_descriptor_to_struct} -import freeflowuniverse.herolib.schemas.jsonschema {Schema} -import freeflowuniverse.herolib.schemas.jsonschema.codegen as jsonschema_codegen {schema_to_struct} -import freeflowuniverse.herolib.baobab.specification {ActorMethod, ActorSpecification} - +import freeflowuniverse.herolib.schemas.openrpc +import freeflowuniverse.herolib.schemas.openrpc.codegen { content_descriptor_to_parameter, content_descriptor_to_struct } +import freeflowuniverse.herolib.schemas.jsonschema { Schema } +import freeflowuniverse.herolib.schemas.jsonschema.codegen as jsonschema_codegen +import freeflowuniverse.herolib.baobab.specification { ActorMethod, ActorSpecification } + const crud_prefixes = ['new', 'get', 'set', 'delete', 'list'] pub fn generate_methods_file(spec ActorSpecification) !VFile { name_snake := texttools.snake_case(spec.name) actor_name_pascal := texttools.pascal_case(spec.name) - + receiver := generate_methods_receiver(spec.name) - receiver_param := Param { + receiver_param := Param{ mutable: true - name: name_snake[0].ascii_str() // receiver is first letter of domain - typ: code.Result{code.Object{receiver.name}} + name: name_snake[0].ascii_str() // receiver is first letter of domain + typ: Result{code.Object{receiver.name}} } mut items := [CodeItem(receiver), CodeItem(generate_core_factory(receiver_param))] for method in spec.methods { - items << generate_method_code(receiver_param, ActorMethod{...method, category: spec.method_type(method)})! + items << generate_method_code(receiver_param, ActorMethod{ + ...method + category: spec.method_type(method) + })! } - - return VFile { - name: 'methods' - imports: [Import{mod: 'freeflowuniverse.herolib.baobab.osis', types: ['OSIS']}] - items: items + + return VFile{ + name: 'methods' + imports: [ + Import{ + mod: 'freeflowuniverse.herolib.baobab.osis' + types: ['OSIS'] + }, + ] + items: items } } -fn generate_methods_receiver(name string) code.Struct { - return code.Struct { +fn generate_methods_receiver(name string) Struct { + return Struct{ is_pub: true - name: '${texttools.pascal_case(name)}' - fields: [code.StructField{is_mut: true, name: 'osis', typ:code.Object{'OSIS'}}] + name: '${texttools.pascal_case(name)}' + fields: [ + code.StructField{ + is_mut: true + name: 'osis' + typ: code.Object{'OSIS'} + }, + ] } } -fn generate_core_factory(receiver code.Param) code.Function { - return code.Function { +fn generate_core_factory(receiver Param) Function { + return Function{ is_pub: true - name: 'new_${receiver.typ.symbol()}' - body: "return ${receiver.typ.symbol().trim_left('!?')}{osis: osis.new()!}" + name: 'new_${receiver.typ.symbol()}' + body: 'return ${receiver.typ.symbol().trim_left('!?')}{osis: osis.new()!}' result: receiver } } // returns bodyless method prototype -pub fn generate_method_code(receiver code.Param, method ActorMethod) ![]CodeItem { +pub fn generate_method_code(receiver Param, method ActorMethod) ![]CodeItem { result_param := content_descriptor_to_parameter(method.result)! - + mut method_code := []CodeItem{} // TODO: document assumption - obj_params := method.parameters.filter(if it.schema is Schema {it.schema.typ == 'object'} else {false}).map(content_descriptor_to_struct(it)) + obj_params := method.parameters.filter(if it.schema is Schema { + it.schema.typ == 'object' + } else { + false + }).map(content_descriptor_to_struct(it)) if obj_param := obj_params[0] { method_code << obj_param } @@ -69,7 +87,7 @@ pub fn generate_method_code(receiver code.Param, method ActorMethod) ![]CodeItem .base_object_set { base_object_set_body(receiver, method)! } .base_object_delete { base_object_delete_body(receiver, method)! } .base_object_list { base_object_list_body(receiver, method)! } - else {"panic('implement')"} + else { "panic('implement')" } } fn_prototype := generate_method_prototype(receiver, method)! @@ -81,15 +99,18 @@ pub fn generate_method_code(receiver code.Param, method ActorMethod) ![]CodeItem } // returns bodyless method prototype -pub fn generate_method_prototype(receiver code.Param, method ActorMethod) !Function { +pub fn generate_method_prototype(receiver Param, method ActorMethod) !Function { result_param := content_descriptor_to_parameter(method.result)! return Function{ - name: texttools.snake_case(method.name) - receiver: receiver - result: Param {...result_param, typ: Result{result_param.typ}} - summary: method.summary + name: texttools.snake_case(method.name) + receiver: receiver + result: Param{ + ...result_param + typ: Result{result_param.typ} + } + summary: method.summary description: method.description - params: method.parameters.map(content_descriptor_to_parameter(it)!) + params: method.parameters.map(content_descriptor_to_parameter(it)!) } } diff --git a/lib/baobab/generator/generate_methods_example.v b/lib/baobab/generator/generate_methods_example.v index 51998d54..b0d996fe 100644 --- a/lib/baobab/generator/generate_methods_example.v +++ b/lib/baobab/generator/generate_methods_example.v @@ -1,60 +1,69 @@ module generator -import freeflowuniverse.herolib.core.code { Array, Folder, IFile, VFile, CodeItem, File, Function, Param, Import, Module, Struct, CustomCode, Result } +import freeflowuniverse.herolib.core.code { CodeItem, Function, Import, Param, Result, Struct, VFile } import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.schemas.openrpc {Example} -import freeflowuniverse.herolib.schemas.jsonschema {Schema} -import freeflowuniverse.herolib.schemas.jsonschema.codegen as jsonschema_codegen {schema_to_struct} -import freeflowuniverse.herolib.schemas.openrpc.codegen {content_descriptor_to_parameter} -import freeflowuniverse.herolib.baobab.specification {ActorMethod, ActorSpecification} +import freeflowuniverse.herolib.schemas.openrpc { Example } +import freeflowuniverse.herolib.schemas.jsonschema +import freeflowuniverse.herolib.schemas.jsonschema.codegen as jsonschema_codegen +import freeflowuniverse.herolib.schemas.openrpc.codegen { content_descriptor_to_parameter } +import freeflowuniverse.herolib.baobab.specification { ActorMethod, ActorSpecification } pub fn generate_methods_example_file(spec ActorSpecification) !VFile { name_snake := texttools.snake_case(spec.name) name_pascal := texttools.pascal_case(spec.name) - + receiver := generate_example_methods_receiver(spec.name) - receiver_param := Param { + receiver_param := Param{ mutable: true - name: name_snake[0].ascii_str() - typ: code.Result{code.Object{receiver.name}} + name: name_snake[0].ascii_str() + typ: Result{code.Object{receiver.name}} } mut items := [CodeItem(receiver), CodeItem(generate_core_example_factory(receiver_param))] for method in spec.methods { - items << generate_method_example_code(receiver_param, ActorMethod{...method, category: spec.method_type(method)})! + items << generate_method_example_code(receiver_param, ActorMethod{ + ...method + category: spec.method_type(method) + })! } - - return VFile { - name: 'methods_example' + + return VFile{ + name: 'methods_example' imports: [ - Import{mod: 'freeflowuniverse.herolib.baobab.osis', types: ['OSIS']}, - Import{mod: 'x.json2 as json'} + Import{ + mod: 'freeflowuniverse.herolib.baobab.osis' + types: ['OSIS'] + }, + Import{ + mod: 'x.json2 as json' + }, ] - items: items + items: items } } -fn generate_core_example_factory(receiver code.Param) code.Function { - return code.Function { +fn generate_core_example_factory(receiver Param) Function { + return Function{ is_pub: true - name: 'new_${texttools.snake_case(receiver.typ.symbol())}' - body: "return ${receiver.typ.symbol().trim_left('!?')}{OSIS: osis.new()!}" + name: 'new_${texttools.snake_case(receiver.typ.symbol())}' + body: 'return ${receiver.typ.symbol().trim_left('!?')}{OSIS: osis.new()!}' result: receiver } } -fn generate_example_methods_receiver(name string) code.Struct { - return code.Struct { +fn generate_example_methods_receiver(name string) Struct { + return Struct{ is_pub: true - name: '${texttools.pascal_case(name)}Example' - embeds: [code.Struct{name:'OSIS'}] + name: '${texttools.pascal_case(name)}Example' + embeds: [Struct{ + name: 'OSIS' + }] } } - // returns bodyless method prototype -pub fn generate_method_example_code(receiver code.Param, method ActorMethod) ![]CodeItem { +pub fn generate_method_example_code(receiver Param, method ActorMethod) ![]CodeItem { result_param := content_descriptor_to_parameter(method.result)! - + mut method_code := []CodeItem{} // TODO: document assumption // obj_params := method.parameters.filter(if it.schema is Schema {it.schema.typ == 'object'} else {false}).map(schema_to_struct(it.schema as Schema)) @@ -63,16 +72,17 @@ pub fn generate_method_example_code(receiver code.Param, method ActorMethod) ![] // } // check if method is a Base Object CRUD Method and - // if so generate the method's body - body := if !method_is_void(method)! { + // if so generate the method's body + body := if !method_is_void(method)! { if method.example.result is Example { "json_str := '${method.example.result.value}' - return ${generate_decode_stmt('json_str', method.result)!}" + return ${generate_decode_stmt('json_str', + method.result)!}" } else { - "return ${result_param.typ.empty_value()}" + 'return ${result_param.typ.empty_value()}' } } else { - "" + '' } fn_prototype := generate_method_prototype(receiver, method)! @@ -81,4 +91,4 @@ pub fn generate_method_example_code(receiver code.Param, method ActorMethod) ![] body: body } return method_code -} \ No newline at end of file +} diff --git a/lib/baobab/generator/generate_methods_interface.v b/lib/baobab/generator/generate_methods_interface.v index ad6b4bbd..a9b27b6d 100644 --- a/lib/baobab/generator/generate_methods_interface.v +++ b/lib/baobab/generator/generate_methods_interface.v @@ -1,15 +1,20 @@ module generator -import freeflowuniverse.herolib.core.code { Array, Folder, IFile, VFile, CodeItem, File, Function, Param, Import, Module, Struct, CustomCode, Result } +import freeflowuniverse.herolib.core.code { CodeItem, Import, Param, VFile } import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.schemas.openrpc.codegen {content_descriptor_to_parameter} -import freeflowuniverse.herolib.baobab.specification {ActorMethod, ActorSpecification} +import freeflowuniverse.herolib.schemas.openrpc.codegen +import freeflowuniverse.herolib.baobab.specification { ActorSpecification } pub fn generate_methods_interface_file(spec ActorSpecification) !VFile { - return VFile { - name: 'methods_interface' - imports: [Import{mod: 'freeflowuniverse.herolib.baobab.osis', types: ['OSIS']}] - items: [code.CodeItem(generate_methods_interface_declaration(spec)!)] + return VFile{ + name: 'methods_interface' + imports: [ + Import{ + mod: 'freeflowuniverse.herolib.baobab.osis' + types: ['OSIS'] + }, + ] + items: [CodeItem(generate_methods_interface_declaration(spec)!)] } } @@ -18,14 +23,14 @@ pub fn generate_methods_interface_declaration(spec ActorSpecification) !code.Int name_snake := texttools.snake_case(spec.name) name_pascal := texttools.pascal_case(spec.name) receiver := generate_methods_receiver(spec.name) - receiver_param := Param { + receiver_param := Param{ mutable: true - name: name_snake[0].ascii_str() - typ: code.Object{receiver.name} + name: name_snake[0].ascii_str() + typ: code.Object{receiver.name} } - return code.Interface { - is_pub: true - name: 'I${name_pascal}' + return code.Interface{ + is_pub: true + name: 'I${name_pascal}' methods: spec.methods.map(generate_method_prototype(receiver_param, it)!) } } diff --git a/lib/baobab/generator/generate_model.v b/lib/baobab/generator/generate_model.v index 476012e8..d5be5c46 100644 --- a/lib/baobab/generator/generate_model.v +++ b/lib/baobab/generator/generate_model.v @@ -1,19 +1,19 @@ module generator -import freeflowuniverse.herolib.core.code { Folder, IFile, VFile, CodeItem, File, Function, Param, Import, Module, Struct, CustomCode } +import freeflowuniverse.herolib.core.code { CodeItem, Struct, VFile } import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.schemas.jsonschema.codegen {schema_to_struct} -import freeflowuniverse.herolib.baobab.specification {ActorMethod, ActorSpecification} +import freeflowuniverse.herolib.schemas.jsonschema.codegen { schema_to_struct } +import freeflowuniverse.herolib.baobab.specification { ActorSpecification } pub fn generate_model_file(spec ActorSpecification) !VFile { actor_name_snake := texttools.snake_case(spec.name) actor_name_pascal := texttools.pascal_case(spec.name) - - return VFile { - name: 'model' - items: spec.objects.map(CodeItem( - Struct {...schema_to_struct(it.schema) - is_pub: true - })) + + return VFile{ + name: 'model' + items: spec.objects.map(CodeItem(Struct{ + ...schema_to_struct(it.schema) + is_pub: true + })) } -} \ No newline at end of file +} diff --git a/lib/baobab/generator/generate_openapi.v b/lib/baobab/generator/generate_openapi.v index 3edce08f..cdba1fe9 100644 --- a/lib/baobab/generator/generate_openapi.v +++ b/lib/baobab/generator/generate_openapi.v @@ -1,24 +1,24 @@ module generator import json -import freeflowuniverse.herolib.core.code { VFile, File, Folder, Function, Module, Struct } -import freeflowuniverse.herolib.schemas.openapi { Components, OpenAPI, Operation } +import freeflowuniverse.herolib.core.code { File, Folder } +import freeflowuniverse.herolib.schemas.openapi { OpenAPI, Operation } import freeflowuniverse.herolib.schemas.openapi.codegen -import freeflowuniverse.herolib.schemas.jsonschema.codegen as jsonschema_codegen {schema_to_type} +import freeflowuniverse.herolib.schemas.jsonschema.codegen as jsonschema_codegen { schema_to_type } import net.http pub fn generate_openapi_file(specification OpenAPI) !File { openapi_json := specification.encode_json() return File{ - name: 'openapi' + name: 'openapi' extension: 'json' - content: openapi_json + content: openapi_json } } pub fn generate_openapi_ts_client(specification OpenAPI) !Folder { return codegen.ts_client_folder(specification, - body_generator: body_generator + body_generator: body_generator custom_client_code: ' private restClient: HeroRestClient; constructor(heroKeysClient: any, debug: boolean = true) { @@ -28,22 +28,29 @@ pub fn generate_openapi_ts_client(specification OpenAPI) !Folder { )! } -fn body_generator(op openapi.Operation, path_ string, method http.Method) string { - path := path_.replace('{','\${') +fn body_generator(op Operation, path_ string, method http.Method) string { + path := path_.replace('{', '\${') return match method { .post { if schema := op.payload_schema() { symbol := schema_to_type(schema).typescript() "return this.restClient.post<${symbol}>('${path}', data);" - } else {''} + } else { + '' + } } .get { if schema := op.response_schema() { // if op.params.len symbol := schema_to_type(schema).typescript() "return this.restClient.get<${symbol}>('${path}', data);" - } else {''} - } else {''} + } else { + '' + } + } + else { + '' + } } // return if operation_is_base_object_method(op) { // bo_method := operation_to_base_object_method(op) @@ -58,7 +65,6 @@ fn body_generator(op openapi.Operation, path_ string, method http.Method) string // } else {''} } - // pub fn operation_is_base_object_method(op openapi.Operation, base_objs []string) BaseObjectMethod { // // name := texttools.pascal_case(op.operation_id) @@ -81,29 +87,25 @@ fn body_generator(op openapi.Operation, path_ string, method http.Method) string // } // } // } - - - - - // return if operation_is_base_object_method(op) { - // bo_method := operation_to_base_object_method(op) - // match bo_method. { - // .new { ts_client_new_body(op, path) } - // .get { ts_client_get_body(op, path) } - // .set { ts_client_set_body(op, path) } - // .delete { ts_client_delete_body(op, path) } - // .list { ts_client_list_body(op, path) } - // else {''} - // } - // } else {''} -// } +// return if operation_is_base_object_method(op) { +// bo_method := operation_to_base_object_method(op) +// match bo_method. { +// .new { ts_client_new_body(op, path) } +// .get { ts_client_get_body(op, path) } +// .set { ts_client_set_body(op, path) } +// .delete { ts_client_delete_body(op, path) } +// .list { ts_client_list_body(op, path) } +// else {''} +// } +// } else {''} +// } fn get_endpoint(path string) string { return if path == '' { '' } else { - "/${path.trim('/')}" + '/${path.trim('/')}' } } @@ -155,4 +157,4 @@ fn get_endpoint(path string) string { // pub: // typ BaseObjectMethodType // object string // the name of the base object -// } \ No newline at end of file +// } diff --git a/lib/baobab/generator/generate_openrpc.v b/lib/baobab/generator/generate_openrpc.v index 2ef8bd0b..04c8b1de 100644 --- a/lib/baobab/generator/generate_openrpc.v +++ b/lib/baobab/generator/generate_openrpc.v @@ -1,8 +1,8 @@ module generator import json -import freeflowuniverse.herolib.core.code { VFile, File, Function, Module, Struct } -import freeflowuniverse.herolib.schemas.openrpc { Components, OpenRPC } +import freeflowuniverse.herolib.core.code { File, Function, Struct, VFile } +import freeflowuniverse.herolib.schemas.openrpc { OpenRPC } import freeflowuniverse.herolib.schemas.openrpc.codegen { generate_client_file, generate_client_test_file } pub fn generate_openrpc_file(spec OpenRPC) !File { @@ -19,8 +19,8 @@ pub fn generate_openrpc_client_file(spec OpenRPC) !VFile { // objects_map[object.structure.name] = object.structure // } client_file := generate_client_file(spec, objects_map)! - return VFile { - ...client_file, + return VFile{ + ...client_file name: 'client_openrpc' } } @@ -35,8 +35,8 @@ pub fn generate_openrpc_client_test_file(spec OpenRPC) !VFile { // methods_map[method.func.name] = method.func // } file := generate_client_test_file(spec, methods_map, objects_map)! - return VFile { - ...file, + return VFile{ + ...file name: 'client_openrpc_test' } } diff --git a/lib/baobab/generator/generate_scripts.v b/lib/baobab/generator/generate_scripts.v index 787ed017..a88e1d75 100644 --- a/lib/baobab/generator/generate_scripts.v +++ b/lib/baobab/generator/generate_scripts.v @@ -1,13 +1,13 @@ module generator -import freeflowuniverse.herolib.core.code { Folder, File } +import freeflowuniverse.herolib.core.code { File, Folder } import freeflowuniverse.herolib.core.texttools // generates the folder with runnable scripts of the actor pub fn generate_scripts_folder(name string, example bool) Folder { - actor_name := '${texttools.snake_case(name)}_actor' - return Folder { - name: 'scripts' + actor_name := '${texttools.snake_case(name)}_actor' + return Folder{ + name: 'scripts' files: [ generate_run_script(actor_name), generate_docs_script(actor_name), @@ -22,54 +22,54 @@ pub fn generate_scripts_folder(name string, example bool) Folder { // Function to generate a script for running an actor fn generate_run_script(actor_name string) File { - actor_title := texttools.title_case(actor_name) - dollar := '$' - return File{ - name: 'run' - extension:'sh' - content: $tmpl('./templates/run.sh.template') - } + actor_title := texttools.title_case(actor_name) + dollar := '$' + return File{ + name: 'run' + extension: 'sh' + content: $tmpl('./templates/run.sh.template') + } } // Function to generate a script for running an actor fn generate_docs_script(actor_name string) File { - dollar := '$' - return File{ - name: 'docs' - extension:'vsh' - content: $tmpl('./templates/docs.vsh.template') - } + dollar := '$' + return File{ + name: 'docs' + extension: 'vsh' + content: $tmpl('./templates/docs.vsh.template') + } } // Function to generate a script for running an actor fn generate_run_actor_script(name string) File { - name_snake := texttools.snake_case(name) - name_pascal := texttools.pascal_case(name) - return File{ - name: 'run_actor' - extension:'vsh' - content: $tmpl('./templates/run_actor.vsh.template') - } + name_snake := texttools.snake_case(name) + name_pascal := texttools.pascal_case(name) + return File{ + name: 'run_actor' + extension: 'vsh' + content: $tmpl('./templates/run_actor.vsh.template') + } } // Function to generate a script for running an example actor fn generate_run_actor_example_script(name string) File { - name_snake := texttools.snake_case(name) - name_pascal := texttools.pascal_case(name) - return File{ - name: 'run_actor_example' - extension:'vsh' - content: $tmpl('./templates/run_actor_example.vsh.template') - } + name_snake := texttools.snake_case(name) + name_pascal := texttools.pascal_case(name) + return File{ + name: 'run_actor_example' + extension: 'vsh' + content: $tmpl('./templates/run_actor_example.vsh.template') + } } // Function to generate a script for running an HTTP server fn generate_run_http_server_script(name string) File { - port := 8080 - name_snake := texttools.snake_case(name) - return File{ - name: 'run_http_server' - extension:'vsh' - content: $tmpl('./templates/run_http_server.vsh.template') - } -} \ No newline at end of file + port := 8080 + name_snake := texttools.snake_case(name) + return File{ + name: 'run_http_server' + extension: 'vsh' + content: $tmpl('./templates/run_http_server.vsh.template') + } +} diff --git a/lib/baobab/generator/templates/client_test.v b/lib/baobab/generator/templates/client_test.v index af2f2fa0..cb98126f 100644 --- a/lib/baobab/generator/templates/client_test.v +++ b/lib/baobab/generator/templates/client_test.v @@ -9,7 +9,7 @@ fn mock_response() ! { mut redis := redisclient.new('localhost:6379')! mut rpc_q := redis.rpc_get('actor_pet_store') for { - rpc_q.process(fn(method string, data string)!string{ + rpc_q.process(fn (method string, data string) !string { return json.encode(method) })! time.sleep(time.millisecond * 100) // Prevent CPU spinning @@ -71,4 +71,4 @@ fn test_create_user() ! { mut client := new_client()! client.create_user()! println('test_create_user passed') -} \ No newline at end of file +} diff --git a/lib/baobab/generator/write_object_methods_test.v b/lib/baobab/generator/write_object_methods_test.v index 35319761..5332db82 100644 --- a/lib/baobab/generator/write_object_methods_test.v +++ b/lib/baobab/generator/write_object_methods_test.v @@ -17,11 +17,11 @@ import os pub fn test_generate_get_method() { generator := ActorGenerator{'test'} actor_struct := code.Struct{ - name: 'TestActor' + name: 'TestActor' fields: [ code.StructField{ name: 'test_struct_map' - typ: code.Type{ + typ: code.Type{ symbol: 'map[string]&TestStruct' } }, diff --git a/lib/baobab/osis/factory.v b/lib/baobab/osis/factory.v index 3d97a54d..2e45aeff 100644 --- a/lib/baobab/osis/factory.v +++ b/lib/baobab/osis/factory.v @@ -3,6 +3,6 @@ module osis pub fn new(config OSISConfig) !OSIS { return OSIS{ indexer: new_indexer()! - storer: new_storer()! + storer: new_storer()! } } diff --git a/lib/baobab/osis/indexer.v b/lib/baobab/osis/indexer.v index 0bfdef98..5be7f532 100644 --- a/lib/baobab/osis/indexer.v +++ b/lib/baobab/osis/indexer.v @@ -12,7 +12,7 @@ pub struct Indexer { @[params] pub struct IndexerConfig { db_path string - reset bool + reset bool } pub fn new_indexer(config IndexerConfig) !Indexer { @@ -81,7 +81,7 @@ fn (mut backend Indexer) create_root_object_table(object RootObject) ! { } // deletes an indexer table belonging to a root object -fn (mut backend Indexer) delete_table(object RootObject)! { +fn (mut backend Indexer) delete_table(object RootObject) ! { panic('implement') } @@ -105,7 +105,7 @@ fn get_table[T]() string { // returns the lists of the indices of a root objects db table, and corresponding values pub fn get_indices[T](object T) map[string]string { - mut indices := map[string]string + mut indices := map[string]string{} $for field in T.fields { if field.attrs.contains('index') { value := object.$(field.name) @@ -113,4 +113,4 @@ pub fn get_indices[T](object T) map[string]string { } } return indices -} \ No newline at end of file +} diff --git a/lib/baobab/osis/model.v b/lib/baobab/osis/model.v index f59847dc..64176fed 100644 --- a/lib/baobab/osis/model.v +++ b/lib/baobab/osis/model.v @@ -3,14 +3,14 @@ module osis pub struct OSIS { pub mut: indexer Indexer // storing indeces - storer Storer + storer Storer } @[params] pub struct OSISConfig { pub: directory string - name string - secret string - reset bool -} \ No newline at end of file + name string + secret string + reset bool +} diff --git a/lib/baobab/osis/storer.v b/lib/baobab/osis/storer.v index 864f2559..91ff7179 100644 --- a/lib/baobab/osis/storer.v +++ b/lib/baobab/osis/storer.v @@ -1,6 +1,6 @@ module osis -import freeflowuniverse.herolib.data.ourdb {OurDB} +import freeflowuniverse.herolib.data.ourdb { OurDB } import os pub struct Storer { @@ -9,7 +9,7 @@ pub mut: } pub fn new_storer() !Storer { - return Storer { + return Storer{ db: ourdb.new()! } -} \ No newline at end of file +} diff --git a/lib/baobab/osis/storer_generic.v b/lib/baobab/osis/storer_generic.v index fe987812..4d401182 100644 --- a/lib/baobab/osis/storer_generic.v +++ b/lib/baobab/osis/storer_generic.v @@ -20,4 +20,4 @@ pub fn (mut storer Storer) generic_set[T](obj T) ! { pub fn (mut storer Storer) delete(id u32) ! { storer.db.delete(id)! -} \ No newline at end of file +} diff --git a/lib/baobab/specification/from_openapi.v b/lib/baobab/specification/from_openapi.v index 88baa318..6b67f8b5 100644 --- a/lib/baobab/specification/from_openapi.v +++ b/lib/baobab/specification/from_openapi.v @@ -1,19 +1,19 @@ module specification import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.core.code { Struct, Function } +import freeflowuniverse.herolib.core.code { Struct } import freeflowuniverse.herolib.schemas.jsonschema { Schema, SchemaRef } -import freeflowuniverse.herolib.schemas.openapi { Operation, Parameter, OpenAPI, Components, Info, PathItem, ServerSpec, MediaType } -import freeflowuniverse.herolib.schemas.openrpc { ExamplePairing, Example, ExampleRef, ContentDescriptor, ErrorSpec } +import freeflowuniverse.herolib.schemas.openapi { MediaType, OpenAPI, Parameter } +import freeflowuniverse.herolib.schemas.openrpc { ContentDescriptor, ErrorSpec, Example, ExamplePairing, ExampleRef } // Helper function: Convert OpenAPI parameter to ContentDescriptor fn openapi_param_to_content_descriptor(param Parameter) ContentDescriptor { return ContentDescriptor{ - name: param.name, - summary: param.description, - description: param.description, - required: param.required, - schema: param.schema + name: param.name + summary: param.description + description: param.description + required: param.required + schema: param.schema } } @@ -22,9 +22,9 @@ fn openapi_param_to_example(param Parameter) ?Example { if param.schema is Schema { if param.schema.example.str() != '' { return Example{ - name: 'Example ${param.name}', - description: 'Example ${param.description}', - value: param.schema.example + name: 'Example ${param.name}' + description: 'Example ${param.description}' + value: param.schema.example } } } @@ -32,21 +32,25 @@ fn openapi_param_to_example(param Parameter) ?Example { } // Helper function: Convert OpenAPI operation to ActorMethod -fn openapi_operation_to_actor_method(info openapi.OperationInfo) ActorMethod { +fn openapi_operation_to_actor_method(info OperationInfo) ActorMethod { mut parameters := []ContentDescriptor{} - mut example_parameters:= []Example{} - + mut example_parameters := []Example{} + for param in info.operation.parameters { parameters << openapi_param_to_content_descriptor(param) - example_parameters << openapi_param_to_example(param) or { - continue - } + example_parameters << openapi_param_to_example(param) or { continue } } if schema_ := info.operation.payload_schema() { // TODO: document assumption - schema := Schema{...schema_, title: texttools.pascal_case(info.operation.operation_id)} - parameters << ContentDescriptor {name: 'data', schema: SchemaRef(schema)} + schema := Schema{ + ...schema_ + title: texttools.pascal_case(info.operation.operation_id) + } + parameters << ContentDescriptor{ + name: 'data' + schema: SchemaRef(schema) + } } mut success_responses := map[string]MediaType{} @@ -57,54 +61,60 @@ fn openapi_operation_to_actor_method(info openapi.OperationInfo) ActorMethod { } } - if success_responses.len > 1 || success_responses.len == 0 { + if success_responses.len > 1 || success_responses.len == 0 { panic('Actor specification must specify one successful response.') } response_success := success_responses.values()[0] mut result := ContentDescriptor{ - name: "result", - description: "The response of the operation.", - required: true, - schema: response_success.schema + name: 'result' + description: 'The response of the operation.' + required: true + schema: response_success.schema } example_result := if response_success.example.str() != '' { Example{ - name: 'Example response', + name: 'Example response' value: response_success.example } - } else {Example{}} + } else { + Example{} + } pairing := if example_result != Example{} || example_parameters.len > 0 { ExamplePairing{ params: example_parameters.map(ExampleRef(it)) result: ExampleRef(example_result) - } - } else {ExamplePairing{}} + } + } else { + ExamplePairing{} + } mut errors := []ErrorSpec{} for status, response in info.operation.responses { if status.int() >= 400 { error_schema := if response.content.len > 0 { response.content.values()[0].schema - } else {Schema{}} + } else { + Schema{} + } errors << ErrorSpec{ - code: status.int(), - message: response.description, - data: error_schema, // Extend if error schema is defined + code: status.int() + message: response.description + data: error_schema // Extend if error schema is defined } } } return ActorMethod{ - name: info.operation.operation_id, - description: info.operation.description, - summary: info.operation.summary, - parameters: parameters, - example: pairing - result: result, - errors: errors, + name: info.operation.operation_id + description: info.operation.description + summary: info.operation.summary + parameters: parameters + example: pairing + result: result + errors: errors } } @@ -112,7 +122,7 @@ fn openapi_operation_to_actor_method(info openapi.OperationInfo) ActorMethod { fn openapi_schema_to_struct(name string, schema SchemaRef) Struct { // Assuming schema properties can be mapped to Struct fields return Struct{ - name: name, + name: name } } @@ -122,7 +132,7 @@ pub fn from_openapi(spec_raw OpenAPI) !ActorSpecification { mut objects := []BaseObject{} // get all operations for path as list of tuple [](path_string, http.Method, openapi.Operation) - + // Extract methods from OpenAPI paths // for path, item in spec.paths { // if item.get.operation_id != '' { @@ -153,16 +163,18 @@ pub fn from_openapi(spec_raw OpenAPI) !ActorSpecification { // Extract objects from OpenAPI components.schemas for name, schema in spec.components.schemas { - objects << BaseObject{schema: schema as Schema} + objects << BaseObject{ + schema: schema as Schema + } } return ActorSpecification{ - openapi: spec_raw - name: spec.info.title, - description: spec.info.description, - structure: Struct{}, // Assuming no top-level structure for this use case - interfaces: [.openapi], // Default to OpenAPI for input - methods: spec.get_operations().map(openapi_operation_to_actor_method(it)), - objects: objects, + openapi: spec_raw + name: spec.info.title + description: spec.info.description + structure: Struct{} // Assuming no top-level structure for this use case + interfaces: [.openapi] // Default to OpenAPI for input + methods: spec.get_operations().map(openapi_operation_to_actor_method(it)) + objects: objects } -} \ No newline at end of file +} diff --git a/lib/baobab/specification/from_openapi_test.v b/lib/baobab/specification/from_openapi_test.v index 27bdf943..57b2fef4 100644 --- a/lib/baobab/specification/from_openapi_test.v +++ b/lib/baobab/specification/from_openapi_test.v @@ -1,52 +1,52 @@ module specification -import x.json2 as json {Any} -import freeflowuniverse.herolib.core.code { Struct, Function } +import x.json2 as json +import freeflowuniverse.herolib.core.code { Struct } import freeflowuniverse.herolib.schemas.openrpc { ContentDescriptor, ErrorSpec } -import freeflowuniverse.herolib.schemas.openapi { OpenAPI, Info, ServerSpec, Components, Operation, PathItem, PathRef } -import freeflowuniverse.herolib.schemas.jsonschema {Schema, Reference, SchemaRef} +import freeflowuniverse.herolib.schemas.openapi { Components, Info, OpenAPI, Operation, PathItem, ServerSpec } +import freeflowuniverse.herolib.schemas.jsonschema { Reference, Schema, SchemaRef } -const openapi_spec = openapi.OpenAPI{ - openapi: '3.0.3' - info: openapi.Info{ - title: 'Pet Store API' +const openapi_spec = OpenAPI{ + openapi: '3.0.3' + info: Info{ + title: 'Pet Store API' description: 'A sample API for a pet store' - version: '1.0.0' + version: '1.0.0' } - servers: [ - openapi.ServerSpec{ - url: 'https://api.petstore.example.com/v1' + servers: [ + ServerSpec{ + url: 'https://api.petstore.example.com/v1' description: 'Production server' }, - openapi.ServerSpec{ - url: 'https://staging.petstore.example.com/v1' + ServerSpec{ + url: 'https://staging.petstore.example.com/v1' description: 'Staging server' - } + }, ] - paths: { - '/pets': openapi.PathItem{ - get: openapi.Operation{ - summary: 'List all pets' + paths: { + '/pets': PathItem{ + get: Operation{ + summary: 'List all pets' operation_id: 'listPets' - parameters: [ + parameters: [ openapi.Parameter{ - name: 'limit' - in_: 'query' + name: 'limit' + in_: 'query' description: 'Maximum number of pets to return' - required: false - schema: Schema{ - typ: 'integer' - format: 'int32' + required: false + schema: Schema{ + typ: 'integer' + format: 'int32' example: 10 } - } + }, ] - responses: { + responses: { '200': openapi.ResponseSpec{ description: 'A paginated list of pets' - content: { + content: { 'application/json': openapi.MediaType{ - schema: Reference{ + schema: Reference{ ref: '#/components/schemas/Pets' } example: json.raw_decode('[ @@ -61,26 +61,26 @@ const openapi_spec = openapi.OpenAPI{ } } } - post: openapi.Operation{ - summary: 'Create a new pet' + post: Operation{ + summary: 'Create a new pet' operation_id: 'createPet' request_body: openapi.RequestBody{ required: true - content: { + content: { 'application/json': openapi.MediaType{ - schema: Reference{ + schema: Reference{ ref: '#/components/schemas/NewPet' } example: json.raw_decode('{ "name": "Bella", "tag": "dog" }')! } } } - responses: { + responses: { '201': openapi.ResponseSpec{ description: 'Pet created' - content: { + content: { 'application/json': openapi.MediaType{ - schema: Reference{ + schema: Reference{ ref: '#/components/schemas/Pet' } example: json.raw_decode('{ "id": 3, "name": "Bella", "tag": "dog" }')! @@ -93,29 +93,29 @@ const openapi_spec = openapi.OpenAPI{ } } } - '/pets/{petId}': openapi.PathItem{ - get: openapi.Operation{ - summary: 'Get a pet by ID' + '/pets/{petId}': PathItem{ + get: Operation{ + summary: 'Get a pet by ID' operation_id: 'getPet' - parameters: [ + parameters: [ openapi.Parameter{ - name: 'petId' - in_: 'path' + name: 'petId' + in_: 'path' description: 'ID of the pet to retrieve' - required: true - schema: Schema{ - typ: 'integer' - format: 'int64' + required: true + schema: Schema{ + typ: 'integer' + format: 'int64' example: 1 } - } + }, ] - responses: { + responses: { '200': openapi.ResponseSpec{ description: 'A pet' - content: { + content: { 'application/json': openapi.MediaType{ - schema: Reference{ + schema: Reference{ ref: '#/components/schemas/Pet' } example: json.raw_decode('{ "id": 1, "name": "Fluffy", "tag": "dog" }')! @@ -127,23 +127,23 @@ const openapi_spec = openapi.OpenAPI{ } } } - delete: openapi.Operation{ - summary: 'Delete a pet by ID' + delete: Operation{ + summary: 'Delete a pet by ID' operation_id: 'deletePet' - parameters: [ + parameters: [ openapi.Parameter{ - name: 'petId' - in_: 'path' + name: 'petId' + in_: 'path' description: 'ID of the pet to delete' - required: true - schema: Schema{ - typ: 'integer' - format: 'int64' + required: true + schema: Schema{ + typ: 'integer' + format: 'int64' example: 1 } - } + }, ] - responses: { + responses: { '204': openapi.ResponseSpec{ description: 'Pet deleted' } @@ -154,38 +154,38 @@ const openapi_spec = openapi.OpenAPI{ } } } - components: openapi.Components{ + components: Components{ schemas: { - 'Pet': SchemaRef(Schema{ - typ: 'object' - required: ['id', 'name'] + 'Pet': SchemaRef(Schema{ + typ: 'object' + required: ['id', 'name'] properties: { - 'id': SchemaRef(Schema{ - typ: 'integer' + 'id': SchemaRef(Schema{ + typ: 'integer' format: 'int64' }) 'name': SchemaRef(Schema{ typ: 'string' }) - 'tag': SchemaRef(Schema{ + 'tag': SchemaRef(Schema{ typ: 'string' }) } }) 'NewPet': SchemaRef(Schema{ - typ: 'object' - required: ['name'] + typ: 'object' + required: ['name'] properties: { 'name': SchemaRef(Schema{ typ: 'string' }) - 'tag': SchemaRef(Schema{ + 'tag': SchemaRef(Schema{ typ: 'string' }) } }) - 'Pets': SchemaRef(Schema{ - typ: 'array' + 'Pets': SchemaRef(Schema{ + typ: 'array' items: SchemaRef(Reference{ ref: '#/components/schemas/Pet' }) @@ -194,207 +194,207 @@ const openapi_spec = openapi.OpenAPI{ } } -const actor_spec = specification.ActorSpecification{ - name: 'Pet Store API' - description: 'A sample API for a pet store' - structure: code.Struct{} - interfaces: [.openapi] - methods: [ - specification.ActorMethod{ - name: 'listPets' - summary: 'List all pets' - example: openrpc.ExamplePairing{ - params: [ - openrpc.ExampleRef(openrpc.Example{ - name: 'Example limit' - description: 'Example Maximum number of pets to return' - value: 10 - }) - ] - result: openrpc.ExampleRef(openrpc.Example{ - name: 'Example response' - value: json.raw_decode('[ +const actor_spec = ActorSpecification{ + name: 'Pet Store API' + description: 'A sample API for a pet store' + structure: Struct{} + interfaces: [.openapi] + methods: [ + ActorMethod{ + name: 'listPets' + summary: 'List all pets' + example: openrpc.ExamplePairing{ + params: [ + openrpc.ExampleRef(openrpc.Example{ + name: 'Example limit' + description: 'Example Maximum number of pets to return' + value: 10 + }), + ] + result: openrpc.ExampleRef(openrpc.Example{ + name: 'Example response' + value: json.raw_decode('[ {"id": 1, "name": "Fluffy", "tag": "dog"}, {"id": 2, "name": "Whiskers", "tag": "cat"} ]')! - }) - } - parameters: [ - openrpc.ContentDescriptor{ - name: 'limit' - summary: 'Maximum number of pets to return' - description: 'Maximum number of pets to return' - required: false - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'integer' - format: 'int32' - example: 10 - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'result' - description: 'The response of the operation.' - required: true - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/Pets' - }) - } - errors: [ - openrpc.ErrorSpec{ - code: 400 - message: 'Invalid request' - } - ] - }, - specification.ActorMethod{ - name: 'createPet' - summary: 'Create a new pet' - example: openrpc.ExamplePairing{ - result: openrpc.ExampleRef(openrpc.Example{ - name: 'Example response' - value: '[]' - }) - } - result: openrpc.ContentDescriptor{ - name: 'result' - description: 'The response of the operation.' - required: true - } - errors: [ - openrpc.ErrorSpec{ - code: 400 - message: 'Invalid input' - } - ] - }, - specification.ActorMethod{ - name: 'getPet' - summary: 'Get a pet by ID' - example: openrpc.ExamplePairing{ - params: [ - openrpc.ExampleRef(openrpc.Example{ - name: 'Example petId' - description: 'Example ID of the pet to retrieve' - value: 1 - }) - ] - result: openrpc.ExampleRef(openrpc.Example{ - name: 'Example response' - value: json.raw_decode('{"id": 1, "name": "Fluffy", "tag": "dog"}')! - }) - } - parameters: [ - openrpc.ContentDescriptor{ - name: 'petId' - summary: 'ID of the pet to retrieve' - description: 'ID of the pet to retrieve' - required: true - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'integer' - format: 'int64' - example: 1 - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'result' - description: 'The response of the operation.' - required: true - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/Pet' - }) - } - errors: [ - openrpc.ErrorSpec{ - code: 404 - message: 'Pet not found' - } - ] - }, - specification.ActorMethod{ - name: 'deletePet' - summary: 'Delete a pet by ID' - example: openrpc.ExamplePairing{ - params: [ - openrpc.ExampleRef(openrpc.Example{ - name: 'Example petId' - description: 'Example ID of the pet to delete' - value: 1 - }) - ] - } - parameters: [ - openrpc.ContentDescriptor{ - name: 'petId' - summary: 'ID of the pet to delete' - description: 'ID of the pet to delete' - required: true - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'integer' - format: 'int64' - example: 1 - }) - } - ] - result: openrpc.ContentDescriptor{ - name: 'result' - description: 'The response of the operation.' - required: true - } - errors: [ - openrpc.ErrorSpec{ - code: 404 - message: 'Pet not found' - } - ] - } - ] - objects: [ - specification.BaseObject{ - schema: jsonschema.Schema{ - typ: 'object' - properties: { - 'id': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'integer' - format: 'int64' - }), - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - } - }, - specification.BaseObject{ - schema: jsonschema.Schema{ - typ: 'object' - properties: { - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['name'] - } - }, - specification.BaseObject{ - schema: jsonschema.Schema{ - typ: 'array' - items: jsonschema.Items(jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/Pet' - })) - } - } - ] + }) + } + parameters: [ + ContentDescriptor{ + name: 'limit' + summary: 'Maximum number of pets to return' + description: 'Maximum number of pets to return' + required: false + schema: SchemaRef(Schema{ + typ: 'integer' + format: 'int32' + example: 10 + }) + }, + ] + result: ContentDescriptor{ + name: 'result' + description: 'The response of the operation.' + required: true + schema: SchemaRef(Reference{ + ref: '#/components/schemas/Pets' + }) + } + errors: [ + ErrorSpec{ + code: 400 + message: 'Invalid request' + }, + ] + }, + ActorMethod{ + name: 'createPet' + summary: 'Create a new pet' + example: openrpc.ExamplePairing{ + result: openrpc.ExampleRef(openrpc.Example{ + name: 'Example response' + value: '[]' + }) + } + result: ContentDescriptor{ + name: 'result' + description: 'The response of the operation.' + required: true + } + errors: [ + ErrorSpec{ + code: 400 + message: 'Invalid input' + }, + ] + }, + ActorMethod{ + name: 'getPet' + summary: 'Get a pet by ID' + example: openrpc.ExamplePairing{ + params: [ + openrpc.ExampleRef(openrpc.Example{ + name: 'Example petId' + description: 'Example ID of the pet to retrieve' + value: 1 + }), + ] + result: openrpc.ExampleRef(openrpc.Example{ + name: 'Example response' + value: json.raw_decode('{"id": 1, "name": "Fluffy", "tag": "dog"}')! + }) + } + parameters: [ + ContentDescriptor{ + name: 'petId' + summary: 'ID of the pet to retrieve' + description: 'ID of the pet to retrieve' + required: true + schema: SchemaRef(Schema{ + typ: 'integer' + format: 'int64' + example: 1 + }) + }, + ] + result: ContentDescriptor{ + name: 'result' + description: 'The response of the operation.' + required: true + schema: SchemaRef(Reference{ + ref: '#/components/schemas/Pet' + }) + } + errors: [ + ErrorSpec{ + code: 404 + message: 'Pet not found' + }, + ] + }, + ActorMethod{ + name: 'deletePet' + summary: 'Delete a pet by ID' + example: openrpc.ExamplePairing{ + params: [ + openrpc.ExampleRef(openrpc.Example{ + name: 'Example petId' + description: 'Example ID of the pet to delete' + value: 1 + }), + ] + } + parameters: [ + ContentDescriptor{ + name: 'petId' + summary: 'ID of the pet to delete' + description: 'ID of the pet to delete' + required: true + schema: SchemaRef(Schema{ + typ: 'integer' + format: 'int64' + example: 1 + }) + }, + ] + result: ContentDescriptor{ + name: 'result' + description: 'The response of the operation.' + required: true + } + errors: [ + ErrorSpec{ + code: 404 + message: 'Pet not found' + }, + ] + }, + ] + objects: [ + BaseObject{ + schema: Schema{ + typ: 'object' + properties: { + 'id': SchemaRef(Schema{ + typ: 'integer' + format: 'int64' + }) + 'name': SchemaRef(Schema{ + typ: 'string' + }) + 'tag': SchemaRef(Schema{ + typ: 'string' + }) + } + required: ['id', 'name'] + } + }, + BaseObject{ + schema: Schema{ + typ: 'object' + properties: { + 'name': SchemaRef(Schema{ + typ: 'string' + }) + 'tag': SchemaRef(Schema{ + typ: 'string' + }) + } + required: ['name'] + } + }, + BaseObject{ + schema: Schema{ + typ: 'array' + items: jsonschema.Items(SchemaRef(Reference{ + ref: '#/components/schemas/Pet' + })) + } + }, + ] } pub fn test_from_openapi() ! { // panic(from_openapi(openapi_spec)!) assert from_openapi(openapi_spec)! == actor_spec -} \ No newline at end of file +} diff --git a/lib/baobab/specification/from_openrpc.v b/lib/baobab/specification/from_openrpc.v index d51f4c84..53f903a0 100644 --- a/lib/baobab/specification/from_openrpc.v +++ b/lib/baobab/specification/from_openrpc.v @@ -1,7 +1,7 @@ module specification -import freeflowuniverse.herolib.schemas.openrpc { OpenRPC, Method, ContentDescriptor, ErrorSpec } -import freeflowuniverse.herolib.schemas.jsonschema { Reference, Schema, SchemaRef } +import freeflowuniverse.herolib.schemas.openrpc { ContentDescriptor, ErrorSpec, Method, OpenRPC } +import freeflowuniverse.herolib.schemas.jsonschema { Reference, Schema } import freeflowuniverse.herolib.core.texttools // Helper function: Convert OpenRPC Method to ActorMethod @@ -12,7 +12,7 @@ fn openrpc_method_to_actor_method(method Method) ActorMethod { // Process parameters for param in method.params { if param is ContentDescriptor { - parameters << param + parameters << param } else { panic('Method param should be inflated') } @@ -32,12 +32,12 @@ fn openrpc_method_to_actor_method(method Method) ActorMethod { } return ActorMethod{ - name: method.name + name: method.name description: method.description - summary: method.summary - parameters: parameters - result: method.result as ContentDescriptor - errors: errors + summary: method.summary + parameters: parameters + result: method.result as ContentDescriptor + errors: errors } } @@ -86,9 +86,10 @@ pub fn from_openrpc(spec OpenRPC) !ActorSpecification { if schema is Schema { if schema.typ == 'object' { objects << BaseObject{ - schema: Schema {...schema, + schema: Schema{ + ...schema title: texttools.pascal_case(key) - id: texttools.snake_case(key) + id: texttools.snake_case(key) } } } @@ -96,10 +97,10 @@ pub fn from_openrpc(spec OpenRPC) !ActorSpecification { } return ActorSpecification{ - name: spec.info.title + name: spec.info.title description: spec.info.description - interfaces: [.openrpc] - methods: methods - objects: objects + interfaces: [.openrpc] + methods: methods + objects: objects } -} \ No newline at end of file +} diff --git a/lib/baobab/specification/from_openrpc_test.v b/lib/baobab/specification/from_openrpc_test.v index 3852ee89..7e0cb429 100644 --- a/lib/baobab/specification/from_openrpc_test.v +++ b/lib/baobab/specification/from_openrpc_test.v @@ -1,380 +1,421 @@ module specification -import freeflowuniverse.herolib.core.code { Struct, Function } -import freeflowuniverse.herolib.schemas.openrpc { ContentDescriptor, ErrorSpec } -import freeflowuniverse.herolib.schemas.openapi { OpenAPI, Info, ServerSpec, Components, Operation, PathItem, PathRef } -import freeflowuniverse.herolib.schemas.jsonschema {Schema, Reference, SchemaRef} +import freeflowuniverse.herolib.core.code { Struct } +import freeflowuniverse.herolib.schemas.openrpc { ContentDescriptor } +import freeflowuniverse.herolib.schemas.openapi { Components, Info } +import freeflowuniverse.herolib.schemas.jsonschema { Reference, Schema, SchemaRef } const openrpc_spec = openrpc.OpenRPC{ - openrpc: '1.0.0-rc1' - info: openrpc.Info{ - title: 'Petstore' - license: openrpc.License{ - name: 'MIT' - } - version: '1.0.0' - } - servers: [openrpc.Server{ - name: 'localhost' - url: openrpc.RuntimeExpression('http://localhost:8080') - }] - methods: [ - openrpc.Method{ - name: 'list_pets' - summary: 'List all pets' - params: [openrpc.ContentDescriptorRef(openrpc.ContentDescriptor{ - name: 'limit' - description: 'How many items to return at one time (max 100)' - required: false - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'integer' - minimum: 1 - }) - })] - result: openrpc.ContentDescriptorRef(openrpc.ContentDescriptor{ - name: 'pets' - description: 'A paged array of pets' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'array' - items: jsonschema.Items(jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/Pet' - })) - }) - }) - examples: [openrpc.ExamplePairing{ - name: 'listPetExample' - description: 'List pet example' - }] - }, - openrpc.Method{ - name: 'create_pet' - summary: 'Create a pet' - params: [ - openrpc.ContentDescriptorRef(openrpc.ContentDescriptor{ - name: 'newPetName' - description: 'Name of pet to create' - required: true - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - }), - openrpc.ContentDescriptorRef(openrpc.ContentDescriptor{ - name: 'newPetTag' - description: 'Pet tag to create' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - }) - ] - result: openrpc.ContentDescriptorRef(jsonschema.Reference{ - ref: '#/components/contentDescriptors/PetId' - }) - examples: [openrpc.ExamplePairing{ - name: 'createPetExample' - description: 'Create pet example' - }] - }, - openrpc.Method{ - name: 'get_pet' - summary: 'Info for a specific pet' - params: [openrpc.ContentDescriptorRef(jsonschema.Reference{ - ref: '#/components/contentDescriptors/PetId' - })] - result: openrpc.ContentDescriptorRef(openrpc.ContentDescriptor{ - name: 'pet' - description: 'Expected response to a valid request' - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/Pet' - }) - }) - examples: [openrpc.ExamplePairing{ - name: 'getPetExample' - description: 'Get pet example' - }] - }, - openrpc.Method{ - name: 'update_pet' - summary: 'Update a pet' - params: [ - openrpc.ContentDescriptorRef(jsonschema.Reference{ - ref: '#/components/contentDescriptors/PetId' - }), - openrpc.ContentDescriptorRef(openrpc.ContentDescriptor{ - name: 'updatedPetName' - description: 'New name for the pet' - required: true - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - }), - openrpc.ContentDescriptorRef(openrpc.ContentDescriptor{ - name: 'updatedPetTag' - description: 'New tag for the pet' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - }) - ] - result: openrpc.ContentDescriptorRef(openrpc.ContentDescriptor{ - name: 'pet' - description: 'Updated pet object' - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/Pet' - }) - }) - examples: [openrpc.ExamplePairing{ - name: 'updatePetExample' - description: 'Update pet example' - }] - }, - openrpc.Method{ - name: 'delete_pet' - summary: 'Delete a pet' - params: [openrpc.ContentDescriptorRef(jsonschema.Reference{ - ref: '#/components/contentDescriptors/PetId' - })] - result: openrpc.ContentDescriptorRef(openrpc.ContentDescriptor{ - name: 'success' - description: 'Boolean indicating success' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'boolean' - }) - }) - examples: [openrpc.ExamplePairing{ - name: 'deletePetExample' - description: 'Delete pet example' - }] - } - ] - components: openrpc.Components{ - content_descriptors: { - 'PetId': openrpc.ContentDescriptorRef(openrpc.ContentDescriptor{ - name: 'petId' - description: 'The ID of the pet' - required: true - schema: jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/PetId' - }) - }) - } - schemas: { - 'PetId': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'integer' - minimum: 0 - }), - 'Pet': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'object' - properties: { - 'id': jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/PetId' - }), - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - }) - } - } + openrpc: '1.0.0-rc1' + info: openrpc.Info{ + title: 'Petstore' + license: openrpc.License{ + name: 'MIT' + } + version: '1.0.0' + } + servers: [ + openrpc.Server{ + name: 'localhost' + url: openrpc.RuntimeExpression('http://localhost:8080') + }, + ] + methods: [ + openrpc.Method{ + name: 'list_pets' + summary: 'List all pets' + params: [ + openrpc.ContentDescriptorRef(ContentDescriptor{ + name: 'limit' + description: 'How many items to return at one time (max 100)' + required: false + schema: SchemaRef(Schema{ + typ: 'integer' + minimum: 1 + }) + }), + ] + result: openrpc.ContentDescriptorRef(ContentDescriptor{ + name: 'pets' + description: 'A paged array of pets' + schema: SchemaRef(Schema{ + typ: 'array' + items: jsonschema.Items(SchemaRef(Reference{ + ref: '#/components/schemas/Pet' + })) + }) + }) + examples: [ + openrpc.ExamplePairing{ + name: 'listPetExample' + description: 'List pet example' + }, + ] + }, + openrpc.Method{ + name: 'create_pet' + summary: 'Create a pet' + params: [ + openrpc.ContentDescriptorRef(ContentDescriptor{ + name: 'newPetName' + description: 'Name of pet to create' + required: true + schema: SchemaRef(Schema{ + typ: 'string' + }) + }), + openrpc.ContentDescriptorRef(ContentDescriptor{ + name: 'newPetTag' + description: 'Pet tag to create' + schema: SchemaRef(Schema{ + typ: 'string' + }) + }), + ] + result: openrpc.ContentDescriptorRef(Reference{ + ref: '#/components/contentDescriptors/PetId' + }) + examples: [ + openrpc.ExamplePairing{ + name: 'createPetExample' + description: 'Create pet example' + }, + ] + }, + openrpc.Method{ + name: 'get_pet' + summary: 'Info for a specific pet' + params: [ + openrpc.ContentDescriptorRef(Reference{ + ref: '#/components/contentDescriptors/PetId' + }), + ] + result: openrpc.ContentDescriptorRef(ContentDescriptor{ + name: 'pet' + description: 'Expected response to a valid request' + schema: SchemaRef(Reference{ + ref: '#/components/schemas/Pet' + }) + }) + examples: [ + openrpc.ExamplePairing{ + name: 'getPetExample' + description: 'Get pet example' + }, + ] + }, + openrpc.Method{ + name: 'update_pet' + summary: 'Update a pet' + params: [ + openrpc.ContentDescriptorRef(Reference{ + ref: '#/components/contentDescriptors/PetId' + }), + openrpc.ContentDescriptorRef(ContentDescriptor{ + name: 'updatedPetName' + description: 'New name for the pet' + required: true + schema: SchemaRef(Schema{ + typ: 'string' + }) + }), + openrpc.ContentDescriptorRef(ContentDescriptor{ + name: 'updatedPetTag' + description: 'New tag for the pet' + schema: SchemaRef(Schema{ + typ: 'string' + }) + }), + ] + result: openrpc.ContentDescriptorRef(ContentDescriptor{ + name: 'pet' + description: 'Updated pet object' + schema: SchemaRef(Reference{ + ref: '#/components/schemas/Pet' + }) + }) + examples: [ + openrpc.ExamplePairing{ + name: 'updatePetExample' + description: 'Update pet example' + }, + ] + }, + openrpc.Method{ + name: 'delete_pet' + summary: 'Delete a pet' + params: [ + openrpc.ContentDescriptorRef(Reference{ + ref: '#/components/contentDescriptors/PetId' + }), + ] + result: openrpc.ContentDescriptorRef(ContentDescriptor{ + name: 'success' + description: 'Boolean indicating success' + schema: SchemaRef(Schema{ + typ: 'boolean' + }) + }) + examples: [ + openrpc.ExamplePairing{ + name: 'deletePetExample' + description: 'Delete pet example' + }, + ] + }, + ] + components: openrpc.Components{ + content_descriptors: { + 'PetId': openrpc.ContentDescriptorRef(ContentDescriptor{ + name: 'petId' + description: 'The ID of the pet' + required: true + schema: SchemaRef(Reference{ + ref: '#/components/schemas/PetId' + }) + }) + } + schemas: { + 'PetId': SchemaRef(Schema{ + typ: 'integer' + minimum: 0 + }) + 'Pet': SchemaRef(Schema{ + typ: 'object' + properties: { + 'id': SchemaRef(Reference{ + ref: '#/components/schemas/PetId' + }) + 'name': SchemaRef(Schema{ + typ: 'string' + }) + 'tag': SchemaRef(Schema{ + typ: 'string' + }) + } + required: ['id', 'name'] + }) + } + } } - -const actor_spec = specification.ActorSpecification{ - name: 'Petstore' - structure: code.Struct{ - is_pub: false - } - interfaces: [.openrpc] - methods: [specification.ActorMethod{ - name: 'list_pets' - summary: 'List all pets' - parameters: [openrpc.ContentDescriptor{ - name: 'limit' - description: 'How many items to return at one time (max 100)' - required: false - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'integer' - minimum: 1 - }) - }] - result: openrpc.ContentDescriptor{ - name: 'pets' - description: 'A paged array of pets' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'array' - items: jsonschema.Items(jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'object' - properties: { - 'id': jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/PetId' - }), - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - })) - }) - } - }, specification.ActorMethod{ - name: 'create_pet' - summary: 'Create a pet' - parameters: [openrpc.ContentDescriptor{ - name: 'newPetName' - description: 'Name of pet to create' - required: true - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - }, openrpc.ContentDescriptor{ - name: 'newPetTag' - description: 'Pet tag to create' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - }] - }, specification.ActorMethod{ - name: 'get_pet' - summary: 'Info for a specific pet' - result: openrpc.ContentDescriptor{ - name: 'pet' - description: 'Expected response to a valid request' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'object' - properties: { - 'id': jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/PetId' - }), - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - }) - } - }, specification.ActorMethod{ - name: 'update_pet' - summary: 'Update a pet' - parameters: [openrpc.ContentDescriptor{ - name: 'updatedPetName' - description: 'New name for the pet' - required: true - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - }, openrpc.ContentDescriptor{ - name: 'updatedPetTag' - description: 'New tag for the pet' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - }] - result: openrpc.ContentDescriptor{ - name: 'pet' - description: 'Updated pet object' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'object' - properties: { - 'id': jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/PetId' - }), - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - }) - } - }, specification.ActorMethod{ - name: 'delete_pet' - summary: 'Delete a pet' - result: openrpc.ContentDescriptor{ - name: 'success' - description: 'Boolean indicating success' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'boolean' - }) - } - }] - objects: [specification.BaseObject{ - schema: jsonschema.Schema{ - id: 'pet' - title: 'Pet' - typ: 'object' - properties: { - 'id': jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/PetId' - }), - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - } - }] +const actor_spec = ActorSpecification{ + name: 'Petstore' + structure: Struct{ + is_pub: false + } + interfaces: [.openrpc] + methods: [ + ActorMethod{ + name: 'list_pets' + summary: 'List all pets' + parameters: [ + ContentDescriptor{ + name: 'limit' + description: 'How many items to return at one time (max 100)' + required: false + schema: SchemaRef(Schema{ + typ: 'integer' + minimum: 1 + }) + }, + ] + result: ContentDescriptor{ + name: 'pets' + description: 'A paged array of pets' + schema: SchemaRef(Schema{ + typ: 'array' + items: jsonschema.Items(SchemaRef(Schema{ + typ: 'object' + properties: { + 'id': SchemaRef(Reference{ + ref: '#/components/schemas/PetId' + }) + 'name': SchemaRef(Schema{ + typ: 'string' + }) + 'tag': SchemaRef(Schema{ + typ: 'string' + }) + } + required: [ + 'id', + 'name', + ] + })) + }) + } + }, + ActorMethod{ + name: 'create_pet' + summary: 'Create a pet' + parameters: [ + ContentDescriptor{ + name: 'newPetName' + description: 'Name of pet to create' + required: true + schema: SchemaRef(Schema{ + typ: 'string' + }) + }, + ContentDescriptor{ + name: 'newPetTag' + description: 'Pet tag to create' + schema: SchemaRef(Schema{ + typ: 'string' + }) + }, + ] + }, + ActorMethod{ + name: 'get_pet' + summary: 'Info for a specific pet' + result: ContentDescriptor{ + name: 'pet' + description: 'Expected response to a valid request' + schema: SchemaRef(Schema{ + typ: 'object' + properties: { + 'id': SchemaRef(Reference{ + ref: '#/components/schemas/PetId' + }) + 'name': SchemaRef(Schema{ + typ: 'string' + }) + 'tag': SchemaRef(Schema{ + typ: 'string' + }) + } + required: [ + 'id', + 'name', + ] + }) + } + }, + ActorMethod{ + name: 'update_pet' + summary: 'Update a pet' + parameters: [ + ContentDescriptor{ + name: 'updatedPetName' + description: 'New name for the pet' + required: true + schema: SchemaRef(Schema{ + typ: 'string' + }) + }, + ContentDescriptor{ + name: 'updatedPetTag' + description: 'New tag for the pet' + schema: SchemaRef(Schema{ + typ: 'string' + }) + }, + ] + result: ContentDescriptor{ + name: 'pet' + description: 'Updated pet object' + schema: SchemaRef(Schema{ + typ: 'object' + properties: { + 'id': SchemaRef(Reference{ + ref: '#/components/schemas/PetId' + }) + 'name': SchemaRef(Schema{ + typ: 'string' + }) + 'tag': SchemaRef(Schema{ + typ: 'string' + }) + } + required: [ + 'id', + 'name', + ] + }) + } + }, + ActorMethod{ + name: 'delete_pet' + summary: 'Delete a pet' + result: ContentDescriptor{ + name: 'success' + description: 'Boolean indicating success' + schema: SchemaRef(Schema{ + typ: 'boolean' + }) + } + }, + ] + objects: [ + BaseObject{ + schema: Schema{ + id: 'pet' + title: 'Pet' + typ: 'object' + properties: { + 'id': SchemaRef(Reference{ + ref: '#/components/schemas/PetId' + }) + 'name': SchemaRef(Schema{ + typ: 'string' + }) + 'tag': SchemaRef(Schema{ + typ: 'string' + }) + } + required: ['id', 'name'] + } + }, + ] } pub fn test_from_openrpc() ! { - actor_spec_ := from_openrpc(openrpc_spec)! - assert actor_spec_.methods.len == actor_spec.methods.len - assert_methods_match(actor_spec_.methods[0], actor_spec.methods[0]) - - - // assert from_openrpc(openrpc_spec)! == actor_spec + actor_spec_ := from_openrpc(openrpc_spec)! + assert actor_spec_.methods.len == actor_spec.methods.len + assert_methods_match(actor_spec_.methods[0], actor_spec.methods[0]) + + // assert from_openrpc(openrpc_spec)! == actor_spec } fn assert_methods_match(a ActorMethod, b ActorMethod) { - // Compare method names - assert a.name == b.name, 'Method names do not match: ${a.name} != ${b.name}' - - // Compare summaries - assert a.summary == b.summary, 'Method summaries do not match for method ${a.name}.' + // Compare method names + assert a.name == b.name, 'Method names do not match: ${a.name} != ${b.name}' - // Compare descriptions - assert a.description == b.description, 'Method descriptions do not match for method ${a.name}.' + // Compare summaries + assert a.summary == b.summary, 'Method summaries do not match for method ${a.name}.' - // Compare parameters count - assert a.parameters.len == b.parameters.len, 'Parameter counts do not match for method ${a.name}.' + // Compare descriptions + assert a.description == b.description, 'Method descriptions do not match for method ${a.name}.' - // Compare each parameter - for i, param_a in a.parameters { - assert_params_match(param_a, b.parameters[i], a.name) - } + // Compare parameters count + assert a.parameters.len == b.parameters.len, 'Parameter counts do not match for method ${a.name}.' - // Compare result - assert_params_match(a.result, b.result, a.name) + // Compare each parameter + for i, param_a in a.parameters { + assert_params_match(param_a, b.parameters[i], a.name) + } + + // Compare result + assert_params_match(a.result, b.result, a.name) } -fn assert_params_match(a openrpc.ContentDescriptor, b openrpc.ContentDescriptor, method_name string) { - // Compare parameter names - assert a.name == b.name, 'Parameter names do not match in method ${method_name}: ${a.name} != ${b.name}' +fn assert_params_match(a ContentDescriptor, b ContentDescriptor, method_name string) { + // Compare parameter names + assert a.name == b.name, 'Parameter names do not match in method ${method_name}: ${a.name} != ${b.name}' - // Compare summaries - assert a.summary == b.summary, 'Parameter summaries do not match in method ${method_name}: ${a.name}' + // Compare summaries + assert a.summary == b.summary, 'Parameter summaries do not match in method ${method_name}: ${a.name}' - // Compare descriptions - assert a.description == b.description, 'Parameter descriptions do not match in method ${method_name}: ${a.name}' + // Compare descriptions + assert a.description == b.description, 'Parameter descriptions do not match in method ${method_name}: ${a.name}' - // Compare required flags - assert a.required == b.required, 'Required flags do not match in method ${method_name}: ${a.name}' + // Compare required flags + assert a.required == b.required, 'Required flags do not match in method ${method_name}: ${a.name}' - // Compare schemas - // assert_schemas_match(a.schema, b.schema, method_name, a.name) + // Compare schemas + // assert_schemas_match(a.schema, b.schema, method_name, a.name) } // fn assert_schemas_match(a jsonschema.SchemaRef, b jsonschema.SchemaRef, method_name string, param_name string) { @@ -390,4 +431,4 @@ fn assert_params_match(a openrpc.ContentDescriptor, b openrpc.ContentDescriptor, // // Compare other schema fields as needed (e.g., properties, additional properties, items, etc.) // // Add more checks here if needed for deeper schema comparisons -// } \ No newline at end of file +// } diff --git a/lib/baobab/specification/model.v b/lib/baobab/specification/model.v index 931a6ed5..b54ee4c8 100644 --- a/lib/baobab/specification/model.v +++ b/lib/baobab/specification/model.v @@ -1,21 +1,21 @@ module specification -import freeflowuniverse.herolib.core.code { Struct, Function } +import freeflowuniverse.herolib.core.code { Struct } import freeflowuniverse.herolib.schemas.openapi -import freeflowuniverse.herolib.schemas.openrpc {ExamplePairing, ContentDescriptor, ErrorSpec} -import freeflowuniverse.herolib.schemas.jsonschema {Schema, Reference} +import freeflowuniverse.herolib.schemas.openrpc { ContentDescriptor, ErrorSpec, ExamplePairing } +import freeflowuniverse.herolib.schemas.jsonschema { Reference, Schema } pub struct ActorSpecification { pub mut: - version string = '1.0.0' - openapi ?openapi.OpenAPI - openrpc ?openrpc.OpenRPC - name string @[omitempty] - description string @[omitempty] - structure Struct @[omitempty] - interfaces []ActorInterface @[omitempty] - methods []ActorMethod @[omitempty] - objects []BaseObject @[omitempty] + version string = '1.0.0' + openapi ?openapi.OpenAPI + openrpc ?openrpc.OpenRPC + name string @[omitempty] + description string @[omitempty] + structure Struct @[omitempty] + interfaces []ActorInterface @[omitempty] + methods []ActorMethod @[omitempty] + objects []BaseObject @[omitempty] } pub enum ActorInterface { @@ -28,24 +28,24 @@ pub enum ActorInterface { pub struct ActorMethod { pub: - name string @[omitempty] - description string @[omitempty] - summary string - example ExamplePairing - parameters []ContentDescriptor - result ContentDescriptor - errors []ErrorSpec - category MethodCategory + name string @[omitempty] + description string @[omitempty] + summary string + example ExamplePairing + parameters []ContentDescriptor + result ContentDescriptor + errors []ErrorSpec + category MethodCategory } pub struct BaseObject { pub mut: - schema Schema - new_method ?ActorMethod - get_method ?ActorMethod - set_method ?ActorMethod + schema Schema + new_method ?ActorMethod + get_method ?ActorMethod + set_method ?ActorMethod delete_method ?ActorMethod - list_method ?ActorMethod + list_method ?ActorMethod filter_method ?ActorMethod other_methods []ActorMethod } @@ -66,7 +66,7 @@ fn (m ActorMethod) belongs_to_object(obj BaseObject) bool { .filter(it.schema is Schema) .map(it.schema as Schema) .any(it.id == obj.schema.id) - + base_obj_is_result := if m.result.schema is Schema { m.result.schema.id == obj.schema.id } else { @@ -77,7 +77,7 @@ fn (m ActorMethod) belongs_to_object(obj BaseObject) bool { return base_obj_is_param || base_obj_is_result } -pub fn (s ActorSpecification) validate() ActorSpecification { +pub fn (s ActorSpecification) validate() ActorSpecification { mut validated_objects := []BaseObject{} for obj_ in s.objects { mut obj := obj_ @@ -101,13 +101,13 @@ pub fn (s ActorSpecification) validate() ActorSpecification { if m := methods.filter(it.is_list_method())[0] { obj.list_method = m } - validated_objects << BaseObject { + validated_objects << BaseObject{ ...obj other_methods: methods.filter(!it.is_crudlf_method()) } } - return ActorSpecification { - ...s, + return ActorSpecification{ + ...s objects: validated_objects } } @@ -129,14 +129,14 @@ pub fn (s ActorSpecification) method_type(method ActorMethod) MethodCategory { } } -// a base object method is a method that is a +// a base object method is a method that is a // CRUD+list+filter method of a base object fn (s ActorSpecification) is_base_object_method(method ActorMethod) bool { base_obj_is_param := method.parameters .filter(it.schema is Schema) .map(it.schema as Schema) .any(it.id in s.objects.map(it.schema.id)) - + base_obj_is_result := if method.result.schema is Schema { method.result.schema.id in s.objects.map(it.name()) } else { @@ -150,35 +150,38 @@ fn (s ActorSpecification) is_base_object_method(method ActorMethod) bool { fn (m ActorMethod) is_new_method() bool { return m.name.starts_with('new') } + fn (m ActorMethod) is_get_method() bool { return m.name.starts_with('get') } + fn (m ActorMethod) is_set_method() bool { return m.name.starts_with('set') } + fn (m ActorMethod) is_delete_method() bool { return m.name.starts_with('delete') } + fn (m ActorMethod) is_list_method() bool { return m.name.starts_with('list') } + fn (m ActorMethod) is_filter_method() bool { return m.name.starts_with('filter') } fn (m ActorMethod) is_crudlf_method() bool { - return m.is_new_method() || - m.is_get_method() || - m.is_set_method() || - m.is_delete_method() || - m.is_list_method() || - m.is_filter_method() + return m.is_new_method() || m.is_get_method() || m.is_set_method() || m.is_delete_method() + || m.is_list_method() || m.is_filter_method() } pub fn (o BaseObject) name() string { return if o.schema.id.trim_space() != '' { o.schema.id.trim_space() - } else {o.schema.title.trim_space()} + } else { + o.schema.title.trim_space() + } } fn (s ActorSpecification) is_base_object_new_method(method ActorMethod) bool { @@ -199,4 +202,4 @@ fn (s ActorSpecification) is_base_object_delete_method(method ActorMethod) bool fn (s ActorSpecification) is_base_object_list_method(method ActorMethod) bool { return s.is_base_object_method(method) && method.name.starts_with('list') -} \ No newline at end of file +} diff --git a/lib/baobab/specification/to_openapi.v b/lib/baobab/specification/to_openapi.v index e78bc703..904ba6a3 100644 --- a/lib/baobab/specification/to_openapi.v +++ b/lib/baobab/specification/to_openapi.v @@ -1,7 +1,7 @@ module specification import freeflowuniverse.herolib.schemas.jsonschema { Schema, SchemaRef } -import freeflowuniverse.herolib.schemas.openapi { MediaType, ResponseSpec, Operation, Parameter, OpenAPI, Components, Info, PathItem, ServerSpec } +import freeflowuniverse.herolib.schemas.openapi { Components, Info, MediaType, OpenAPI, Operation, Parameter, PathItem, ResponseSpec, ServerSpec } import net.http // Converts ActorSpecification to OpenAPI @@ -15,8 +15,14 @@ pub fn (s ActorSpecification) to_openapi() OpenAPI { for method in s.methods { op := method.to_openapi_operation() paths['${method.http_path()}'] = match method.http_method() { - .get { PathItem {get: op} } - else { panic('unsupported http method') } + .get { + PathItem{ + get: op + } + } + else { + panic('unsupported http method') + } } // Assign operation to corresponding HTTP method // TODO: what about other verbs @@ -28,23 +34,23 @@ pub fn (s ActorSpecification) to_openapi() OpenAPI { } return OpenAPI{ - openapi: '3.0.0', - info: Info{ - title: s.name, - summary: s.description, - description: s.description, - version: '1.0.0', - }, - servers: [ + openapi: '3.0.0' + info: Info{ + title: s.name + summary: s.description + description: s.description + version: '1.0.0' + } + servers: [ ServerSpec{ - url: 'http://localhost:8080', - description: 'Default server', + url: 'http://localhost:8080' + description: 'Default server' }, - ], - paths: paths, + ] + paths: paths components: Components{ schemas: schemas - }, + } } } @@ -62,30 +68,30 @@ fn (m ActorMethod) http_method() http.Method { fn (method ActorMethod) to_openapi_operation() Operation { mut op := Operation{ - summary: method.summary, - description: method.description, - operation_id: method.name, + summary: method.summary + description: method.description + operation_id: method.name } // Convert parameters to OpenAPI format for param in method.parameters { op.parameters << Parameter{ - name: param.name, - in_: 'query', // Default to query parameters; adjust based on function context - description: param.description, - required: param.required, - schema: param.schema, + name: param.name + in_: 'query' // Default to query parameters; adjust based on function context + description: param.description + required: param.required + schema: param.schema } } // if method.is_void() - op.responses['200'] = ResponseSpec { + op.responses['200'] = ResponseSpec{ description: method.description - content: { - 'application/json': MediaType { + content: { + 'application/json': MediaType{ schema: method.result.schema } } } return op -} \ No newline at end of file +} diff --git a/lib/baobab/specification/to_openapi_test.v b/lib/baobab/specification/to_openapi_test.v index 96665e4f..16ea67a7 100644 --- a/lib/baobab/specification/to_openapi_test.v +++ b/lib/baobab/specification/to_openapi_test.v @@ -2,158 +2,182 @@ module specification import freeflowuniverse.herolib.core.code import freeflowuniverse.herolib.schemas.jsonschema { Schema, SchemaRef } -import freeflowuniverse.herolib.schemas.openapi { Operation, Parameter, OpenAPI, Components, Info, PathItem, ServerSpec } +import freeflowuniverse.herolib.schemas.openapi import freeflowuniverse.herolib.schemas.openrpc - -const actor_spec = specification.ActorSpecification{ - name: 'Petstore' - structure: code.Struct{ - is_pub: false - } - interfaces: [.openrpc] - methods: [specification.ActorMethod{ - name: 'list_pets' - summary: 'List all pets' - parameters: [openrpc.ContentDescriptor{ - name: 'limit' - description: 'How many items to return at one time (max 100)' - required: false - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'integer' - minimum: 1 - }) - }] - result: openrpc.ContentDescriptor{ - name: 'pets' - description: 'A paged array of pets' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'array' - items: jsonschema.Items(jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'object' - properties: { - 'id': jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/PetId' - }), - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - })) - }) - } - }, specification.ActorMethod{ - name: 'create_pet' - summary: 'Create a pet' - parameters: [openrpc.ContentDescriptor{ - name: 'newPetName' - description: 'Name of pet to create' - required: true - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - }, openrpc.ContentDescriptor{ - name: 'newPetTag' - description: 'Pet tag to create' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - }] - }, specification.ActorMethod{ - name: 'get_pet' - summary: 'Info for a specific pet' - result: openrpc.ContentDescriptor{ - name: 'pet' - description: 'Expected response to a valid request' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'object' - properties: { - 'id': jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/PetId' - }), - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - }) - } - }, specification.ActorMethod{ - name: 'update_pet' - summary: 'Update a pet' - parameters: [openrpc.ContentDescriptor{ - name: 'updatedPetName' - description: 'New name for the pet' - required: true - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - }, openrpc.ContentDescriptor{ - name: 'updatedPetTag' - description: 'New tag for the pet' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - }] - result: openrpc.ContentDescriptor{ - name: 'pet' - description: 'Updated pet object' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'object' - properties: { - 'id': jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/PetId' - }), - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - }) - } - }, specification.ActorMethod{ - name: 'delete_pet' - summary: 'Delete a pet' - result: openrpc.ContentDescriptor{ - name: 'success' - description: 'Boolean indicating success' - schema: jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'boolean' - }) - } - }] - objects: [specification.BaseObject{ - schema: jsonschema.Schema{ - id: 'pet' - title: 'Pet' - typ: 'object' - properties: { - 'id': jsonschema.SchemaRef(jsonschema.Reference{ - ref: '#/components/schemas/PetId' - }), - 'name': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }), - 'tag': jsonschema.SchemaRef(jsonschema.Schema{ - typ: 'string' - }) - } - required: ['id', 'name'] - } - }] +const actor_spec = ActorSpecification{ + name: 'Petstore' + structure: code.Struct{ + is_pub: false + } + interfaces: [.openrpc] + methods: [ + ActorMethod{ + name: 'list_pets' + summary: 'List all pets' + parameters: [ + openrpc.ContentDescriptor{ + name: 'limit' + description: 'How many items to return at one time (max 100)' + required: false + schema: SchemaRef(Schema{ + typ: 'integer' + minimum: 1 + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'pets' + description: 'A paged array of pets' + schema: SchemaRef(Schema{ + typ: 'array' + items: jsonschema.Items(SchemaRef(Schema{ + typ: 'object' + properties: { + 'id': SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/PetId' + }) + 'name': SchemaRef(Schema{ + typ: 'string' + }) + 'tag': SchemaRef(Schema{ + typ: 'string' + }) + } + required: [ + 'id', + 'name', + ] + })) + }) + } + }, + ActorMethod{ + name: 'create_pet' + summary: 'Create a pet' + parameters: [ + openrpc.ContentDescriptor{ + name: 'newPetName' + description: 'Name of pet to create' + required: true + schema: SchemaRef(Schema{ + typ: 'string' + }) + }, + openrpc.ContentDescriptor{ + name: 'newPetTag' + description: 'Pet tag to create' + schema: SchemaRef(Schema{ + typ: 'string' + }) + }, + ] + }, + ActorMethod{ + name: 'get_pet' + summary: 'Info for a specific pet' + result: openrpc.ContentDescriptor{ + name: 'pet' + description: 'Expected response to a valid request' + schema: SchemaRef(Schema{ + typ: 'object' + properties: { + 'id': SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/PetId' + }) + 'name': SchemaRef(Schema{ + typ: 'string' + }) + 'tag': SchemaRef(Schema{ + typ: 'string' + }) + } + required: [ + 'id', + 'name', + ] + }) + } + }, + ActorMethod{ + name: 'update_pet' + summary: 'Update a pet' + parameters: [ + openrpc.ContentDescriptor{ + name: 'updatedPetName' + description: 'New name for the pet' + required: true + schema: SchemaRef(Schema{ + typ: 'string' + }) + }, + openrpc.ContentDescriptor{ + name: 'updatedPetTag' + description: 'New tag for the pet' + schema: SchemaRef(Schema{ + typ: 'string' + }) + }, + ] + result: openrpc.ContentDescriptor{ + name: 'pet' + description: 'Updated pet object' + schema: SchemaRef(Schema{ + typ: 'object' + properties: { + 'id': SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/PetId' + }) + 'name': SchemaRef(Schema{ + typ: 'string' + }) + 'tag': SchemaRef(Schema{ + typ: 'string' + }) + } + required: [ + 'id', + 'name', + ] + }) + } + }, + ActorMethod{ + name: 'delete_pet' + summary: 'Delete a pet' + result: openrpc.ContentDescriptor{ + name: 'success' + description: 'Boolean indicating success' + schema: SchemaRef(Schema{ + typ: 'boolean' + }) + } + }, + ] + objects: [ + BaseObject{ + schema: Schema{ + id: 'pet' + title: 'Pet' + typ: 'object' + properties: { + 'id': SchemaRef(jsonschema.Reference{ + ref: '#/components/schemas/PetId' + }) + 'name': SchemaRef(Schema{ + typ: 'string' + }) + 'tag': SchemaRef(Schema{ + typ: 'string' + }) + } + required: ['id', 'name'] + } + }, + ] } // Converts ActorSpecification to OpenAPI -pub fn test_specification_to_openapi() { +pub fn test_specification_to_openapi() { panic(actor_spec.to_openapi()) -} \ No newline at end of file +} diff --git a/lib/baobab/specification/to_openrpc.v b/lib/baobab/specification/to_openrpc.v index fb78d125..a53179b2 100644 --- a/lib/baobab/specification/to_openrpc.v +++ b/lib/baobab/specification/to_openrpc.v @@ -1,8 +1,8 @@ module specification -import freeflowuniverse.herolib.schemas.openrpc {OpenRPC, Components} -import freeflowuniverse.herolib.schemas.jsonschema {SchemaRef} -import freeflowuniverse.herolib.schemas.jsonschema.codegen { struct_to_schema } +import freeflowuniverse.herolib.schemas.openrpc { Components, OpenRPC } +import freeflowuniverse.herolib.schemas.jsonschema { SchemaRef } +import freeflowuniverse.herolib.schemas.jsonschema.codegen // pub fn from_openrpc(spec openrpc.OpenRPC) !ActorSpecification { // // Extract Actor metadata from OpenRPC info @@ -39,7 +39,6 @@ import freeflowuniverse.herolib.schemas.jsonschema.codegen { struct_to_schema } // } // } - pub fn (specification ActorSpecification) to_openrpc() OpenRPC { mut schemas := map[string]SchemaRef{} for obj in specification.objects { @@ -49,11 +48,11 @@ pub fn (specification ActorSpecification) to_openrpc() OpenRPC { // } } return OpenRPC{ - info: openrpc.Info{ - title: specification.name.title() + info: openrpc.Info{ + title: specification.name.title() version: '1.0.0' } - methods: specification.methods.map(method_to_openrpc_method(it)) + methods: specification.methods.map(method_to_openrpc_method(it)) components: Components{ schemas: schemas } @@ -61,12 +60,12 @@ pub fn (specification ActorSpecification) to_openrpc() OpenRPC { } pub fn method_to_openrpc_method(method ActorMethod) openrpc.Method { - return openrpc.Method { - name: method.name - summary: method.summary + return openrpc.Method{ + name: method.name + summary: method.summary description: method.description - params: method.parameters.map(openrpc.ContentDescriptorRef(it)) - result: openrpc.ContentDescriptorRef(method.result) - errors: method.errors.map(openrpc.ErrorRef(it)) + params: method.parameters.map(openrpc.ContentDescriptorRef(it)) + result: openrpc.ContentDescriptorRef(method.result) + errors: method.errors.map(openrpc.ErrorRef(it)) } -} \ No newline at end of file +} diff --git a/lib/baobab/stage/action.v b/lib/baobab/stage/action.v index b2b7f6d8..3e0ac0fc 100644 --- a/lib/baobab/stage/action.v +++ b/lib/baobab/stage/action.v @@ -7,9 +7,9 @@ pub mut: id string name string priority int = 10 // 0 is highest, do 10 as default - params string // json encoded params - result string // can be used to remember outputs + params string // json encoded params + result string // can be used to remember outputs // run bool = true // certain actions can be defined but meant to be executed directly - comments string - done bool // if done then no longer need to process -} \ No newline at end of file + comments string + done bool // if done then no longer need to process +} diff --git a/lib/baobab/stage/action_client.v b/lib/baobab/stage/action_client.v index 2659950c..86f7a67f 100644 --- a/lib/baobab/stage/action_client.v +++ b/lib/baobab/stage/action_client.v @@ -18,7 +18,7 @@ pub: pub struct ClientConfig { ActorConfig pub: - redis_url string = 'localhost:6379' // url to redis server running + redis_url string = 'localhost:6379' // url to redis server running } pub fn new_client(config ActorConfig) !Client { @@ -40,7 +40,7 @@ pub fn (mut p Client) call_to_action(action Action, params Params) !Action { wait: true })! - return Action { + return Action{ ...action result: response_data } diff --git a/lib/baobab/stage/actor.v b/lib/baobab/stage/actor.v index d79e7486..c13ad0db 100644 --- a/lib/baobab/stage/actor.v +++ b/lib/baobab/stage/actor.v @@ -1,6 +1,6 @@ module stage -import freeflowuniverse.herolib.baobab.osis {OSIS} +import freeflowuniverse.herolib.baobab.osis { OSIS } import freeflowuniverse.herolib.core.redisclient @[heap] @@ -19,8 +19,8 @@ mut: @[params] pub struct ActorConfig { pub: - name string - version string + name string + version string redis_url string = 'localhost:6379' } @@ -35,7 +35,7 @@ pub fn (config ActorConfig) redis_queue_name() string { pub fn new_actor(config ActorConfig) !Actor { return Actor{ ActorConfig: config - osis: osis.new()! + osis: osis.new()! } } @@ -45,20 +45,22 @@ pub fn (a ActorConfig) get_redis_rpc() !redisclient.RedisRpc { } pub fn (a ActorConfig) version(v string) ActorConfig { - return ActorConfig {...a, + return ActorConfig{ + ...a version: v } } pub fn (a ActorConfig) example() ActorConfig { - return ActorConfig {...a, + return ActorConfig{ + ...a version: 'example' } } pub fn (mut a IActor) handle(method string, data string) !string { action := a.act( - name: method + name: method params: data )! return action.result diff --git a/lib/baobab/stage/config.v b/lib/baobab/stage/config.v index 8b6d9424..991f8aa3 100644 --- a/lib/baobab/stage/config.v +++ b/lib/baobab/stage/config.v @@ -1,2 +1 @@ module stage - diff --git a/lib/baobab/stage/interfaces/jsonrpc.v b/lib/baobab/stage/interfaces/jsonrpc.v index 2a405997..d85ed73f 100644 --- a/lib/baobab/stage/interfaces/jsonrpc.v +++ b/lib/baobab/stage/interfaces/jsonrpc.v @@ -1,16 +1,16 @@ module interfaces import freeflowuniverse.herolib.schemas.jsonrpc -import freeflowuniverse.herolib.baobab.stage {Action} +import freeflowuniverse.herolib.baobab.stage { Action } pub fn action_from_jsonrpc_request(request jsonrpc.Request) Action { return Action{ - id: request.id - name: request.method + id: request.id + name: request.method params: request.params } } pub fn action_to_jsonrpc_response(action Action) jsonrpc.Response { return jsonrpc.new_response(action.id, action.result) -} \ No newline at end of file +} diff --git a/lib/baobab/stage/interfaces/openapi.v b/lib/baobab/stage/interfaces/openapi.v index e1f595fc..e666da7b 100644 --- a/lib/baobab/stage/interfaces/openapi.v +++ b/lib/baobab/stage/interfaces/openapi.v @@ -1,8 +1,8 @@ module interfaces import rand -import x.json2 as json {Any} -import freeflowuniverse.herolib.baobab.stage {Action, Client} +import x.json2 as json { Any } +import freeflowuniverse.herolib.baobab.stage { Action, Client } import freeflowuniverse.herolib.schemas.jsonrpc import freeflowuniverse.herolib.schemas.openapi @@ -18,9 +18,7 @@ pub fn new_openapi_interface(client Client) &OpenAPIInterface { pub fn (mut i OpenAPIInterface) handle(request openapi.Request) !openapi.Response { // Convert incoming OpenAPI request to a procedure call action := action_from_openapi_request(request) - response := i.client.call_to_action(action) or { - return err - } + response := i.client.call_to_action(action) or { return err } return action_to_openapi_response(response) } @@ -35,16 +33,16 @@ pub fn action_from_openapi_request(request openapi.Request) Action { if request.parameters.len > 0 { params << json.encode(request.parameters) } - - return Action { - id: rand.uuid_v4() - name: request.operation.operation_id + + return Action{ + id: rand.uuid_v4() + name: request.operation.operation_id params: json.encode(params.str()) } } pub fn action_to_openapi_response(action Action) openapi.Response { - return openapi.Response { + return openapi.Response{ body: action.result } } diff --git a/lib/baobab/stage/interfaces/openrpc.v b/lib/baobab/stage/interfaces/openrpc.v index 437e1d2b..c03dceb1 100644 --- a/lib/baobab/stage/interfaces/openrpc.v +++ b/lib/baobab/stage/interfaces/openrpc.v @@ -1,15 +1,15 @@ module interfaces -import freeflowuniverse.herolib.baobab.stage {Client} +import freeflowuniverse.herolib.baobab.stage { Client } import freeflowuniverse.herolib.schemas.jsonrpc // handler for test echoes JSONRPC Request as JSONRPC Response fn handler(request jsonrpc.Request) !jsonrpc.Response { - return jsonrpc.Response { - jsonrpc: request.jsonrpc - id: request.id - result: request.params - } + return jsonrpc.Response{ + jsonrpc: request.jsonrpc + id: request.id + result: request.params + } } pub struct OpenRPCInterface { @@ -26,4 +26,4 @@ pub fn (mut i OpenRPCInterface) handle(request jsonrpc.Request) !jsonrpc.Respons action := action_from_jsonrpc_request(request) response := i.client.call_to_action(action)! return action_to_jsonrpc_response(response) -} \ No newline at end of file +} diff --git a/lib/baobab/stage/interfaces/reflection_openapi.v b/lib/baobab/stage/interfaces/reflection_openapi.v index 0da33b9b..96dc72b7 100644 --- a/lib/baobab/stage/interfaces/reflection_openapi.v +++ b/lib/baobab/stage/interfaces/reflection_openapi.v @@ -5,87 +5,87 @@ module interfaces // import veb // import x.json2 {Any} // import net.http -import freeflowuniverse.herolib.baobab.stage {Action} -import freeflowuniverse.herolib.schemas.openapi {Request} +import freeflowuniverse.herolib.baobab.stage { Action } +import freeflowuniverse.herolib.schemas.openapi { Request } pub fn openapi_request_to_action(request Request) Action { - // // Convert incoming OpenAPI request to a procedure call - // mut params := []Any{} + // // Convert incoming OpenAPI request to a procedure call + // mut params := []Any{} - // if request.arguments.len > 0 { - // params << request.arguments.values().map(it.str()).clone() - // } + // if request.arguments.len > 0 { + // params << request.arguments.values().map(it.str()).clone() + // } - // if request.body != '' { - // params << request.body - // } + // if request.body != '' { + // params << request.body + // } - // if request.parameters != '' { - // params << request.body - // } + // if request.parameters != '' { + // params << request.body + // } - // if request.parameters.len != 0 { - // mut param_map := map[string]Any{} // Store parameters with correct types + // if request.parameters.len != 0 { + // mut param_map := map[string]Any{} // Store parameters with correct types - // for param_name, param_value in request.parameters { - // operation_param := request.operation.parameters.filter(it.name == param_name) - // if operation_param.len > 0 { - // param_schema := operation_param[0].schema as Schema - // param_type := param_schema.typ - // param_format := param_schema.format + // for param_name, param_value in request.parameters { + // operation_param := request.operation.parameters.filter(it.name == param_name) + // if operation_param.len > 0 { + // param_schema := operation_param[0].schema as Schema + // param_type := param_schema.typ + // param_format := param_schema.format - // // Convert parameter value to corresponding type - // match param_type { - // 'integer' { - // match param_format { - // 'int32' { - // param_map[param_name] = param_value.int() // Convert to int - // } - // 'int64' { - // param_map[param_name] = param_value.i64() // Convert to i64 - // } - // else { - // param_map[param_name] = param_value.int() // Default to int - // } - // } - // } - // 'string' { - // param_map[param_name] = param_value // Already a string - // } - // 'boolean' { - // param_map[param_name] = param_value.bool() // Convert to bool - // } - // 'number' { - // match param_format { - // 'float' { - // param_map[param_name] = param_value.f32() // Convert to float - // } - // 'double' { - // param_map[param_name] = param_value.f64() // Convert to double - // } - // else { - // param_map[param_name] = param_value.f64() // Default to double - // } - // } - // } - // else { - // param_map[param_name] = param_value // Leave as string for unknown types - // } - // } - // } else { - // // If the parameter is not defined in the OpenAPI operation, skip or log it - // println('Unknown parameter: $param_name') - // } - // } + // // Convert parameter value to corresponding type + // match param_type { + // 'integer' { + // match param_format { + // 'int32' { + // param_map[param_name] = param_value.int() // Convert to int + // } + // 'int64' { + // param_map[param_name] = param_value.i64() // Convert to i64 + // } + // else { + // param_map[param_name] = param_value.int() // Default to int + // } + // } + // } + // 'string' { + // param_map[param_name] = param_value // Already a string + // } + // 'boolean' { + // param_map[param_name] = param_value.bool() // Convert to bool + // } + // 'number' { + // match param_format { + // 'float' { + // param_map[param_name] = param_value.f32() // Convert to float + // } + // 'double' { + // param_map[param_name] = param_value.f64() // Convert to double + // } + // else { + // param_map[param_name] = param_value.f64() // Default to double + // } + // } + // } + // else { + // param_map[param_name] = param_value // Leave as string for unknown types + // } + // } + // } else { + // // If the parameter is not defined in the OpenAPI operation, skip or log it + // println('Unknown parameter: $param_name') + // } + // } - // // Encode the parameter map to JSON if needed - // params << json.encode(param_map.str()) - // } + // // Encode the parameter map to JSON if needed + // params << json.encode(param_map.str()) + // } - // call := Action{ - // name: request.operation.operation_id - // params_json: json2.encode(params.str()) // Keep as a string since ProcedureCall expects a string - // } + // call := Action{ + // name: request.operation.operation_id + // params_json: json2.encode(params.str()) // Keep as a string since ProcedureCall expects a string + // } // return call - return Action{} -} \ No newline at end of file + return Action{} +} diff --git a/lib/baobab/stage/interfaces/server_http.v b/lib/baobab/stage/interfaces/server_http.v index afe89665..e9acbef8 100644 --- a/lib/baobab/stage/interfaces/server_http.v +++ b/lib/baobab/stage/interfaces/server_http.v @@ -1,7 +1,7 @@ module interfaces import freeflowuniverse.herolib.schemas.openapi { OpenAPI } -import freeflowuniverse.herolib.baobab.stage {Client, ClientConfig} +import freeflowuniverse.herolib.baobab.stage { ClientConfig } import freeflowuniverse.herolib.schemas.openrpc { OpenRPC } import veb diff --git a/lib/biz/bizmodel/act.v b/lib/biz/bizmodel/act.v index a8ffe31d..222c018a 100644 --- a/lib/biz/bizmodel/act.v +++ b/lib/biz/bizmodel/act.v @@ -3,11 +3,11 @@ module bizmodel import os import freeflowuniverse.herolib.core.texttools import freeflowuniverse.herolib.core.pathlib -import freeflowuniverse.herolib.core.playbook { PlayBook, Action } +import freeflowuniverse.herolib.core.playbook { Action } import freeflowuniverse.herolib.ui.console // import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.data.paramsparser {Params} -import freeflowuniverse.herolib.biz.spreadsheet {RowGetArgs, UnitType, PeriodType} +import freeflowuniverse.herolib.data.paramsparser { Params } +import freeflowuniverse.herolib.biz.spreadsheet { PeriodType, RowGetArgs, UnitType } pub fn (mut m BizModel) act(action Action) !Action { return match texttools.snake_case(action.name) { @@ -58,23 +58,28 @@ fn (mut m BizModel) export_sheet_action(action Action) !Action { } fn (mut m BizModel) export_graph_title_action(action Action) !Action { - return m.export_action(m.sheet.wiki_title_chart(row_args_from_params(action.params)!)!, action) + return m.export_action(m.sheet.wiki_title_chart(row_args_from_params(action.params)!)!, + action) } fn (mut m BizModel) export_graph_line_action(action Action) !Action { - return m.export_action(m.sheet.wiki_line_chart(row_args_from_params(action.params)!)!, action) + return m.export_action(m.sheet.wiki_line_chart(row_args_from_params(action.params)!)!, + action) } fn (mut m BizModel) export_graph_bar_action(action Action) !Action { - return m.export_action(m.sheet.wiki_bar_chart(row_args_from_params(action.params)!)!, action) + return m.export_action(m.sheet.wiki_bar_chart(row_args_from_params(action.params)!)!, + action) } pub fn (mut m BizModel) export_graph_pie_action(action Action) !Action { - return m.export_action(m.sheet.wiki_pie_chart(row_args_from_params(action.params)!)!, action) + return m.export_action(m.sheet.wiki_pie_chart(row_args_from_params(action.params)!)!, + action) } pub fn (mut m BizModel) export_overview_action(action Action) !Action { - return m.export_action(m.sheet.wiki_row_overview(row_args_from_params(action.params)!)!, action) + return m.export_action(m.sheet.wiki_row_overview(row_args_from_params(action.params)!)!, + action) } fn (mut m BizModel) new_report_action(action Action) !Action { @@ -133,8 +138,12 @@ pub fn row_args_from_params(p Params) !RowGetArgs { // creates the name for a file being exported given the params of the export action fn (m BizModel) export_action(content string, action Action) !Action { // determine name of file being exported - name := if action.params.exists('name') { action.params.get('name')! } else { - if action.params.exists('title') { action.params.get('title')! } else { + name := if action.params.exists('name') { + action.params.get('name')! + } else { + if action.params.exists('title') { + action.params.get('title')! + } else { // if no name or title, name is ex: revenue_total_graph_bar_row rowname := action.params.get_default('rowname', '')! '${rowname}_${action.name}' @@ -143,13 +152,13 @@ fn (m BizModel) export_action(content string, action Action) !Action { // by default exports to working dir of bizmodel destination := action.params.get_default('destination', m.workdir)! - + mut path := pathlib.get_file( - path: os.join_path(destination, name) + path: os.join_path(destination, name) increment: true - empty: action.params.get_default_false('overwrite') + empty: action.params.get_default_false('overwrite') )! path.write(content)! return action -} \ No newline at end of file +} diff --git a/lib/biz/bizmodel/export.v b/lib/biz/bizmodel/export.v index ec0c4cde..800b43a9 100644 --- a/lib/biz/bizmodel/export.v +++ b/lib/biz/bizmodel/export.v @@ -7,11 +7,11 @@ import freeflowuniverse.herolib.core.pathlib pub struct Report { pub: - name string - title string + name string + title string description string - path string - sections []ReportSection + path string + sections []ReportSection } pub enum ReportSection { @@ -21,11 +21,11 @@ pub enum ReportSection { } pub fn (b BizModel) new_report(report Report) !Report { - name := if report.name != '' {report.name} else { texttools.snake_case(report.title) } + name := if report.name != '' { report.name } else { texttools.snake_case(report.title) } path := pathlib.get_dir( - path: os.join_path(os.home_dir(), '/hero/var/bizmodel/reports/${name}') + path: os.join_path(os.home_dir(), '/hero/var/bizmodel/reports/${name}') create: true - empty: true + empty: true )! b.write_introduction(path.path)! @@ -33,8 +33,8 @@ pub fn (b BizModel) new_report(report Report) !Report { b.write_revenue_model(path.path)! b.write_cost_structure(path.path)! - return Report { - ...report, + return Report{ + ...report name: name path: path.path } @@ -50,9 +50,9 @@ pub fn (b BizModel) new_report(report Report) !Report { pub struct Export { pub: - path string + path string overwrite bool - format ExportFormat + format ExportFormat } pub enum ExportFormat { @@ -67,34 +67,36 @@ pub fn (r Report) export(export Export) ! { dir.copy(dest: '${export.path}/docs', delete: true)! mut factory := docusaurus.new()! mut site := factory.get( - name: r.name - path: export.path + name: r.name + path: export.path publish_path: export.path - init: true - config: docusaurus.Config { - navbar: docusaurus.Navbar { - title: "Business Model", - items: [ + init: true + config: docusaurus.Config{ + navbar: docusaurus.Navbar{ + title: 'Business Model' + items: [ docusaurus.NavbarItem{ - "href": "https://threefold.info/kristof/", - "label": "ThreeFold Technology", - "position": "right" + href: 'https://threefold.info/kristof/' + label: 'ThreeFold Technology' + position: 'right' }, docusaurus.NavbarItem{ - "href": "https://threefold.io", - "label": "Operational Plan", - "position": "left" - } + href: 'https://threefold.io' + label: 'Operational Plan' + position: 'left' + }, ] } - main: docusaurus.Main { + main: docusaurus.Main{ url_home: 'docs/introduction' } - } //TODO: is this needed + } // TODO: is this needed )! site.generate()! } - .mdbook {panic('MDBook export not fully implemented')} + .mdbook { + panic('MDBook export not fully implemented') + } } } @@ -108,20 +110,27 @@ pub fn (model BizModel) write_operational_plan(path string) ! { mut dir := pathlib.get_dir(path: '${path}/operational_plan')! mut ops_page := pathlib.get_file(path: '${dir.path}/operational_plan.md')! ops_page.write('# Operational Plan')! - + mut hr_dir := pathlib.get_dir(path: '${dir.path}/human_resources')! mut hr_page := pathlib.get_file(path: '${hr_dir.path}/human_resources.md')! hr_page.template_write($tmpl('./templates/human_resources.md'), true)! for key, employee in model.employees { - mut employee_page := pathlib.get_file(path: '${hr_dir.path}/${texttools.snake_case(employee.name)}.md')! - employee_cost_chart := model.sheet.line_chart(rowname:'hr_cost_${employee.name}', unit: .million)!.mdx() + mut employee_page := pathlib.get_file( + path: '${hr_dir.path}/${texttools.snake_case(employee.name)}.md' + )! + employee_cost_chart := model.sheet.line_chart( + rowname: 'hr_cost_${employee.name}' + unit: .million + )!.mdx() employee_page.template_write($tmpl('./templates/employee.md'), true)! } mut depts_dir := pathlib.get_dir(path: '${dir.path}/departments')! for key, department in model.departments { - mut dept_page := pathlib.get_file(path: '${depts_dir.path}/${texttools.snake_case(department.name)}.md')! + mut dept_page := pathlib.get_file( + path: '${depts_dir.path}/${texttools.snake_case(department.name)}.md' + )! // dept_cost_chart := model.sheet.line_chart(rowname:'hr_cost_${employee.name}', unit: .million)!.mdx() // println(employee_cost_chart) dept_page.template_write($tmpl('./templates/department.md'), true)! @@ -132,14 +141,16 @@ pub fn (model BizModel) write_revenue_model(path string) ! { mut dir := pathlib.get_dir(path: '${path}/revenue_model')! mut rm_page := pathlib.get_file(path: '${dir.path}/revenue_model.md')! rm_page.write('# Revenue Model')! - + mut products_dir := pathlib.get_dir(path: '${dir.path}/products')! mut products_page := pathlib.get_file(path: '${products_dir.path}/products.md')! products_page.template_write('# Products', true)! name1 := 'example' for key, product in model.products { - mut product_page := pathlib.get_file(path: '${products_dir.path}/${texttools.snake_case(product.name)}.md')! + mut product_page := pathlib.get_file( + path: '${products_dir.path}/${texttools.snake_case(product.name)}.md' + )! product_page.template_write($tmpl('./templates/product.md'), true)! } } @@ -148,4 +159,4 @@ pub fn (model BizModel) write_cost_structure(path string) ! { mut dir := pathlib.get_dir(path: '${path}/cost_structure')! mut cs_page := pathlib.get_file(path: '${dir.path}/cost_structure.md')! cs_page.write('# Cost Structure')! -} \ No newline at end of file +} diff --git a/lib/biz/bizmodel/export_csv.v b/lib/biz/bizmodel/export_csv.v index 1fe08751..2ef25fe5 100644 --- a/lib/biz/bizmodel/export_csv.v +++ b/lib/biz/bizmodel/export_csv.v @@ -6,9 +6,9 @@ import freeflowuniverse.herolib.core.pathlib @[params] pub struct ExportCSVArgs { pub mut: - path string - include_empty bool = false // whether to include empty cells or not - separator string = '|' // separator character for CSV + path string + include_empty bool = false // whether to include empty cells or not + separator string = '|' // separator character for CSV } // export_csv exports the business model data to CSV files @@ -32,13 +32,17 @@ pub fn (model BizModel) export_csv(args ExportCSVArgs) ! { employee.role, employee.department, employee.cost.str(), - if start_date := employee.start_date { start_date.str() } else { '' } + if start_date := employee.start_date { start_date.str() } else { '' }, ].map(fn [args] (s string) string { return format_csv_value(s, args.separator) }).join(args.separator) employees_data << row } - mut emp_file := pathlib.get_file(path: os.join_path(dir.path, 'employees.csv'), create: true, delete: true)! + mut emp_file := pathlib.get_file( + path: os.join_path(dir.path, 'employees.csv') + create: true + delete: true + )! emp_file.write(employees_data.join('\n'))! // Export products data @@ -57,7 +61,11 @@ pub fn (model BizModel) export_csv(args ExportCSVArgs) ! { }).join(args.separator) products_data << row } - mut prod_file := pathlib.get_file(path: os.join_path(dir.path, 'products.csv'), create: true, delete: true)! + mut prod_file := pathlib.get_file( + path: os.join_path(dir.path, 'products.csv') + create: true + delete: true + )! prod_file.write(products_data.join('\n'))! // Export departments data @@ -70,13 +78,17 @@ pub fn (model BizModel) export_csv(args ExportCSVArgs) ! { for _, department in model.departments { row := [ department.name, - department.description + department.description, ].map(fn [args] (s string) string { return format_csv_value(s, args.separator) }).join(args.separator) departments_data << row } - mut dept_file := pathlib.get_file(path: os.join_path(dir.path, 'departments.csv'), create: true, delete: true)! + mut dept_file := pathlib.get_file( + path: os.join_path(dir.path, 'departments.csv') + create: true + delete: true + )! dept_file.write(departments_data.join('\n'))! } diff --git a/lib/biz/bizmodel/export_csv_test.vsh b/lib/biz/bizmodel/export_csv_test.vsh index 7d3e90a2..021017de 100755 --- a/lib/biz/bizmodel/export_csv_test.vsh +++ b/lib/biz/bizmodel/export_csv_test.vsh @@ -11,9 +11,9 @@ mut model := bizmodel.generate(bizmodel_name, playbook_path)! // Export to CSV model.export_csv( - path: export_path + path: export_path include_empty: false - separator: '|' + separator: '|' )! // // Verify files were created diff --git a/lib/biz/bizmodel/export_test.v b/lib/biz/bizmodel/export_test.v index cf59230b..e12680d1 100644 --- a/lib/biz/bizmodel/export_test.v +++ b/lib/biz/bizmodel/export_test.v @@ -10,5 +10,7 @@ pub fn test_export_report() ! { model := getset(bizmodel_name)! model.export_report(Report{ title: 'My Business Model' - }, path: export_path)! -} \ No newline at end of file + }, + path: export_path + )! +} diff --git a/lib/biz/bizmodel/factory.v b/lib/biz/bizmodel/factory.v index a1bc3dbd..5f9a6f23 100644 --- a/lib/biz/bizmodel/factory.v +++ b/lib/biz/bizmodel/factory.v @@ -33,16 +33,13 @@ pub fn getset(name string) !&BizModel { panic('bug') } - pub fn generate(name string, path string) !&BizModel { - mut model:=getset(name)! + mut model := getset(name)! mut pb := playbook.new(path: path)! model.play(mut pb)! return model } - - pub fn set(bizmodel BizModel) { lock bizmodels { bizmodels[bizmodel.name] = &bizmodel diff --git a/lib/biz/bizmodel/model.v b/lib/biz/bizmodel/model.v index 3d90d753..dc13ef97 100644 --- a/lib/biz/bizmodel/model.v +++ b/lib/biz/bizmodel/model.v @@ -8,7 +8,7 @@ pub struct BizModel { pub mut: name string description string - workdir string = '${os.home_dir()}/hero/var/bizmodel' + workdir string = '${os.home_dir()}/hero/var/bizmodel' sheet &spreadsheet.Sheet employees map[string]&Employee departments map[string]&Department @@ -22,7 +22,7 @@ pub: description string title string department string - role string + role string cost string cost_percent_revenue f64 nrpeople string diff --git a/lib/biz/bizmodel/play.v b/lib/biz/bizmodel/play.v index 2a6125ce..0025473e 100644 --- a/lib/biz/bizmodel/play.v +++ b/lib/biz/bizmodel/play.v @@ -2,7 +2,7 @@ module bizmodel import arrays import freeflowuniverse.herolib.core.texttools -import freeflowuniverse.herolib.core.playbook { PlayBook, Action } +import freeflowuniverse.herolib.core.playbook { Action, PlayBook } import freeflowuniverse.herolib.ui.console // import freeflowuniverse.herolib.core.texttools // import freeflowuniverse.herolib.ui.console @@ -16,12 +16,10 @@ const action_priorities = { pub fn play(mut plbook PlayBook) ! { // group actions by which bizmodel they belong to - actions_by_biz := arrays.group_by[string, &Action]( - plbook.actions_find(actor: 'bizmodel')!, + actions_by_biz := arrays.group_by[string, &Action](plbook.actions_find(actor: 'bizmodel')!, fn (a &Action) string { - return a.params.get('bizname') or {'default'} - } - ) + return a.params.get('bizname') or { 'default' } + }) // play actions for each biz in playbook for biz, actions in actions_by_biz { @@ -33,7 +31,6 @@ pub fn play(mut plbook PlayBook) ! { pub fn (mut m BizModel) play(mut plbook PlayBook) ! { mut actions := plbook.actions_find(actor: 'bizmodel')! - for action in actions.filter(it.name in action_priorities[0]) { console.print_debug(action) m.act(*action)! @@ -50,4 +47,4 @@ pub fn (mut m BizModel) play(mut plbook PlayBook) ! { for action in actions.filter(it.name in action_priorities[2]) { m.act(*action)! } -} \ No newline at end of file +} diff --git a/lib/biz/bizmodel/play_hr.v b/lib/biz/bizmodel/play_hr.v index 9bf0ea46..98f1234f 100644 --- a/lib/biz/bizmodel/play_hr.v +++ b/lib/biz/bizmodel/play_hr.v @@ -139,7 +139,7 @@ fn (mut m BizModel) department_define_action(action Action) !Action { if name != '' { m.departments[name] = &department } - + return action } diff --git a/lib/biz/bizmodel/play_product_revenue.v b/lib/biz/bizmodel/play_product_revenue.v index e4bab206..af905df5 100644 --- a/lib/biz/bizmodel/play_product_revenue.v +++ b/lib/biz/bizmodel/play_product_revenue.v @@ -173,7 +173,6 @@ fn (mut m BizModel) revenue_action(action Action) !Action { aggregatetype: .avg )! - mut nr_sold := m.sheet.row_new( name: '${name}_nr_sold' growth: action.params.get_default('nr_sold', '0')! @@ -254,9 +253,6 @@ fn (mut m BizModel) revenue_action(action Action) !Action { name: '${name}_cogs_monthly_from_perc' )! - - - // mut cogs_from_perc:=cogs_perc.action(action:.multiply,rows:[revenue],name:"cogs_from_perc")! // DEAL WITH MAINTENANCE @@ -322,7 +318,8 @@ fn (mut m BizModel) revenue_action(action Action) !Action { revenue_total = revenue_total.action( action: .add - rows: [revenue, revenue_items, revenue_growth, revenue_item_total, revenue_monthly_total, revenue_setup_total, maintenance_month] + rows: [revenue, revenue_items, revenue_growth, revenue_item_total, revenue_monthly_total, + revenue_setup_total, maintenance_month] )! if revenue_total.max() > 0 { diff --git a/lib/biz/spreadsheet/extrapolate.v b/lib/biz/spreadsheet/extrapolate.v index 1ec697f4..64cbe438 100644 --- a/lib/biz/spreadsheet/extrapolate.v +++ b/lib/biz/spreadsheet/extrapolate.v @@ -102,7 +102,7 @@ pub fn (mut r Row) smartfill(smartstr string) ! { } if x >= r.sheet.nrcol { // If the index is at or beyond the array bounds, use the last available index - r.cells[r.sheet.nrcol-1].set(splitted[1])! + r.cells[r.sheet.nrcol - 1].set(splitted[1])! } else { r.cells[x].set(splitted[1])! } diff --git a/lib/biz/spreadsheet/sheet_export.v b/lib/biz/spreadsheet/sheet_export.v index 80764255..ce747080 100644 --- a/lib/biz/spreadsheet/sheet_export.v +++ b/lib/biz/spreadsheet/sheet_export.v @@ -1,11 +1,12 @@ module spreadsheet + import os import freeflowuniverse.herolib.core.pathlib @[params] -pub struct ExportArgs{ +pub struct ExportArgs { pub mut: - path string + path string } fn format_number(val f64) string { @@ -21,12 +22,12 @@ fn format_number(val f64) string { pub fn (mut s Sheet) export(args ExportArgs) !string { mut result := []string{} - + // Add headers mut header_row := ['Name', 'Description', 'AggregateType', 'Tags', 'Subgroup'] header_row << s.header()! result << header_row.join('|') - + // Add rows for _, row in s.rows { mut row_data := [row.name, row.description, row.aggregatetype.str(), row.tags, row.subgroup] @@ -40,10 +41,14 @@ pub fn (mut s Sheet) export(args ExportArgs) !string { result << row_data.join('|') } - if args.path.len>0{ - mut p:=pathlib.get_file(path:args.path.replace("~",os.home_dir()), create:true, delete:true)! + if args.path.len > 0 { + mut p := pathlib.get_file( + path: args.path.replace('~', os.home_dir()) + create: true + delete: true + )! p.write(result.join('\n'))! } - + return result.join('\n') } diff --git a/lib/biz/spreadsheet/sheet_export_csv.v b/lib/biz/spreadsheet/sheet_export_csv.v index 4ea6b4f4..d215dc7e 100644 --- a/lib/biz/spreadsheet/sheet_export_csv.v +++ b/lib/biz/spreadsheet/sheet_export_csv.v @@ -6,9 +6,9 @@ import freeflowuniverse.herolib.core.pathlib @[params] pub struct ExportCSVArgs { pub mut: - path string - include_empty bool = false // whether to include empty cells or not - separator string = '|' // separator character for CSV + path string + include_empty bool = false // whether to include empty cells or not + separator string = '|' // separator character for CSV } // format_csv_value formats a value for CSV export, handling special characters @@ -45,12 +45,12 @@ fn format_number_csv(val f64, include_empty bool) string { pub fn (mut s Sheet) export_csv(args ExportCSVArgs) !string { mut result := []string{} mut separator := args.separator - + // Add headers mut header_row := ['Name', 'Description', 'AggregateType', 'Tags', 'Subgroup'] header_row << s.header()! result << header_row.map(format_csv_value(it, separator)).join(separator) - + // Add rows for _, row in s.rows { mut row_data := [ @@ -58,9 +58,9 @@ pub fn (mut s Sheet) export_csv(args ExportCSVArgs) !string { format_csv_value(row.description, separator), format_csv_value(row.aggregatetype.str(), separator), format_csv_value(row.tags, separator), - format_csv_value(row.subgroup, separator) + format_csv_value(row.subgroup, separator), ] - + for cell in row.cells { if cell.empty && !args.include_empty { row_data << '' @@ -71,11 +71,15 @@ pub fn (mut s Sheet) export_csv(args ExportCSVArgs) !string { } result << row_data.join(separator) } - + if args.path.len > 0 { - mut p := pathlib.get_file(path: args.path.replace('~', os.home_dir()), create: true, delete: true)! + mut p := pathlib.get_file( + path: args.path.replace('~', os.home_dir()) + create: true + delete: true + )! p.write(result.join('\n'))! } - + return result.join('\n') } diff --git a/lib/biz/spreadsheet/sheet_export_csv_test.v b/lib/biz/spreadsheet/sheet_export_csv_test.v index af93a0fe..fbc2dc2d 100644 --- a/lib/biz/spreadsheet/sheet_export_csv_test.v +++ b/lib/biz/spreadsheet/sheet_export_csv_test.v @@ -3,20 +3,20 @@ module spreadsheet fn test_sheet_export_csv() { // Create a test sheet mut sheet := sheet_new(name: 'test_sheet', nrcol: 12)! - + // Add some test rows with data mut row1 := sheet.row_new( - name: 'row1', - descr: 'First test row', - tags: 'test,row,first' + name: 'row1' + descr: 'First test row' + tags: 'test,row,first' )! - + mut row2 := sheet.row_new( - name: 'row2', - descr: 'Second test row with | pipe character', - tags: 'test,row,second' + name: 'row2' + descr: 'Second test row with | pipe character' + tags: 'test,row,second' )! - + // Set some cell values row1.cells[0].val = 10.5 row1.cells[0].empty = false @@ -26,7 +26,7 @@ fn test_sheet_export_csv() { row1.cells[2].empty = false row1.cells[3].val = 0.0 row1.cells[3].empty = false - + row2.cells[0].val = 5.25 row2.cells[0].empty = false row2.cells[1].val = 0.0 @@ -35,46 +35,46 @@ fn test_sheet_export_csv() { row2.cells[2].empty = false row2.cells[3].val = 3.333 row2.cells[3].empty = false - + // Test default export with pipe separator csv_output := sheet.export_csv(path: '')! lines := csv_output.split('\n') - + // Verify header line assert lines.len > 0 assert lines[0].starts_with('Name|Description|AggregateType|Tags|Subgroup|') - + // Verify data lines assert lines.len >= 3 // Header + 2 data rows assert lines[1].starts_with('row1|First test row|sum|test,row,first|') - + // Check for the cell values in the output assert lines[1].contains('|10.5|') assert lines[1].contains('|20.75|') assert lines[1].contains('|1500|') - + // Test with custom separator and include_empty option csv_output2 := sheet.export_csv( - path: '', - separator: ',', + path: '' + separator: ',' include_empty: true )! lines2 := csv_output2.split('\n') - + // Verify that empty cells are included as '0' assert lines2[1].contains('0') - + // When using comma separator, the comma in tags should be quoted, not the pipe character assert lines2[2].contains('Second test row with | pipe character') assert lines2[2].contains('"test,row,second"') - + // Test with different separator csv_output3 := sheet.export_csv( - path: '', + path: '' separator: ';' )! lines3 := csv_output3.split('\n') - + // Verify separator is used correctly assert lines3[0].starts_with('Name;Description;AggregateType;Tags;Subgroup;') } diff --git a/lib/circles/actionprocessor/factory.v b/lib/circles/actionprocessor/factory.v index 95c3566e..52141ce9 100644 --- a/lib/circles/actionprocessor/factory.v +++ b/lib/circles/actionprocessor/factory.v @@ -1,6 +1,5 @@ module actionprocessor - import freeflowuniverse.herolib.circles.core.db as core_db import freeflowuniverse.herolib.circles.mcc.db as mcc_db import freeflowuniverse.herolib.circles.actions.db as actions_db @@ -12,46 +11,44 @@ __global ( circle_default string ) - // HeroRunner is the main factory for managing jobs, agents, services, circles and names @[heap] pub struct CircleCoordinator { pub mut: - name string //is a unique name on planetary scale is a dns name - agents &core_db.AgentDB - circles &core_db.CircleDB - names &core_db.NameDB - mails &mcc_db.MailDB - calendar &mcc_db.CalendarDB - jobs &actions_db.JobDB - session_state SessionState + name string // is a unique name on planetary scale is a dns name + agents &core_db.AgentDB + circles &core_db.CircleDB + names &core_db.NameDB + mails &mcc_db.MailDB + calendar &mcc_db.CalendarDB + jobs &actions_db.JobDB + session_state SessionState } - @[params] -pub struct CircleCoordinatorArgs{ +pub struct CircleCoordinatorArgs { pub mut: - name string = "local" - pubkey string // pubkey of user who called this - addr string //mycelium address - path string + name string = 'local' + pubkey string // pubkey of user who called this + addr string // mycelium address + path string } // new creates a new CircleCoordinator instance pub fn new(args_ CircleCoordinatorArgs) !&CircleCoordinator { - mut args:=args_ + mut args := args_ args.name = texttools.name_fix(args.name) if args.name in circle_global { - mut c:=circle_global[args.name] or {panic("bug")} + mut c := circle_global[args.name] or { panic('bug') } return c } mut session_state := base.new_session(base.StateArgs{ - name: args.name + name: args.name pubkey: args.pubkey - addr: args.addr - path: args.path + addr: args.addr + path: args.path })! // os.mkdir_all(mypath)! @@ -61,22 +58,33 @@ pub fn new(args_ CircleCoordinatorArgs) !&CircleCoordinator { // os.mkdir_all(os.join_path(mypath, 'meta_core'))! // os.mkdir_all(os.join_path(mypath, 'meta_mcc'))! //message, contacts, calendar - // Initialize the db handlers with proper ourdb instances - mut agent_db := core_db.new_agentdb(session_state) or { return error('Failed to initialize agent_db: ${err}') } - mut circle_db := core_db.new_circledb(session_state) or { return error('Failed to initialize circle_db: ${err}') } - mut name_db := core_db.new_namedb(session_state) or { return error('Failed to initialize name_db: ${err}') } - mut mail_db := mcc_db.new_maildb(session_state) or { return error('Failed to initialize mail_db: ${err}') } - mut calendar_db := mcc_db.new_calendardb(session_state) or { return error('Failed to initialize calendar_db: ${err}') } - mut job_db := actions_db.new_jobdb(session_state) or { return error('Failed to initialize job_db: ${err}') } + mut agent_db := core_db.new_agentdb(session_state) or { + return error('Failed to initialize agent_db: ${err}') + } + mut circle_db := core_db.new_circledb(session_state) or { + return error('Failed to initialize circle_db: ${err}') + } + mut name_db := core_db.new_namedb(session_state) or { + return error('Failed to initialize name_db: ${err}') + } + mut mail_db := mcc_db.new_maildb(session_state) or { + return error('Failed to initialize mail_db: ${err}') + } + mut calendar_db := mcc_db.new_calendardb(session_state) or { + return error('Failed to initialize calendar_db: ${err}') + } + mut job_db := actions_db.new_jobdb(session_state) or { + return error('Failed to initialize job_db: ${err}') + } mut cm := &CircleCoordinator{ - agents: &agent_db - circles: &circle_db - names: &name_db - mails: &mail_db - calendar: &calendar_db - jobs: &job_db + agents: &agent_db + circles: &circle_db + names: &name_db + mails: &mail_db + calendar: &calendar_db + jobs: &job_db session_state: session_state } diff --git a/lib/circles/actions/db/job_db.v b/lib/circles/actions/db/job_db.v index 2f015d04..a7e7c0d3 100644 --- a/lib/circles/actions/db/job_db.v +++ b/lib/circles/actions/db/job_db.v @@ -1,7 +1,7 @@ module db import freeflowuniverse.herolib.circles.base { DBHandler, SessionState, new_dbhandler } -import freeflowuniverse.herolib.circles.actions.models { Job, job_loads, JobStatus } +import freeflowuniverse.herolib.circles.actions.models { Job, JobStatus } @[heap] pub struct JobDB { @@ -57,7 +57,7 @@ pub fn (mut m JobDB) delete_by_guid(guid string) ! { // Job not found, nothing to delete return } - + // Delete the job by ID m.delete(job.id)! } @@ -66,10 +66,10 @@ pub fn (mut m JobDB) delete_by_guid(guid string) ! { pub fn (mut m JobDB) update_job_status(guid string, new_status JobStatus) !Job { // Get the job by GUID mut job := m.get_by_guid(guid)! - + // Update the job status job.status = new_status - + // Save the updated job return m.set(job)! } diff --git a/lib/circles/actions/db/job_db_test.v b/lib/circles/actions/db/job_db_test.v index 3a35bcde..e37e3ef9 100644 --- a/lib/circles/actions/db/job_db_test.v +++ b/lib/circles/actions/db/job_db_test.v @@ -3,7 +3,7 @@ module db import os import rand import freeflowuniverse.herolib.circles.actionprocessor -import freeflowuniverse.herolib.circles.actions.models { Status, JobStatus } +import freeflowuniverse.herolib.circles.actions.models { JobStatus, Status } import freeflowuniverse.herolib.data.ourtime fn test_job_db() { @@ -11,7 +11,7 @@ fn test_job_db() { test_dir := os.join_path(os.temp_dir(), 'hero_job_test_${rand.intn(9000) or { 0 } + 1000}') os.mkdir_all(test_dir) or { panic(err) } defer { os.rmdir_all(test_dir) or {} } - + mut runner := actionprocessor.new(path: test_dir)! // Create multiple jobs for testing @@ -24,7 +24,7 @@ fn test_job_db() { job1.agents = ['agent1', 'agent2'] job1.source = 'source1' job1.params = { - 'id': '10' + 'id': '10' 'name': 'test-vm' } job1.status.guid = job1.guid @@ -40,7 +40,7 @@ fn test_job_db() { job2.agents = ['agent1'] job2.source = 'source1' job2.params = { - 'id': '11' + 'id': '11' 'name': 'test-vm-2' } job2.status.guid = job2.guid @@ -66,30 +66,30 @@ fn test_job_db() { // Add the jobs println('Adding job 1') job1 = runner.jobs.set(job1)! - + println('Adding job 2') job2 = runner.jobs.set(job2)! - + println('Adding job 3') job3 = runner.jobs.set(job3)! // Test list functionality println('Testing list functionality') - + // Get all jobs all_jobs := runner.jobs.getall()! println('Retrieved ${all_jobs.len} jobs') for i, job in all_jobs { println('Job ${i}: id=${job.id}, guid=${job.guid}, actor=${job.actor}') } - + assert all_jobs.len == 3, 'Expected 3 jobs, got ${all_jobs.len}' - + // Verify all jobs are in the list mut found1 := false mut found2 := false mut found3 := false - + for job in all_jobs { if job.guid == 'job-1' { found1 = true @@ -99,7 +99,7 @@ fn test_job_db() { found3 = true } } - + assert found1, 'Job 1 not found in list' assert found2, 'Job 2 not found in list' assert found3, 'Job 3 not found in list' @@ -121,14 +121,14 @@ fn test_job_db() { // Test get_by_actor method println('Testing get_by_actor method') - + // Debug: Print all jobs and their actors all_jobs_debug := runner.jobs.getall()! println('Debug - All jobs:') for job in all_jobs_debug { println('Job ID: ${job.id}, GUID: ${job.guid}, Actor: ${job.actor}') } - + // Debug: Print the index keys for job1 and job2 println('Debug - Index keys for job1:') for k, v in job1.index_keys() { @@ -138,12 +138,12 @@ fn test_job_db() { for k, v in job2.index_keys() { println('${k}: ${v}') } - + // Test update_job_status method println('Testing update_job_status method') - updated_job1 := runner.jobs.update_job_status('job-1', JobStatus{status: Status.running})! + updated_job1 := runner.jobs.update_job_status('job-1', JobStatus{ status: Status.running })! assert updated_job1.status.status == Status.running - + // Verify the status was updated in the database status_updated_job1 := runner.jobs.get_by_guid('job-1')! assert status_updated_job1.status.status == Status.running @@ -152,16 +152,16 @@ fn test_job_db() { println('Testing delete functionality') // Delete job 2 runner.jobs.delete_by_guid('job-2')! - + // Verify deletion with list jobs_after_delete := runner.jobs.getall()! assert jobs_after_delete.len == 2, 'Expected 2 jobs after deletion, got ${jobs_after_delete.len}' - + // Verify the remaining jobs mut found_after_delete1 := false mut found_after_delete2 := false mut found_after_delete3 := false - + for job in jobs_after_delete { if job.guid == 'job-1' { found_after_delete1 = true @@ -171,7 +171,7 @@ fn test_job_db() { found_after_delete3 = true } } - + assert found_after_delete1, 'Job 1 not found after deletion' assert !found_after_delete2, 'Job 2 found after deletion (should be deleted)' assert found_after_delete3, 'Job 3 not found after deletion' @@ -179,7 +179,7 @@ fn test_job_db() { // Delete another job println('Deleting another job') runner.jobs.delete_by_guid('job-3')! - + // Verify only one job remains jobs_after_second_delete := runner.jobs.getall()! assert jobs_after_second_delete.len == 1, 'Expected 1 job after second deletion, got ${jobs_after_second_delete.len}' @@ -188,11 +188,12 @@ fn test_job_db() { // Delete the last job println('Deleting last job') runner.jobs.delete_by_guid('job-1')! - + // Verify no jobs remain jobs_after_all_deleted := runner.jobs.getall() or { // This is expected to fail with 'No jobs found' error - assert err.msg().contains('No index keys defined for this type') || err.msg().contains('No jobs found') + assert err.msg().contains('No index keys defined for this type') + || err.msg().contains('No jobs found') []models.Job{cap: 0} } assert jobs_after_all_deleted.len == 0, 'Expected 0 jobs after all deletions, got ${jobs_after_all_deleted.len}' diff --git a/lib/circles/actions/models/job.v b/lib/circles/actions/models/job.v index 7a026236..61dd2133 100644 --- a/lib/circles/actions/models/job.v +++ b/lib/circles/actions/models/job.v @@ -21,7 +21,7 @@ pub mut: ignore_error bool // means if error will just exit and not raise, there will be no error reporting ignore_error_codes []u16 // of we want to ignore certain error codes debug bool // if debug will get more context - retry u8 // default there is no debug + retry u8 // default there is no debug status JobStatus dependencies []JobDependency // will not execute until other jobs are done } @@ -55,9 +55,9 @@ pub enum Status { pub fn (j Job) index_keys() map[string]string { return { - 'guid': j.guid - 'actor': j.actor - 'circle': j.circle + 'guid': j.guid + 'actor': j.actor + 'circle': j.circle 'context': j.context } } @@ -69,63 +69,63 @@ pub fn (j Job) dumps() ![]u8 { // Add unique encoding ID to identify this type of data e.add_u16(300) - + // Encode Job fields e.add_u32(j.id) e.add_string(j.guid) - + // Encode agents array e.add_u16(u16(j.agents.len)) for agent in j.agents { e.add_string(agent) } - + e.add_string(j.source) e.add_string(j.circle) e.add_string(j.context) e.add_string(j.actor) e.add_string(j.action) - + // Encode params map e.add_u16(u16(j.params.len)) for key, value in j.params { e.add_string(key) e.add_string(value) } - + e.add_u16(j.timeout_schedule) e.add_u16(j.timeout) e.add_bool(j.log) e.add_bool(j.ignore_error) - + // Encode ignore_error_codes array e.add_u16(u16(j.ignore_error_codes.len)) for code in j.ignore_error_codes { e.add_u16(code) } - + e.add_bool(j.debug) e.add_u8(j.retry) - + // Encode JobStatus e.add_string(j.status.guid) e.add_u32(u32(j.status.created.unix())) e.add_u32(u32(j.status.start.unix())) e.add_u32(u32(j.status.end.unix())) e.add_u8(u8(j.status.status)) - + // Encode dependencies array e.add_u16(u16(j.dependencies.len)) for dependency in j.dependencies { e.add_string(dependency.guid) - + // Encode dependency agents array e.add_u16(u16(dependency.agents.len)) for agent in dependency.agents { e.add_string(agent) } } - + return e.data } @@ -139,24 +139,24 @@ pub fn job_loads(data []u8) !Job { if encoding_id != 300 { return error('Wrong file type: expected encoding ID 300, got ${encoding_id}, for job') } - + // Decode Job fields job.id = d.get_u32()! job.guid = d.get_string()! - + // Decode agents array agents_len := d.get_u16()! job.agents = []string{len: int(agents_len)} for i in 0 .. agents_len { job.agents[i] = d.get_string()! } - + job.source = d.get_string()! job.circle = d.get_string()! job.context = d.get_string()! job.actor = d.get_string()! job.action = d.get_string()! - + // Decode params map params_len := d.get_u16()! job.params = map[string]string{} @@ -165,22 +165,22 @@ pub fn job_loads(data []u8) !Job { value := d.get_string()! job.params[key] = value } - + job.timeout_schedule = d.get_u16()! job.timeout = d.get_u16()! job.log = d.get_bool()! job.ignore_error = d.get_bool()! - + // Decode ignore_error_codes array error_codes_len := d.get_u16()! job.ignore_error_codes = []u16{len: int(error_codes_len)} for i in 0 .. error_codes_len { job.ignore_error_codes[i] = d.get_u16()! } - + job.debug = d.get_bool()! job.retry = d.get_u8()! - + // Decode JobStatus job.status.guid = d.get_string()! job.status.created.unixt = u64(d.get_u32()!) @@ -196,23 +196,23 @@ pub fn job_loads(data []u8) !Job { 5 { Status.ok } else { return error('Invalid Status value: ${status_val}') } } - + // Decode dependencies array dependencies_len := d.get_u16()! job.dependencies = []JobDependency{len: int(dependencies_len)} for i in 0 .. dependencies_len { mut dependency := JobDependency{} dependency.guid = d.get_string()! - + // Decode dependency agents array dep_agents_len := d.get_u16()! dependency.agents = []string{len: int(dep_agents_len)} for j in 0 .. dep_agents_len { dependency.agents[j] = d.get_string()! } - + job.dependencies[i] = dependency } - + return job } diff --git a/lib/circles/actions/models/job_test.v b/lib/circles/actions/models/job_test.v index 67f202cd..4c5235fa 100644 --- a/lib/circles/actions/models/job_test.v +++ b/lib/circles/actions/models/job_test.v @@ -5,39 +5,39 @@ import freeflowuniverse.herolib.data.ourtime fn test_job_serialization() { // Create a test job mut job := Job{ - id: 1 - guid: 'test-job-1' - agents: ['agent1', 'agent2'] - source: 'source1' - circle: 'test-circle' - context: 'test-context' - actor: 'vm_manager' - action: 'start' - params: { - 'id': '10' + id: 1 + guid: 'test-job-1' + agents: ['agent1', 'agent2'] + source: 'source1' + circle: 'test-circle' + context: 'test-context' + actor: 'vm_manager' + action: 'start' + params: { + 'id': '10' 'name': 'test-vm' } - timeout_schedule: 120 - timeout: 7200 - log: true - ignore_error: false + timeout_schedule: 120 + timeout: 7200 + log: true + ignore_error: false ignore_error_codes: [u16(404), u16(500)] - debug: true - retry: 3 + debug: true + retry: 3 } // Set up job status job.status = JobStatus{ - guid: job.guid + guid: job.guid created: ourtime.now() - start: ourtime.now() - end: ourtime.OurTime{} - status: .created + start: ourtime.now() + end: ourtime.OurTime{} + status: .created } // Add a dependency job.dependencies << JobDependency{ - guid: 'dependency-job-1' + guid: 'dependency-job-1' agents: ['agent1'] } @@ -130,16 +130,16 @@ fn test_job_status_enum() { fn test_job_dependency() { // Create a test dependency mut dependency := JobDependency{ - guid: 'dependency-job-1' + guid: 'dependency-job-1' agents: ['agent1', 'agent2', 'agent3'] } // Create a job with this dependency mut job := Job{ - id: 2 - guid: 'test-job-2' - actor: 'network_manager' - action: 'create' + id: 2 + guid: 'test-job-2' + actor: 'network_manager' + action: 'create' dependencies: [dependency] } @@ -153,7 +153,7 @@ fn test_job_dependency() { // Add another dependency job.dependencies << JobDependency{ - guid: 'dependency-job-2' + guid: 'dependency-job-2' agents: ['agent4'] } @@ -169,9 +169,9 @@ fn test_job_dependency() { fn test_job_with_empty_values() { // Create a job with minimal values mut job := Job{ - id: 3 - guid: 'minimal-job' - actor: 'minimal_actor' + id: 3 + guid: 'minimal-job' + actor: 'minimal_actor' action: 'test' } diff --git a/lib/circles/actions/play/create.v b/lib/circles/actions/play/create.v index 7f32a70c..b60a8826 100644 --- a/lib/circles/actions/play/create.v +++ b/lib/circles/actions/play/create.v @@ -1,7 +1,7 @@ module play import freeflowuniverse.herolib.data.ourtime -import freeflowuniverse.herolib.circles.actions.models { Job, JobStatus, Status } +import freeflowuniverse.herolib.circles.actions.models { JobStatus, Status } import freeflowuniverse.herolib.data.paramsparser import crypto.rand import encoding.hex @@ -10,60 +10,60 @@ import encoding.hex pub fn (mut p Player) create(params paramsparser.Params) ! { // Create a new job mut job := p.job_db.new() - + // Set job properties from parameters job.guid = params.get_default('guid', generate_random_id()!)! job.actor = params.get_default('actor', '')! job.action = params.get_default('action', '')! job.circle = params.get_default('circle', 'default')! job.context = params.get_default('context', 'default')! - + // Set agents if provided if params.exists('agents') { job.agents = params.get_list('agents')! } - + // Set source if provided if params.exists('source') { job.source = params.get('source')! } - + // Set timeouts if provided if params.exists('timeout_schedule') { job.timeout_schedule = u16(params.get_int('timeout_schedule')!) } - + if params.exists('timeout') { job.timeout = u16(params.get_int('timeout')!) } - + // Set flags job.log = params.get_default_true('log') job.ignore_error = params.get_default_false('ignore_error') job.debug = params.get_default_false('debug') - + if params.exists('retry') { job.retry = u8(params.get_int('retry')!) } - + // Set initial status job.status = JobStatus{ - guid: job.guid + guid: job.guid created: ourtime.now() - status: Status.created + status: Status.created } - + // // Set any additional parameters // for key, value in params.get_map() { - // if key !in ['guid', 'actor', 'action', 'circle', 'context', 'agents', + // if key !in ['guid', 'actor', 'action', 'circle', 'context', 'agents', // 'source', 'timeout_schedule', 'timeout', 'log', 'ignore_error', 'debug', 'retry'] { // job.params[key] = value // } // } - + // Save the job saved_job := p.job_db.set(job)! - + // Return result based on format match p.return_format { .heroscript { diff --git a/lib/circles/actions/play/delete.v b/lib/circles/actions/play/delete.v index e6bdba81..16499f03 100644 --- a/lib/circles/actions/play/delete.v +++ b/lib/circles/actions/play/delete.v @@ -7,7 +7,7 @@ pub fn (mut p Player) delete(params paramsparser.Params) ! { if params.exists('id') { id := u32(params.get_int('id')!) p.job_db.delete(id)! - + // Return result based on format match p.return_format { .heroscript { @@ -20,7 +20,7 @@ pub fn (mut p Player) delete(params paramsparser.Params) ! { } else if params.exists('guid') { guid := params.get('guid')! p.job_db.delete_by_guid(guid)! - + // Return result based on format match p.return_format { .heroscript { diff --git a/lib/circles/actions/play/get.v b/lib/circles/actions/play/get.v index e8dbf3e9..ba3f51d6 100644 --- a/lib/circles/actions/play/get.v +++ b/lib/circles/actions/play/get.v @@ -6,11 +6,11 @@ import json // get processes a job retrieval action pub fn (mut p Player) get(params paramsparser.Params) ! { mut job_result := '' - + if params.exists('id') { id := u32(params.get_int('id')!) job := p.job_db.get(id)! - + // Return result based on format match p.return_format { .heroscript { @@ -23,7 +23,7 @@ pub fn (mut p Player) get(params paramsparser.Params) ! { } else if params.exists('guid') { guid := params.get('guid')! job := p.job_db.get_by_guid(guid)! - + // Return result based on format match p.return_format { .heroscript { @@ -36,6 +36,6 @@ pub fn (mut p Player) get(params paramsparser.Params) ! { } else { return error('Either id or guid must be provided for job.get') } - + println(job_result) } diff --git a/lib/circles/actions/play/list.v b/lib/circles/actions/play/list.v index 1c619409..5a5d8c6e 100644 --- a/lib/circles/actions/play/list.v +++ b/lib/circles/actions/play/list.v @@ -7,11 +7,11 @@ import json pub fn (mut p Player) list(params paramsparser.Params) ! { // Get all job IDs ids := p.job_db.list()! - + if params.get_default_false('verbose') { // Get all jobs if verbose mode is enabled jobs := p.job_db.getall()! - + // Return result based on format match p.return_format { .heroscript { @@ -28,7 +28,7 @@ pub fn (mut p Player) list(params paramsparser.Params) ! { // Return result based on format match p.return_format { .heroscript { - println('!!job.list_result count:${ids.len} ids:\'${ids.map(it.str()).join(",")}\'') + println('!!job.list_result count:${ids.len} ids:\'${ids.map(it.str()).join(',')}\'') } .json { println('{"action": "job.list_result", "count": ${ids.len}, "ids": ${json.encode(ids)}}') diff --git a/lib/circles/actions/play/play_jobs.vsh b/lib/circles/actions/play/play_jobs.vsh index fa56d9d2..a76ad167 100644 --- a/lib/circles/actions/play/play_jobs.vsh +++ b/lib/circles/actions/play/play_jobs.vsh @@ -1,6 +1,6 @@ #!/usr/bin/env -S v -n -w -gc none -cc tcc -d use_openssl -enable-globals run -import freeflowuniverse.herolib.circles.actions.play { Player, ReturnFormat } +import freeflowuniverse.herolib.circles.actions.play { ReturnFormat } import os import flag @@ -40,7 +40,7 @@ fn main() { // Load heroscript from file or text mut input := '' mut is_text := false - + if input_file != '' { input = input_file is_text = false diff --git a/lib/circles/actions/play/player.v b/lib/circles/actions/play/player.v index cb936cbf..b905b35a 100644 --- a/lib/circles/actions/play/player.v +++ b/lib/circles/actions/play/player.v @@ -1,7 +1,7 @@ module play import freeflowuniverse.herolib.core.playbook -import freeflowuniverse.herolib.circles.base { Databases, SessionState, new_session } +import freeflowuniverse.herolib.circles.base { SessionState, new_session } import freeflowuniverse.herolib.circles.actions.db { JobDB, new_jobdb } import os @@ -15,10 +15,10 @@ pub enum ReturnFormat { @[heap] pub struct Player { pub mut: - actor string // The name of the actor as used in heroscript + actor string // The name of the actor as used in heroscript return_format ReturnFormat // Format for returning results session_state SessionState // Session state for database operations - job_db JobDB // Job database handler + job_db JobDB // Job database handler } // new_player creates a new Player instance @@ -33,10 +33,10 @@ pub fn new_player(actor string, return_format ReturnFormat) !Player { mut job_db := new_jobdb(session_state)! return Player{ - actor: actor + actor: actor return_format: return_format session_state: session_state - job_db: job_db + job_db: job_db } } @@ -51,7 +51,7 @@ pub fn (mut p Player) play(input string, is_text bool) ! { // Find all actions for this actor filter := '${p.actor}.' actions := plbook.find(filter: filter)! - + if actions.len == 0 { println('No actions found for actor: ${p.actor}') return @@ -60,7 +60,7 @@ pub fn (mut p Player) play(input string, is_text bool) ! { // Process each action for action in actions { action_name := action.name.split('.')[1] - + // Call the appropriate method based on the action name match action_name { 'create' { p.create(action.params)! } diff --git a/lib/circles/actions/play/update_status.v b/lib/circles/actions/play/update_status.v index 390fc206..f12cae80 100644 --- a/lib/circles/actions/play/update_status.v +++ b/lib/circles/actions/play/update_status.v @@ -9,35 +9,47 @@ pub fn (mut p Player) update_status(params paramsparser.Params) ! { if params.exists('guid') && params.exists('status') { guid := params.get('guid')! status_str := params.get('status')! - + // Convert status string to Status enum mut new_status := Status.created match status_str { - 'created' { new_status = Status.created } - 'scheduled' { new_status = Status.scheduled } - 'planned' { new_status = Status.planned } - 'running' { new_status = Status.running } - 'error' { new_status = Status.error } - 'ok' { new_status = Status.ok } + 'created' { + new_status = Status.created + } + 'scheduled' { + new_status = Status.scheduled + } + 'planned' { + new_status = Status.planned + } + 'running' { + new_status = Status.running + } + 'error' { + new_status = Status.error + } + 'ok' { + new_status = Status.ok + } else { return error('Invalid status value: ${status_str}') } } - + // Create job status object mut job_status := JobStatus{ - guid: guid + guid: guid created: ourtime.now() - status: new_status + status: new_status } - + // Set start time if provided if params.exists('start') { job_status.start = params.get_time('start')! } else { job_status.start = ourtime.now() } - + // Set end time if provided if params.exists('end') { job_status.end = params.get_time('end')! @@ -45,10 +57,10 @@ pub fn (mut p Player) update_status(params paramsparser.Params) ! { // Automatically set end time for terminal statuses job_status.end = ourtime.now() } - + // Update job status p.job_db.update_job_status(guid, job_status)! - + // Return result based on format match p.return_format { .heroscript { diff --git a/lib/circles/base/sessionstate.v b/lib/circles/base/sessionstate.v index 0a76804b..4f234a66 100644 --- a/lib/circles/base/sessionstate.v +++ b/lib/circles/base/sessionstate.v @@ -8,32 +8,31 @@ import os // SessionState holds the state of a session which is linked to someone calling it as well as the DB's we use pub struct SessionState { pub mut: - name string - pubkey string // pubkey of user who called this - addr string //mycelium address - dbs Databases + name string + pubkey string // pubkey of user who called this + addr string // mycelium address + dbs Databases } -pub struct Databases{ +pub struct Databases { pub mut: db_data_core &ourdb.OurDB db_meta_core &radixtree.RadixTree - db_data_mcc &ourdb.OurDB - db_meta_mcc &radixtree.RadixTree + db_data_mcc &ourdb.OurDB + db_meta_mcc &radixtree.RadixTree } @[params] pub struct StateArgs { pub mut: - name string - pubkey string // pubkey of user who called this - addr string //mycelium address - path string + name string + pubkey string // pubkey of user who called this + addr string // mycelium address + path string } - pub fn new_session(args_ StateArgs) !SessionState { - mut args:=args_ + mut args := args_ args.name = texttools.name_fix(args.name) @@ -41,35 +40,35 @@ pub fn new_session(args_ StateArgs) !SessionState { args.path = os.join_path(os.home_dir(), 'hero', 'dbs') } - mypath:=os.join_path(args.path, args.name) + mypath := os.join_path(args.path, args.name) - mut db_data_core := ourdb.new( - path: os.join_path(mypath, 'data_core') - incremental_mode: true - )! - mut db_meta_core := radixtree.new( - path: os.join_path(mypath, 'meta_core') - )! - mut db_data_mcc := ourdb.new( - path: os.join_path(mypath, 'data_mcc') - incremental_mode: false - )! - mut db_meta_mcc := radixtree.new( - path: os.join_path(mypath, 'meta_mcc') - )! + mut db_data_core := ourdb.new( + path: os.join_path(mypath, 'data_core') + incremental_mode: true + )! + mut db_meta_core := radixtree.new( + path: os.join_path(mypath, 'meta_core') + )! + mut db_data_mcc := ourdb.new( + path: os.join_path(mypath, 'data_mcc') + incremental_mode: false + )! + mut db_meta_mcc := radixtree.new( + path: os.join_path(mypath, 'meta_mcc') + )! - mut dbs := Databases{ - db_data_core: &db_data_core - db_meta_core: &db_meta_core - db_data_mcc: &db_data_mcc - db_meta_mcc: &db_meta_mcc - } + mut dbs := Databases{ + db_data_core: &db_data_core + db_meta_core: &db_meta_core + db_data_mcc: &db_data_mcc + db_meta_mcc: &db_meta_mcc + } mut s := SessionState{ - name: args.name - dbs: dbs + name: args.name + dbs: dbs pubkey: args.pubkey - addr: args.addr + addr: args.addr } return s diff --git a/lib/circles/core/db/agent_db.v b/lib/circles/core/db/agent_db.v index 7c9ed270..5403747f 100644 --- a/lib/circles/core/db/agent_db.v +++ b/lib/circles/core/db/agent_db.v @@ -2,8 +2,7 @@ module db import freeflowuniverse.herolib.data.ourtime import freeflowuniverse.herolib.circles.base { DBHandler, SessionState, new_dbhandler } -import freeflowuniverse.herolib.circles.core.models { Agent, AgentService, AgentServiceAction, AgentState } - +import freeflowuniverse.herolib.circles.core.models { Agent, AgentState } @[heap] pub struct AgentDB { @@ -30,6 +29,7 @@ pub fn (mut m AgentDB) set(agent Agent) !Agent { pub fn (mut m AgentDB) get(id u32) !Agent { return m.db.get(id)! } + // list returns all agent IDs pub fn (mut m AgentDB) list() ![]u32 { return m.db.list()! @@ -58,7 +58,7 @@ pub fn (mut m AgentDB) delete_by_pubkey(pubkey string) ! { // Agent not found, nothing to delete return } - + // Delete the agent by ID m.delete(agent.id)! } @@ -67,11 +67,11 @@ pub fn (mut m AgentDB) delete_by_pubkey(pubkey string) ! { pub fn (mut m AgentDB) update_status(pubkey string, status AgentState) !Agent { // Get the agent by pubkey mut agent := m.get_by_pubkey(pubkey)! - + // Update the status agent.status.status = status agent.status.timestamp_last = ourtime.now() - + // Save the updated agent return m.set(agent)! } @@ -80,29 +80,29 @@ pub fn (mut m AgentDB) update_status(pubkey string, status AgentState) !Agent { pub fn (mut m AgentDB) get_all_agent_pubkeys() ![]string { // Get all agent IDs agent_ids := m.list()! - + // Get pubkeys for all agents mut pubkeys := []string{} for id in agent_ids { agent := m.get(id) or { continue } pubkeys << agent.pubkey } - + return pubkeys } // get_by_service returns all agents that provide a specific service pub fn (mut m AgentDB) get_by_service(actor string, action string) ![]Agent { mut matching_agents := []Agent{} - + // Get all agent IDs agent_ids := m.list()! - + // Filter agents that provide the specified service for id in agent_ids { // Get the agent by ID agent := m.get(id) or { continue } - + // Check if agent provides the specified service for service in agent.services { if service.actor == actor { @@ -116,6 +116,6 @@ pub fn (mut m AgentDB) get_by_service(actor string, action string) ![]Agent { } } } - + return matching_agents } diff --git a/lib/circles/core/db/agent_db_test.v b/lib/circles/core/db/agent_db_test.v index c2f4c844..39fa8228 100755 --- a/lib/circles/core/db/agent_db_test.v +++ b/lib/circles/core/db/agent_db_test.v @@ -3,14 +3,14 @@ module db import os import rand import freeflowuniverse.herolib.circles.actionprocessor -import freeflowuniverse.herolib.circles.core.models {Agent, AgentService, AgentServiceAction, AgentState} +import freeflowuniverse.herolib.circles.core.models { Agent } fn test_agent_db() { // Create a temporary directory for testing test_dir := os.join_path(os.temp_dir(), 'hero_agent_test_${rand.intn(9000) or { 0 } + 1000}') os.mkdir_all(test_dir) or { panic(err) } defer { os.rmdir_all(test_dir) or {} } - + mut runner := actionprocessor.new(path: test_dir)! // Create multiple agents for testing @@ -31,10 +31,10 @@ fn test_agent_db() { // Create a service using the factory method mut service := agent1.new_service(actor: 'vm_manager', description: 'VM Management Service') - + // Create a service action using the factory method - mut action := service.new_action(action:'start', description: 'Start a VM') - + mut action := service.new_action(action: 'start', description: 'Start a VM') + // Set additional properties for the action action.params = { 'name': 'string' @@ -46,48 +46,48 @@ fn test_agent_db() { // Add the agents println('Adding agent 1') agent1 = runner.agents.set(agent1)! - + // Explicitly set different IDs for each agent to avoid overwriting agent2.id = 1 // Set a different ID for agent2 println('Adding agent 2') agent2 = runner.agents.set(agent2)! - + agent3.id = 2 // Set a different ID for agent3 println('Adding agent 3') agent3 = runner.agents.set(agent3)! // Test list functionality println('Testing list functionality') - + // Debug: Print the agent IDs in the list agent_ids := runner.agents.list()! println('Agent IDs in list: ${agent_ids}') - + // Debug: Print the 'all' key from the radix tree all_bytes := runner.agents.db.session_state.dbs.db_meta_core.get('agent:id') or { println('No agent:id key found in radix tree') []u8{} } - + if all_bytes.len > 0 { all_str := all_bytes.bytestr() println('Raw agent:id key content: "${all_str}"') } - + // Get all agents all_agents := runner.agents.getall()! println('Retrieved ${all_agents.len} agents') for i, agent in all_agents { println('Agent ${i}: id=${agent.id}, pubkey=${agent.pubkey}') } - + assert all_agents.len == 3, 'Expected 3 agents, got ${all_agents.len}' - + // Verify all agents are in the list mut found1 := false mut found2 := false mut found3 := false - + for agent in all_agents { if agent.pubkey == 'test-agent-1' { found1 = true @@ -97,7 +97,7 @@ fn test_agent_db() { found3 = true } } - + assert found1, 'Agent 1 not found in list' assert found2, 'Agent 2 not found in list' assert found3, 'Agent 3 not found in list' @@ -128,16 +128,16 @@ fn test_agent_db() { println('Testing delete functionality') // Delete agent 2 runner.agents.delete_by_pubkey('test-agent-2')! - + // Verify deletion with list agents_after_delete := runner.agents.getall()! assert agents_after_delete.len == 2, 'Expected 2 agents after deletion, got ${agents_after_delete.len}' - + // Verify the remaining agents mut found_after_delete1 := false mut found_after_delete2 := false mut found_after_delete3 := false - + for agent in agents_after_delete { if agent.pubkey == 'test-agent-1' { found_after_delete1 = true @@ -147,7 +147,7 @@ fn test_agent_db() { found_after_delete3 = true } } - + assert found_after_delete1, 'Agent 1 not found after deletion' assert !found_after_delete2, 'Agent 2 found after deletion (should be deleted)' assert found_after_delete3, 'Agent 3 not found after deletion' @@ -155,7 +155,7 @@ fn test_agent_db() { // Delete another agent println('Deleting another agent') runner.agents.delete_by_pubkey('test-agent-3')! - + // Verify only one agent remains agents_after_second_delete := runner.agents.getall()! assert agents_after_second_delete.len == 1, 'Expected 1 agent after second deletion, got ${agents_after_second_delete.len}' @@ -164,7 +164,7 @@ fn test_agent_db() { // Delete the last agent println('Deleting last agent') runner.agents.delete_by_pubkey('test-agent-1')! - + // Verify no agents remain agents_after_all_deleted := runner.agents.getall() or { // This is expected to fail with 'No agents found' error diff --git a/lib/circles/core/db/circle_db.v b/lib/circles/core/db/circle_db.v index 92acf091..fa586a63 100644 --- a/lib/circles/core/db/circle_db.v +++ b/lib/circles/core/db/circle_db.v @@ -57,7 +57,7 @@ pub fn (mut m CircleDB) delete_by_name(name string) ! { // Circle not found, nothing to delete return } - + // Delete the circle by ID m.delete(circle.id)! } @@ -66,14 +66,14 @@ pub fn (mut m CircleDB) delete_by_name(name string) ! { pub fn (mut m CircleDB) get_all_circle_names() ![]string { // Get all circle IDs circle_ids := m.list()! - + // Get names for all circles mut names := []string{} for id in circle_ids { circle := m.get(id) or { continue } names << circle.name } - + return names } @@ -81,17 +81,17 @@ pub fn (mut m CircleDB) get_all_circle_names() ![]string { pub fn (mut m CircleDB) add_member(circle_name string, member Member) !Circle { // Get the circle by name mut circle := m.get_by_name(circle_name)! - + // Check if member with same name already exists for existing_member in circle.members { if existing_member.name == member.name { return error('Member with name ${member.name} already exists in circle ${circle_name}') } } - + // Add the member circle.members << member - + // Save the updated circle return m.set(circle)! } @@ -100,11 +100,11 @@ pub fn (mut m CircleDB) add_member(circle_name string, member Member) !Circle { pub fn (mut m CircleDB) remove_member(circle_name string, member_name string) !Circle { // Get the circle by name mut circle := m.get_by_name(circle_name)! - + // Find and remove the member mut found := false mut new_members := []Member{} - + for member in circle.members { if member.name == member_name { found = true @@ -112,14 +112,14 @@ pub fn (mut m CircleDB) remove_member(circle_name string, member_name string) !C } new_members << member } - + if !found { return error('Member with name ${member_name} not found in circle ${circle_name}') } - + // Update the circle members circle.members = new_members - + // Save the updated circle return m.set(circle)! } @@ -128,10 +128,10 @@ pub fn (mut m CircleDB) remove_member(circle_name string, member_name string) !C pub fn (mut m CircleDB) update_member_role(circle_name string, member_name string, new_role Role) !Circle { // Get the circle by name mut circle := m.get_by_name(circle_name)! - + // Find and update the member mut found := false - + for i, mut member in circle.members { if member.name == member_name { circle.members[i].role = new_role @@ -139,11 +139,11 @@ pub fn (mut m CircleDB) update_member_role(circle_name string, member_name strin break } } - + if !found { return error('Member with name ${member_name} not found in circle ${circle_name}') } - + // Save the updated circle return m.set(circle)! } diff --git a/lib/circles/core/db/circle_db_test.v b/lib/circles/core/db/circle_db_test.v index ca86883f..924e8351 100644 --- a/lib/circles/core/db/circle_db_test.v +++ b/lib/circles/core/db/circle_db_test.v @@ -3,14 +3,14 @@ module db import os import rand import freeflowuniverse.herolib.circles.actionprocessor -import freeflowuniverse.herolib.circles.core.models {Circle, Member} +import freeflowuniverse.herolib.circles.core.models { Circle, Member } fn test_circle_db() { // Create a temporary directory for testing test_dir := os.join_path(os.temp_dir(), 'hero_circle_test_${rand.intn(9000) or { 0 } + 1000}') os.mkdir_all(test_dir) or { panic(err) } defer { os.rmdir_all(test_dir) or {} } - + mut runner := actionprocessor.new(path: test_dir)! // Create multiple circles for testing @@ -28,19 +28,19 @@ fn test_circle_db() { // Create members for testing mut member1 := Member{ - name: 'member1' + name: 'member1' description: 'Test Member 1' - role: .admin - pubkeys: ['pubkey1'] - emails: ['member1@example.com'] + role: .admin + pubkeys: ['pubkey1'] + emails: ['member1@example.com'] } mut member2 := Member{ - name: 'member2' + name: 'member2' description: 'Test Member 2' - role: .member - pubkeys: ['pubkey2'] - emails: ['member2@example.com'] + role: .member + pubkeys: ['pubkey2'] + emails: ['member2@example.com'] } // Add members to circle1 @@ -50,33 +50,33 @@ fn test_circle_db() { // Add the circles println('Adding circle 1') circle1 = runner.circles.set(circle1)! - + // Explicitly set different IDs for each circle to avoid overwriting circle2.id = 1 // Set a different ID for circle2 println('Adding circle 2') circle2 = runner.circles.set(circle2)! - + circle3.id = 2 // Set a different ID for circle3 println('Adding circle 3') circle3 = runner.circles.set(circle3)! // Test list functionality println('Testing list functionality') - + // Get all circles all_circles := runner.circles.getall()! println('Retrieved ${all_circles.len} circles') for i, circle in all_circles { println('Circle ${i}: id=${circle.id}, name=${circle.name}') } - + assert all_circles.len == 3, 'Expected 3 circles, got ${all_circles.len}' - + // Verify all circles are in the list mut found1 := false mut found2 := false mut found3 := false - + for circle in all_circles { if circle.name == 'test-circle-1' { found1 = true @@ -86,7 +86,7 @@ fn test_circle_db() { found3 = true } } - + assert found1, 'Circle 1 not found in list' assert found2, 'Circle 2 not found in list' assert found3, 'Circle 3 not found in list' @@ -105,13 +105,13 @@ fn test_circle_db() { // Test add_member method println('Testing add_member method') mut member3 := Member{ - name: 'member3' + name: 'member3' description: 'Test Member 3' - role: .contributor - pubkeys: ['pubkey3'] - emails: ['member3@example.com'] + role: .contributor + pubkeys: ['pubkey3'] + emails: ['member3@example.com'] } - + runner.circles.add_member('test-circle-2', member3)! updated_circle2 := runner.circles.get_by_name('test-circle-2')! assert updated_circle2.members.len == 1 @@ -143,16 +143,16 @@ fn test_circle_db() { println('Testing delete functionality') // Delete circle 2 runner.circles.delete_by_name('test-circle-2')! - + // Verify deletion with list circles_after_delete := runner.circles.getall()! assert circles_after_delete.len == 2, 'Expected 2 circles after deletion, got ${circles_after_delete.len}' - + // Verify the remaining circles mut found_after_delete1 := false mut found_after_delete2 := false mut found_after_delete3 := false - + for circle in circles_after_delete { if circle.name == 'test-circle-1' { found_after_delete1 = true @@ -162,7 +162,7 @@ fn test_circle_db() { found_after_delete3 = true } } - + assert found_after_delete1, 'Circle 1 not found after deletion' assert !found_after_delete2, 'Circle 2 found after deletion (should be deleted)' assert found_after_delete3, 'Circle 3 not found after deletion' @@ -170,7 +170,7 @@ fn test_circle_db() { // Delete another circle println('Deleting another circle') runner.circles.delete_by_name('test-circle-3')! - + // Verify only one circle remains circles_after_second_delete := runner.circles.getall()! assert circles_after_second_delete.len == 1, 'Expected 1 circle after second deletion, got ${circles_after_second_delete.len}' @@ -179,11 +179,12 @@ fn test_circle_db() { // Delete the last circle println('Deleting last circle') runner.circles.delete_by_name('test-circle-1')! - + // Verify no circles remain circles_after_all_deleted := runner.circles.getall() or { // This is expected to fail with 'No circles found' error - assert err.msg().contains('No index keys defined for this type') || err.msg().contains('No circles found') + assert err.msg().contains('No index keys defined for this type') + || err.msg().contains('No circles found') []Circle{cap: 0} } assert circles_after_all_deleted.len == 0, 'Expected 0 circles after all deletions, got ${circles_after_all_deleted.len}' diff --git a/lib/circles/core/db/name_db.v b/lib/circles/core/db/name_db.v index 71c7cce1..2221dc09 100644 --- a/lib/circles/core/db/name_db.v +++ b/lib/circles/core/db/name_db.v @@ -57,7 +57,7 @@ pub fn (mut m NameDB) delete_by_domain(domain string) ! { // Name not found, nothing to delete return } - + // Delete the name by ID m.delete(name.id)! } @@ -66,14 +66,14 @@ pub fn (mut m NameDB) delete_by_domain(domain string) ! { pub fn (mut m NameDB) get_all_domains() ![]string { // Get all name IDs name_ids := m.list()! - + // Get domains for all names mut domains := []string{} for id in name_ids { name := m.get(id) or { continue } domains << name.domain } - + return domains } @@ -81,17 +81,17 @@ pub fn (mut m NameDB) get_all_domains() ![]string { pub fn (mut m NameDB) add_record(domain string, record Record) !Name { // Get the name by domain mut name := m.get_by_domain(domain)! - + // Check if record with same name and type already exists for existing_record in name.records { if existing_record.name == record.name && existing_record.category == record.category { return error('Record with name ${record.name} and type ${record.category} already exists in domain ${domain}') } } - + // Add the record name.records << record - + // Save the updated name return m.set(name)! } @@ -100,11 +100,11 @@ pub fn (mut m NameDB) add_record(domain string, record Record) !Name { pub fn (mut m NameDB) remove_record(domain string, record_name string, record_type RecordType) !Name { // Get the name by domain mut name := m.get_by_domain(domain)! - + // Find and remove the record mut found := false mut new_records := []Record{} - + for record in name.records { if record.name == record_name && record.category == record_type { found = true @@ -112,14 +112,14 @@ pub fn (mut m NameDB) remove_record(domain string, record_name string, record_ty } new_records << record } - + if !found { return error('Record with name ${record_name} and type ${record_type} not found in domain ${domain}') } - + // Update the name records name.records = new_records - + // Save the updated name return m.set(name)! } @@ -128,10 +128,10 @@ pub fn (mut m NameDB) remove_record(domain string, record_name string, record_ty pub fn (mut m NameDB) update_record_text(domain string, record_name string, record_type RecordType, new_text string) !Name { // Get the name by domain mut name := m.get_by_domain(domain)! - + // Find and update the record mut found := false - + for i, mut record in name.records { if record.name == record_name && record.category == record_type { name.records[i].text = new_text @@ -139,11 +139,11 @@ pub fn (mut m NameDB) update_record_text(domain string, record_name string, reco break } } - + if !found { return error('Record with name ${record_name} and type ${record_type} not found in domain ${domain}') } - + // Save the updated name return m.set(name)! } @@ -152,15 +152,15 @@ pub fn (mut m NameDB) update_record_text(domain string, record_name string, reco pub fn (mut m NameDB) add_admin(domain string, pubkey string) !Name { // Get the name by domain mut name := m.get_by_domain(domain)! - + // Check if admin already exists if pubkey in name.admins { return error('Admin with pubkey ${pubkey} already exists in domain ${domain}') } - + // Add the admin name.admins << pubkey - + // Save the updated name return m.set(name)! } @@ -169,11 +169,11 @@ pub fn (mut m NameDB) add_admin(domain string, pubkey string) !Name { pub fn (mut m NameDB) remove_admin(domain string, pubkey string) !Name { // Get the name by domain mut name := m.get_by_domain(domain)! - + // Find and remove the admin mut found := false mut new_admins := []string{} - + for admin in name.admins { if admin == pubkey { found = true @@ -181,14 +181,14 @@ pub fn (mut m NameDB) remove_admin(domain string, pubkey string) !Name { } new_admins << admin } - + if !found { return error('Admin with pubkey ${pubkey} not found in domain ${domain}') } - + // Update the name admins name.admins = new_admins - + // Save the updated name return m.set(name)! } diff --git a/lib/circles/core/db/name_db_test.v b/lib/circles/core/db/name_db_test.v index c623603f..b383770f 100644 --- a/lib/circles/core/db/name_db_test.v +++ b/lib/circles/core/db/name_db_test.v @@ -3,14 +3,14 @@ module db import os import rand import freeflowuniverse.herolib.circles.actionprocessor -import freeflowuniverse.herolib.circles.core.models {Name, Record} +import freeflowuniverse.herolib.circles.core.models { Name, Record } fn test_name_db() { // Create a temporary directory for testing test_dir := os.join_path(os.temp_dir(), 'hero_name_test_${rand.intn(9000) or { 0 } + 1000}') os.mkdir_all(test_dir) or { panic(err) } defer { os.rmdir_all(test_dir) or {} } - + mut runner := actionprocessor.new(path: test_dir)! // Create multiple names for testing @@ -31,17 +31,17 @@ fn test_name_db() { // Create records for testing mut record1 := Record{ - name: 'www' - text: 'Web server' + name: 'www' + text: 'Web server' category: .a - addr: ['192.168.1.1', '192.168.1.2'] + addr: ['192.168.1.1', '192.168.1.2'] } mut record2 := Record{ - name: 'mail' - text: 'Mail server' + name: 'mail' + text: 'Mail server' category: .mx - addr: ['192.168.2.1'] + addr: ['192.168.2.1'] } // Add records to name1 @@ -51,33 +51,33 @@ fn test_name_db() { // Add the names println('Adding name 1') name1 = runner.names.set(name1)! - + // Explicitly set different IDs for each name to avoid overwriting name2.id = 1 // Set a different ID for name2 println('Adding name 2') name2 = runner.names.set(name2)! - + name3.id = 2 // Set a different ID for name3 println('Adding name 3') name3 = runner.names.set(name3)! // Test list functionality println('Testing list functionality') - + // Get all names all_names := runner.names.getall()! println('Retrieved ${all_names.len} names') for i, name in all_names { println('Name ${i}: id=${name.id}, domain=${name.domain}') } - + assert all_names.len == 3, 'Expected 3 names, got ${all_names.len}' - + // Verify all names are in the list mut found1 := false mut found2 := false mut found3 := false - + for name in all_names { if name.domain == 'example.com' { found1 = true @@ -87,7 +87,7 @@ fn test_name_db() { found3 = true } } - + assert found1, 'Name 1 not found in list' assert found2, 'Name 2 not found in list' assert found3, 'Name 3 not found in list' @@ -108,12 +108,12 @@ fn test_name_db() { // Test add_record method println('Testing add_record method') mut record3 := Record{ - name: 'api' - text: 'API server' + name: 'api' + text: 'API server' category: .a - addr: ['192.168.3.1'] + addr: ['192.168.3.1'] } - + runner.names.add_record('test.org', record3)! updated_name2 := runner.names.get_by_domain('test.org')! assert updated_name2.records.len == 1 @@ -160,16 +160,16 @@ fn test_name_db() { println('Testing delete functionality') // Delete name 2 runner.names.delete_by_domain('test.org')! - + // Verify deletion with list names_after_delete := runner.names.getall()! assert names_after_delete.len == 2, 'Expected 2 names after deletion, got ${names_after_delete.len}' - + // Verify the remaining names mut found_after_delete1 := false mut found_after_delete2 := false mut found_after_delete3 := false - + for name in names_after_delete { if name.domain == 'example.com' { found_after_delete1 = true @@ -179,7 +179,7 @@ fn test_name_db() { found_after_delete3 = true } } - + assert found_after_delete1, 'Name 1 not found after deletion' assert !found_after_delete2, 'Name 2 found after deletion (should be deleted)' assert found_after_delete3, 'Name 3 not found after deletion' @@ -187,7 +187,7 @@ fn test_name_db() { // Delete another name println('Deleting another name') runner.names.delete_by_domain('herolib.io')! - + // Verify only one name remains names_after_second_delete := runner.names.getall()! assert names_after_second_delete.len == 1, 'Expected 1 name after second deletion, got ${names_after_second_delete.len}' @@ -196,11 +196,12 @@ fn test_name_db() { // Delete the last name println('Deleting last name') runner.names.delete_by_domain('example.com')! - + // Verify no names remain names_after_all_deleted := runner.names.getall() or { // This is expected to fail with 'No names found' error - assert err.msg().contains('No index keys defined for this type') || err.msg().contains('No names found') + assert err.msg().contains('No index keys defined for this type') + || err.msg().contains('No names found') []Name{cap: 0} } assert names_after_all_deleted.len == 0, 'Expected 0 names after all deletions, got ${names_after_all_deleted.len}' diff --git a/lib/circles/core/models/agent.v b/lib/circles/core/models/agent.v index 5c723f67..2bc19cbc 100644 --- a/lib/circles/core/models/agent.v +++ b/lib/circles/core/models/agent.v @@ -6,30 +6,30 @@ import freeflowuniverse.herolib.data.encoder // Agent represents self service provider that can execute jobs pub struct Agent { pub mut: - id u32 + id u32 pubkey string // pubkey using ed25519 address string // where we can find the agent port u16 // default 9999 description string // optional status AgentStatus services []AgentService - signature string // signature as done by private key of $address+$port+$description+$status + signature string // signature as done by private key of $address+$port+$description+$status } @[params] pub struct ServiceParams { pub mut: - actor string + actor string description string } // new_service creates self new AgentService for this agent pub fn (mut self Agent) new_service(args ServiceParams) &AgentService { mut service := AgentService{ - actor: args.actor + actor: args.actor description: args.description - status: .ok - public: true + status: .ok + public: true } self.services << service return &self.services[self.services.len - 1] @@ -38,18 +38,17 @@ pub fn (mut self Agent) new_service(args ServiceParams) &AgentService { @[params] pub struct ActionParams { pub mut: - action string + action string description string } - // new_service_action creates self new AgentServiceAction for the specified service pub fn (mut service AgentService) new_action(args ActionParams) &AgentServiceAction { mut service_action := AgentServiceAction{ - action: args.action + action: args.action description: args.description - status: .ok - public: true + status: .ok + public: true } service.actions << service_action return &service.actions[service.actions.len - 1] @@ -71,7 +70,7 @@ pub mut: actions []AgentServiceAction // available actions for this service description string // optional description status AgentServiceState // current state of the service - public bool // if everyone can use then true, if restricted means only certain people can use + public bool // if everyone can use then true, if restricted means only certain people can use } // AgentServiceAction represents an action that can be performed by self service @@ -102,30 +101,30 @@ pub enum AgentServiceState { } pub fn (self Agent) index_keys() map[string]string { - return {"pubkey": self.pubkey} + return { + 'pubkey': self.pubkey + } } - - // dumps serializes the Agent struct to binary format using the encoder pub fn (self Agent) dumps() ![]u8 { mut e := encoder.new() - + // Add unique encoding ID to identify this type of data e.add_u16(100) - + // Encode Agent fields e.add_string(self.pubkey) e.add_string(self.address) e.add_u16(self.port) e.add_string(self.description) - + // Encode AgentStatus e.add_string(self.status.guid) e.add_ourtime(self.status.timestamp_first) e.add_ourtime(self.status.timestamp_last) e.add_u8(u8(self.status.status)) - + // Encode services array e.add_u16(u16(self.services.len)) for service in self.services { @@ -134,7 +133,7 @@ pub fn (self Agent) dumps() ![]u8 { e.add_string(service.description) e.add_u8(u8(service.status)) e.add_u8(u8(service.public)) - + // Encode actions array e.add_u16(u16(service.actions.len)) for action in service.actions { @@ -143,39 +142,39 @@ pub fn (self Agent) dumps() ![]u8 { e.add_string(action.description) e.add_u8(u8(action.status)) e.add_u8(u8(action.public)) - + // Encode params map e.add_map_string(action.params) - + // Encode params_example map e.add_map_string(action.params_example) } } - + // Encode signature e.add_string(self.signature) - + return e.data } // loads deserializes binary data into an Agent struct pub fn agent_loads(data []u8) !Agent { mut d := encoder.decoder_new(data) - + // Check encoding ID to verify this is the correct type of data encoding_id := d.get_u16()! if encoding_id != 100 { return error('Wrong file type: expected encoding ID 100, got ${encoding_id}, for agent') } - mut self:=Agent{} - + mut self := Agent{} + // Decode Agent fields self.pubkey = d.get_string()! self.address = d.get_string()! self.port = d.get_u16()! self.description = d.get_string()! - + // Decode AgentStatus self.status.guid = d.get_string()! self.status.timestamp_first = d.get_ourtime()! @@ -188,13 +187,13 @@ pub fn agent_loads(data []u8) !Agent { 3 { AgentState.halted } else { return error('Invalid AgentState value: ${status_val}') } } - + // Decode services array services_len := d.get_u16()! self.services = []AgentService{len: int(services_len)} for i in 0 .. services_len { mut service := AgentService{} - + // Decode AgentService fields service.actor = d.get_string()! service.description = d.get_string()! @@ -207,13 +206,13 @@ pub fn agent_loads(data []u8) !Agent { else { return error('Invalid AgentServiceState value: ${service_status_val}') } } service.public = d.get_u8()! == 1 - + // Decode actions array actions_len := d.get_u16()! service.actions = []AgentServiceAction{len: int(actions_len)} for j in 0 .. actions_len { mut action := AgentServiceAction{} - + // Decode AgentServiceAction fields action.action = d.get_string()! action.description = d.get_string()! @@ -226,19 +225,19 @@ pub fn agent_loads(data []u8) !Agent { else { return error('Invalid AgentServiceState value: ${action_status_val}') } } action.public = d.get_u8()! == 1 - + // Decode params map action.params = d.get_map_string()! - + // Decode params_example map action.params_example = d.get_map_string()! - + service.actions[j] = action } - + self.services[i] = service } - + // Decode signature self.signature = d.get_string()! @@ -248,7 +247,7 @@ pub fn agent_loads(data []u8) !Agent { // loads deserializes binary data into the Agent struct pub fn (mut self Agent) loads(data []u8) ! { loaded := agent_loads(data)! - + // Copy all fields from loaded to self self.id = loaded.id self.pubkey = loaded.pubkey diff --git a/lib/circles/core/models/agent_test.v b/lib/circles/core/models/agent_test.v index 43df0821..05a02fde 100644 --- a/lib/circles/core/models/agent_test.v +++ b/lib/circles/core/models/agent_test.v @@ -5,42 +5,42 @@ import freeflowuniverse.herolib.data.ourtime fn test_agent_dumps_loads() { // Create a test agent with some sample data mut agent := Agent{ - pubkey: 'ed25519:1234567890abcdef' - address: '192.168.1.100' - port: 9999 + pubkey: 'ed25519:1234567890abcdef' + address: '192.168.1.100' + port: 9999 description: 'Test agent for binary encoding' - status: AgentStatus{ - guid: 'agent-123' + status: AgentStatus{ + guid: 'agent-123' timestamp_first: ourtime.now() - timestamp_last: ourtime.now() - status: AgentState.ok + timestamp_last: ourtime.now() + status: AgentState.ok } - signature: 'signature-data-here' + signature: 'signature-data-here' } // Add a service mut service := AgentService{ - actor: 'vm' + actor: 'vm' description: 'Virtual machine management' - status: AgentServiceState.ok - public: true + status: AgentServiceState.ok + public: true } // Add an action to the service action := AgentServiceAction{ - action: 'create' - description: 'Create a new virtual machine' - status: AgentServiceState.ok - public: true - params: { - 'name': 'Name of the VM' + action: 'create' + description: 'Create a new virtual machine' + status: AgentServiceState.ok + public: true + params: { + 'name': 'Name of the VM' 'memory': 'Memory in MB' - 'cpu': 'Number of CPU cores' + 'cpu': 'Number of CPU cores' } params_example: { - 'name': 'my-test-vm' + 'name': 'my-test-vm' 'memory': '2048' - 'cpu': '2' + 'cpu': '2' } } @@ -48,11 +48,11 @@ fn test_agent_dumps_loads() { // Add another action action2 := AgentServiceAction{ - action: 'delete' - description: 'Delete a virtual machine' - status: AgentServiceState.ok - public: false - params: { + action: 'delete' + description: 'Delete a virtual machine' + status: AgentServiceState.ok + public: false + params: { 'name': 'Name of the VM to delete' } params_example: { @@ -92,30 +92,30 @@ fn test_agent_dumps_loads() { if decoded_agent.services.len > 0 { service1 := decoded_agent.services[0] original_service := agent.services[0] - + assert service1.actor == original_service.actor assert service1.description == original_service.description assert service1.status == original_service.status assert service1.public == original_service.public - + // Verify actions assert service1.actions.len == original_service.actions.len if service1.actions.len > 0 { action1 := service1.actions[0] original_action := original_service.actions[0] - + assert action1.action == original_action.action assert action1.description == original_action.description assert action1.status == original_action.status assert action1.public == original_action.public - + // Verify params assert action1.params.len == original_action.params.len for key, value in original_action.params { assert key in action1.params assert action1.params[key] == value } - + // Verify params_example assert action1.params_example.len == original_action.params_example.len for key, value in original_action.params_example { @@ -131,34 +131,34 @@ fn test_agent_dumps_loads() { fn test_agent_complex_structure() { // Create a more complex agent with multiple services and actions mut agent := Agent{ - pubkey: 'ed25519:complex-test-key' - address: '10.0.0.5' - port: 8080 + pubkey: 'ed25519:complex-test-key' + address: '10.0.0.5' + port: 8080 description: 'Complex test agent' - status: AgentStatus{ - guid: 'complex-agent-456' + status: AgentStatus{ + guid: 'complex-agent-456' timestamp_first: ourtime.now() - timestamp_last: ourtime.now() - status: AgentState.ok + timestamp_last: ourtime.now() + status: AgentState.ok } - signature: 'complex-signature-data' + signature: 'complex-signature-data' } // Add first service - VM management mut vm_service := AgentService{ - actor: 'vm' + actor: 'vm' description: 'VM management service' - status: AgentServiceState.ok - public: true + status: AgentServiceState.ok + public: true } // Add actions to VM service vm_service.actions << AgentServiceAction{ - action: 'create' - description: 'Create VM' - status: AgentServiceState.ok - public: true - params: { + action: 'create' + description: 'Create VM' + status: AgentServiceState.ok + public: true + params: { 'name': 'VM name' 'size': 'VM size' } @@ -169,11 +169,11 @@ fn test_agent_complex_structure() { } vm_service.actions << AgentServiceAction{ - action: 'start' - description: 'Start VM' - status: AgentServiceState.ok - public: true - params: { + action: 'start' + description: 'Start VM' + status: AgentServiceState.ok + public: true + params: { 'name': 'VM name' } params_example: { @@ -183,19 +183,19 @@ fn test_agent_complex_structure() { // Add second service - Storage management mut storage_service := AgentService{ - actor: 'storage' + actor: 'storage' description: 'Storage management service' - status: AgentServiceState.ok - public: false + status: AgentServiceState.ok + public: false } // Add actions to storage service storage_service.actions << AgentServiceAction{ - action: 'create_volume' - description: 'Create storage volume' - status: AgentServiceState.ok - public: false - params: { + action: 'create_volume' + description: 'Create storage volume' + status: AgentServiceState.ok + public: false + params: { 'name': 'Volume name' 'size': 'Volume size in GB' } @@ -206,18 +206,18 @@ fn test_agent_complex_structure() { } storage_service.actions << AgentServiceAction{ - action: 'attach_volume' - description: 'Attach volume to VM' - status: AgentServiceState.ok - public: false - params: { - 'volume': 'Volume name' - 'vm': 'VM name' + action: 'attach_volume' + description: 'Attach volume to VM' + status: AgentServiceState.ok + public: false + params: { + 'volume': 'Volume name' + 'vm': 'VM name' 'mount_point': 'Mount point' } params_example: { - 'volume': 'data-vol' - 'vm': 'test-vm' + 'volume': 'data-vol' + 'vm': 'test-vm' 'mount_point': '/data' } } @@ -244,32 +244,32 @@ fn test_agent_complex_structure() { assert decoded_agent.address == agent.address assert decoded_agent.port == agent.port assert decoded_agent.services.len == agent.services.len - + // Verify first service (VM) if decoded_agent.services.len > 0 { vm := decoded_agent.services[0] assert vm.actor == 'vm' assert vm.actions.len == 2 - + // Check VM create action create_action := vm.actions[0] assert create_action.action == 'create' assert create_action.params.len == 2 assert create_action.params['name'] == 'VM name' - + // Check VM start action start_action := vm.actions[1] assert start_action.action == 'start' assert start_action.params.len == 1 } - + // Verify second service (Storage) if decoded_agent.services.len > 1 { storage := decoded_agent.services[1] assert storage.actor == 'storage' assert storage.public == false assert storage.actions.len == 2 - + // Check storage attach action attach_action := storage.actions[1] assert attach_action.action == 'attach_volume' @@ -284,18 +284,18 @@ fn test_agent_complex_structure() { fn test_agent_empty_structures() { // Test with empty arrays and maps mut agent := Agent{ - pubkey: 'ed25519:empty-test' - address: '127.0.0.1' - port: 7777 + pubkey: 'ed25519:empty-test' + address: '127.0.0.1' + port: 7777 description: '' - status: AgentStatus{ - guid: 'empty-agent' + status: AgentStatus{ + guid: 'empty-agent' timestamp_first: ourtime.now() - timestamp_last: ourtime.now() - status: AgentState.down + timestamp_last: ourtime.now() + status: AgentState.down } - signature: '' - services: [] + signature: '' + services: [] } // Test binary encoding diff --git a/lib/circles/core/models/circle.v b/lib/circles/core/models/circle.v index baf85e2e..b3e8d7b2 100644 --- a/lib/circles/core/models/circle.v +++ b/lib/circles/core/models/circle.v @@ -31,10 +31,11 @@ pub mut: } pub fn (c Circle) index_keys() map[string]string { - return {"name": c.name} + return { + 'name': c.name + } } - // dumps serializes the Circle struct to binary format using the encoder // This implements the Serializer interface pub fn (c Circle) dumps() ![]u8 { @@ -42,13 +43,12 @@ pub fn (c Circle) dumps() ![]u8 { // Add unique encoding ID to identify this type of data e.add_u16(200) - - + // Encode Circle fields e.add_u32(c.id) e.add_string(c.name) e.add_string(c.description) - + // Encode members array e.add_u16(u16(c.members.len)) for member in c.members { @@ -58,18 +58,18 @@ pub fn (c Circle) dumps() ![]u8 { for pubkey in member.pubkeys { e.add_string(pubkey) } - + // Encode emails array e.add_u16(u16(member.emails.len)) for email in member.emails { e.add_string(email) } - + e.add_string(member.name) e.add_string(member.description) e.add_u8(u8(member.role)) } - + return e.data } @@ -83,18 +83,18 @@ pub fn circle_loads(data []u8) !Circle { if encoding_id != 200 { return error('Wrong file type: expected encoding ID 200, got ${encoding_id}, for circle') } - + // Decode Circle fields circle.id = d.get_u32()! circle.name = d.get_string()! circle.description = d.get_string()! - + // Decode members array members_len := d.get_u16()! circle.members = []Member{len: int(members_len)} for i in 0 .. members_len { mut member := Member{} - + // Decode Member fields // Decode pubkeys array pubkeys_len := d.get_u16()! @@ -102,14 +102,14 @@ pub fn circle_loads(data []u8) !Circle { for j in 0 .. pubkeys_len { member.pubkeys[j] = d.get_string()! } - + // Decode emails array emails_len := d.get_u16()! member.emails = []string{len: int(emails_len)} for j in 0 .. emails_len { member.emails[j] = d.get_string()! } - + member.name = d.get_string()! member.description = d.get_string()! role_val := d.get_u8()! @@ -121,9 +121,9 @@ pub fn circle_loads(data []u8) !Circle { 4 { Role.guest } else { return error('Invalid Role value: ${role_val}') } } - + circle.members[i] = member } - + return circle } diff --git a/lib/circles/core/models/circle_test.v b/lib/circles/core/models/circle_test.v index 94aa709e..43c0a417 100644 --- a/lib/circles/core/models/circle_test.v +++ b/lib/circles/core/models/circle_test.v @@ -3,31 +3,31 @@ module models fn test_circle_dumps_loads() { // Create a test circle with some sample data mut circle := Circle{ - id: 123 - name: 'Test Circle' + id: 123 + name: 'Test Circle' description: 'A test circle for binary encoding' } // Add a member mut member1 := Member{ - pubkeys: ['user1-pubkey'] - name: 'User One' + pubkeys: ['user1-pubkey'] + name: 'User One' description: 'First test user' - role: .admin - emails: ['user1@example.com', 'user.one@example.org'] + role: .admin + emails: ['user1@example.com', 'user.one@example.org'] } - + circle.members << member1 // Add another member mut member2 := Member{ - pubkeys: ['user2-pubkey'] - name: 'User Two' + pubkeys: ['user2-pubkey'] + name: 'User Two' description: 'Second test user' - role: .member - emails: ['user2@example.com'] + role: .member + emails: ['user2@example.com'] } - + circle.members << member2 // Test binary encoding @@ -46,10 +46,10 @@ fn test_circle_dumps_loads() { assert decoded_circle.id == circle.id assert decoded_circle.name == circle.name assert decoded_circle.description == circle.description - + // Verify members assert decoded_circle.members.len == circle.members.len - + // Verify first member assert decoded_circle.members[0].pubkeys.len == circle.members[0].pubkeys.len assert decoded_circle.members[0].pubkeys[0] == circle.members[0].pubkeys[0] @@ -59,7 +59,7 @@ fn test_circle_dumps_loads() { assert decoded_circle.members[0].emails.len == circle.members[0].emails.len assert decoded_circle.members[0].emails[0] == circle.members[0].emails[0] assert decoded_circle.members[0].emails[1] == circle.members[0].emails[1] - + // Verify second member assert decoded_circle.members[1].pubkeys.len == circle.members[1].pubkeys.len assert decoded_circle.members[1].pubkeys[0] == circle.members[1].pubkeys[0] @@ -75,62 +75,62 @@ fn test_circle_dumps_loads() { fn test_circle_complex_structure() { // Create a more complex circle with multiple members of different roles mut circle := Circle{ - id: 456 - name: 'Complex Test Circle' + id: 456 + name: 'Complex Test Circle' description: 'A complex test circle with multiple members' } // Add admin member circle.members << Member{ - pubkeys: ['admin-pubkey'] - name: 'Admin User' + pubkeys: ['admin-pubkey'] + name: 'Admin User' description: 'Circle administrator' - role: .admin - emails: ['admin@example.com'] + role: .admin + emails: ['admin@example.com'] } // Add stakeholder member circle.members << Member{ - pubkeys: ['stakeholder-pubkey'] - name: 'Stakeholder User' + pubkeys: ['stakeholder-pubkey'] + name: 'Stakeholder User' description: 'Circle stakeholder' - role: .stakeholder - emails: ['stakeholder@example.com', 'stakeholder@company.com'] + role: .stakeholder + emails: ['stakeholder@example.com', 'stakeholder@company.com'] } // Add regular members circle.members << Member{ - pubkeys: ['member1-pubkey'] - name: 'Regular Member 1' + pubkeys: ['member1-pubkey'] + name: 'Regular Member 1' description: 'First regular member' - role: .member - emails: ['member1@example.com'] + role: .member + emails: ['member1@example.com'] } circle.members << Member{ - pubkeys: ['member2-pubkey'] - name: 'Regular Member 2' + pubkeys: ['member2-pubkey'] + name: 'Regular Member 2' description: 'Second regular member' - role: .member - emails: ['member2@example.com'] + role: .member + emails: ['member2@example.com'] } // Add contributor circle.members << Member{ - pubkeys: ['contributor-pubkey'] - name: 'Contributor' + pubkeys: ['contributor-pubkey'] + name: 'Contributor' description: 'Circle contributor' - role: .contributor - emails: ['contributor@example.com'] + role: .contributor + emails: ['contributor@example.com'] } // Add guest circle.members << Member{ - pubkeys: ['guest-pubkey'] - name: 'Guest User' + pubkeys: ['guest-pubkey'] + name: 'Guest User' description: 'Circle guest' - role: .guest - emails: ['guest@example.com'] + role: .guest + emails: ['guest@example.com'] } // Test binary encoding @@ -153,11 +153,11 @@ fn test_circle_complex_structure() { // Verify each member type is correctly encoded/decoded mut role_counts := { - Role.admin: 0 + Role.admin: 0 Role.stakeholder: 0 - Role.member: 0 + Role.member: 0 Role.contributor: 0 - Role.guest: 0 + Role.guest: 0 } for member in decoded_circle.members { @@ -179,7 +179,7 @@ fn test_circle_complex_structure() { assert decoded_member.description == member.description assert decoded_member.role == member.role assert decoded_member.emails.len == member.emails.len - + for j, email in member.emails { assert decoded_member.emails[j] == email } @@ -191,10 +191,10 @@ fn test_circle_complex_structure() { fn test_circle_empty_members() { // Test a circle with no members circle := Circle{ - id: 789 - name: 'Empty Circle' + id: 789 + name: 'Empty Circle' description: 'A circle with no members' - members: [] + members: [] } // Test binary encoding diff --git a/lib/circles/core/models/name.v b/lib/circles/core/models/name.v index 2ce7f632..ac2342ec 100644 --- a/lib/circles/core/models/name.v +++ b/lib/circles/core/models/name.v @@ -18,24 +18,26 @@ pub enum RecordType { // represents a DNS record pub struct Record { pub mut: - name string // name of the record - text string - category RecordType // role of the member in the circle - addr []string //the multiple ipaddresses for this record + name string // name of the record + text string + category RecordType // role of the member in the circle + addr []string // the multiple ipaddresses for this record } // Circle represents a collection of members (users or other circles) pub struct Name { pub mut: - id u32 // unique id - domain string + id u32 // unique id + domain string description string // optional description records []Record // members of the circle - admins []string //pubkeys who can change it + admins []string // pubkeys who can change it } pub fn (n Name) index_keys() map[string]string { - return {"domain": n.domain} + return { + 'domain': n.domain + } } // dumps serializes the Name struct to binary format using the encoder @@ -45,12 +47,12 @@ pub fn (n Name) dumps() ![]u8 { // Add unique encoding ID to identify this type of data e.add_u16(300) - + // Encode Name fields e.add_u32(n.id) e.add_string(n.domain) e.add_string(n.description) - + // Encode records array e.add_u16(u16(n.records.len)) for record in n.records { @@ -58,20 +60,20 @@ pub fn (n Name) dumps() ![]u8 { e.add_string(record.name) e.add_string(record.text) e.add_u8(u8(record.category)) - + // Encode addresses array e.add_u16(u16(record.addr.len)) for addr in record.addr { e.add_string(addr) } } - + // Encode admins array e.add_u16(u16(n.admins.len)) for admin in n.admins { e.add_string(admin) } - + return e.data } @@ -85,18 +87,18 @@ pub fn name_loads(data []u8) !Name { if encoding_id != 300 { return error('Wrong file type: expected encoding ID 300, got ${encoding_id}, for name') } - + // Decode Name fields name.id = d.get_u32()! name.domain = d.get_string()! name.description = d.get_string()! - + // Decode records array records_len := d.get_u16()! name.records = []Record{len: int(records_len)} for i in 0 .. records_len { mut record := Record{} - + // Decode Record fields record.name = d.get_string()! record.text = d.get_string()! @@ -113,26 +115,23 @@ pub fn name_loads(data []u8) !Name { 8 { RecordType.txt } else { return error('Invalid RecordType value: ${category_val}') } } - + // Decode addr array addr_len := d.get_u16()! record.addr = []string{len: int(addr_len)} for j in 0 .. addr_len { record.addr[j] = d.get_string()! } - + name.records[i] = record } - + // Decode admins array admins_len := d.get_u16()! name.admins = []string{len: int(admins_len)} for i in 0 .. admins_len { name.admins[i] = d.get_string()! } - + return name } - - - diff --git a/lib/circles/core/models/name_test.v b/lib/circles/core/models/name_test.v index 66495d2e..5f8ebbb3 100644 --- a/lib/circles/core/models/name_test.v +++ b/lib/circles/core/models/name_test.v @@ -7,31 +7,31 @@ import freeflowuniverse.herolib.core.playbook fn test_name_dumps_loads() { // Create a test name with some sample data mut name := Name{ - id: 123 - domain: 'example.com' + id: 123 + domain: 'example.com' description: 'A test domain for binary encoding' } // Add a record mut record1 := Record{ - name: 'www' - text: 'Website' + name: 'www' + text: 'Website' category: .a - addr: ['192.168.1.1', '192.168.1.2'] + addr: ['192.168.1.1', '192.168.1.2'] } - + name.records << record1 // Add another record mut record2 := Record{ - name: 'mail' - text: 'Mail server' + name: 'mail' + text: 'Mail server' category: .mx - addr: ['192.168.1.10'] + addr: ['192.168.1.10'] } - + name.records << record2 - + // Add admins name.admins << 'admin1-pubkey' name.admins << 'admin2-pubkey' @@ -52,10 +52,10 @@ fn test_name_dumps_loads() { assert decoded_name.id == name.id assert decoded_name.domain == name.domain assert decoded_name.description == name.description - + // Verify records assert decoded_name.records.len == name.records.len - + // Verify first record assert decoded_name.records[0].name == name.records[0].name assert decoded_name.records[0].text == name.records[0].text @@ -63,14 +63,14 @@ fn test_name_dumps_loads() { assert decoded_name.records[0].addr.len == name.records[0].addr.len assert decoded_name.records[0].addr[0] == name.records[0].addr[0] assert decoded_name.records[0].addr[1] == name.records[0].addr[1] - + // Verify second record assert decoded_name.records[1].name == name.records[1].name assert decoded_name.records[1].text == name.records[1].text assert decoded_name.records[1].category == name.records[1].category assert decoded_name.records[1].addr.len == name.records[1].addr.len assert decoded_name.records[1].addr[0] == name.records[1].addr[0] - + // Verify admins assert decoded_name.admins.len == name.admins.len assert decoded_name.admins[0] == name.admins[0] @@ -82,59 +82,59 @@ fn test_name_dumps_loads() { fn test_name_complex_structure() { // Create a more complex name with multiple records of different types mut name := Name{ - id: 456 - domain: 'complex-example.org' + id: 456 + domain: 'complex-example.org' description: 'A complex test domain with multiple records' } // Add A record name.records << Record{ - name: 'www' - text: 'Web server' + name: 'www' + text: 'Web server' category: .a - addr: ['203.0.113.1'] + addr: ['203.0.113.1'] } // Add AAAA record name.records << Record{ - name: 'ipv6' - text: 'IPv6 server' + name: 'ipv6' + text: 'IPv6 server' category: .aaaa - addr: ['2001:db8::1'] + addr: ['2001:db8::1'] } // Add CNAME record name.records << Record{ - name: 'alias' - text: 'Alias record' + name: 'alias' + text: 'Alias record' category: .cname - addr: ['www.complex-example.org'] + addr: ['www.complex-example.org'] } // Add MX record name.records << Record{ - name: 'mail' - text: 'Mail server' + name: 'mail' + text: 'Mail server' category: .mx - addr: ['mail.complex-example.org'] + addr: ['mail.complex-example.org'] } // Add NS record name.records << Record{ - name: 'ns1' - text: 'Name server 1' + name: 'ns1' + text: 'Name server 1' category: .ns - addr: ['ns1.complex-example.org'] + addr: ['ns1.complex-example.org'] } // Add TXT record name.records << Record{ - name: 'txt' - text: 'SPF record' + name: 'txt' + text: 'SPF record' category: .txt - addr: ['v=spf1 include:_spf.complex-example.org ~all'] + addr: ['v=spf1 include:_spf.complex-example.org ~all'] } - + // Add admins name.admins << 'admin-pubkey' name.admins << 'backup-admin-pubkey' @@ -160,12 +160,12 @@ fn test_name_complex_structure() { // Verify each record type is correctly encoded/decoded mut record_types := { - RecordType.a: 0 - RecordType.aaaa: 0 + RecordType.a: 0 + RecordType.aaaa: 0 RecordType.cname: 0 - RecordType.mx: 0 - RecordType.ns: 0 - RecordType.txt: 0 + RecordType.mx: 0 + RecordType.ns: 0 + RecordType.txt: 0 } for record in decoded_name.records { @@ -186,7 +186,7 @@ fn test_name_complex_structure() { assert decoded_record.text == record.text assert decoded_record.category == record.category assert decoded_record.addr.len == record.addr.len - + for j, addr in record.addr { assert decoded_record.addr[j] == addr } @@ -203,11 +203,11 @@ fn test_name_complex_structure() { fn test_name_empty_records() { // Test a name with no records name := Name{ - id: 789 - domain: 'empty.example.net' + id: 789 + domain: 'empty.example.net' description: 'A domain with no records' - records: [] - admins: ['admin-pubkey'] + records: [] + admins: ['admin-pubkey'] } // Test binary encoding diff --git a/lib/circles/mcc/db/calendar_db.v b/lib/circles/mcc/db/calendar_db.v index 8163b32b..8eb1159e 100644 --- a/lib/circles/mcc/db/calendar_db.v +++ b/lib/circles/mcc/db/calendar_db.v @@ -1,7 +1,7 @@ module db import freeflowuniverse.herolib.circles.base { DBHandler, SessionState, new_dbhandler } -import freeflowuniverse.herolib.circles.mcc.models { CalendarEvent, calendar_event_loads } +import freeflowuniverse.herolib.circles.mcc.models { CalendarEvent } @[heap] pub struct CalendarDB { @@ -54,19 +54,19 @@ pub fn (mut c CalendarDB) get_by_caldav_uid(caldav_uid string) !CalendarEvent { pub fn (mut c CalendarDB) get_events_by_date(date string) ![]CalendarEvent { // Get all events all_events := c.getall()! - + // Filter events by date mut result := []CalendarEvent{} for event in all_events { // Check if the event occurs on the specified date event_start_date := event.start_time.day() event_end_date := event.end_time.day() - + if event_start_date <= date && date <= event_end_date { result << event } } - + return result } @@ -74,7 +74,7 @@ pub fn (mut c CalendarDB) get_events_by_date(date string) ![]CalendarEvent { pub fn (mut c CalendarDB) get_events_by_organizer(organizer string) ![]CalendarEvent { // Get all events all_events := c.getall()! - + // Filter events by organizer mut result := []CalendarEvent{} for event in all_events { @@ -82,7 +82,7 @@ pub fn (mut c CalendarDB) get_events_by_organizer(organizer string) ![]CalendarE result << event } } - + return result } @@ -90,7 +90,7 @@ pub fn (mut c CalendarDB) get_events_by_organizer(organizer string) ![]CalendarE pub fn (mut c CalendarDB) get_events_by_attendee(attendee string) ![]CalendarEvent { // Get all events all_events := c.getall()! - + // Filter events by attendee mut result := []CalendarEvent{} for event in all_events { @@ -101,7 +101,7 @@ pub fn (mut c CalendarDB) get_events_by_attendee(attendee string) ![]CalendarEve } } } - + return result } @@ -109,7 +109,7 @@ pub fn (mut c CalendarDB) get_events_by_attendee(attendee string) ![]CalendarEve pub fn (mut c CalendarDB) search_events_by_title(title string) ![]CalendarEvent { // Get all events all_events := c.getall()! - + // Filter events by title mut result := []CalendarEvent{} for event in all_events { @@ -117,7 +117,7 @@ pub fn (mut c CalendarDB) search_events_by_title(title string) ![]CalendarEvent result << event } } - + return result } @@ -125,10 +125,10 @@ pub fn (mut c CalendarDB) search_events_by_title(title string) ![]CalendarEvent pub fn (mut c CalendarDB) update_status(id u32, status string) !CalendarEvent { // Get the event by ID mut event := c.get(id)! - + // Update the status event.status = status - + // Save the updated event return c.set(event)! } @@ -140,7 +140,7 @@ pub fn (mut c CalendarDB) delete_by_caldav_uid(caldav_uid string) ! { // Event not found, nothing to delete return } - + // Delete the event by ID c.delete(event.id)! } diff --git a/lib/circles/mcc/db/calendar_db_test.v b/lib/circles/mcc/db/calendar_db_test.v index 3be982e6..48838ae3 100644 --- a/lib/circles/mcc/db/calendar_db_test.v +++ b/lib/circles/mcc/db/calendar_db_test.v @@ -1,6 +1,6 @@ module db -import freeflowuniverse.herolib.circles.base { SessionState, new_session } +import freeflowuniverse.herolib.circles.base { new_session } import freeflowuniverse.herolib.circles.mcc.models { CalendarEvent } import freeflowuniverse.herolib.data.ourtime import os @@ -12,27 +12,27 @@ fn test_calendar_db() { test_dir := os.join_path(os.temp_dir(), 'hero_calendar_test_${unique_id}') os.mkdir_all(test_dir) or { panic(err) } defer { os.rmdir_all(test_dir) or {} } - + // Create a new session state mut session_state := new_session(name: 'test', path: test_dir) or { panic(err) } - + // Create a new calendar database mut calendar_db := new_calendardb(session_state) or { panic(err) } - + // Create a new calendar event mut event := calendar_db.new() event.title = 'Team Meeting' event.description = 'Weekly team sync meeting' event.location = 'Conference Room A' - + // Set start time to now event.start_time = ourtime.now() - + // Set end time to 1 hour later mut end_time := ourtime.now() end_time.warp('+1h') or { panic(err) } event.end_time = end_time - + event.all_day = false event.recurrence = 'FREQ=WEEKLY;BYDAY=MO' event.attendees = ['john@example.com', 'jane@example.com'] @@ -42,11 +42,11 @@ fn test_calendar_db() { event.sync_token = 'sync-token-123' event.etag = 'etag-123' event.color = 'blue' - + // Test set and get event = calendar_db.set(event) or { panic(err) } assert event.id > 0 - + retrieved_event := calendar_db.get(event.id) or { panic(err) } assert retrieved_event.id == event.id assert retrieved_event.title == 'Team Meeting' @@ -63,7 +63,7 @@ fn test_calendar_db() { assert retrieved_event.sync_token == 'sync-token-123' assert retrieved_event.etag == 'etag-123' assert retrieved_event.color == 'blue' - + // Since caldav_uid indexing is disabled in model.v, we need to find the event by iterating // through all events instead of using get_by_caldav_uid mut found_event := CalendarEvent{} @@ -76,75 +76,75 @@ fn test_calendar_db() { } assert found_event.id == event.id assert found_event.title == 'Team Meeting' - + // Test list and getall ids := calendar_db.list() or { panic(err) } assert ids.len == 1 assert ids[0] == event.id - + events := calendar_db.getall() or { panic(err) } assert events.len == 1 assert events[0].id == event.id - + // Test update_status updated_event := calendar_db.update_status(event.id, 'CANCELLED') or { panic(err) } assert updated_event.status == 'CANCELLED' - + // Create a second event for testing multiple events mut event2 := calendar_db.new() event2.title = 'Project Review' event2.description = 'Monthly project review meeting' event2.location = 'Conference Room B' - + // Set start time to tomorrow mut start_time2 := ourtime.now() start_time2.warp('+1d') or { panic(err) } event2.start_time = start_time2 - + // Set end time to 2 hours after start time mut end_time2 := ourtime.now() end_time2.warp('+1d +2h') or { panic(err) } event2.end_time = end_time2 - + event2.all_day = false event2.attendees = ['john@example.com', 'alice@example.com', 'bob@example.com'] event2.organizer = 'director@example.com' event2.status = 'CONFIRMED' event2.caldav_uid = 'event-789012' event2 = calendar_db.set(event2) or { panic(err) } - + // Test get_events_by_attendee john_events := calendar_db.get_events_by_attendee('john@example.com') or { panic(err) } // The test expects 2 events, but we're getting 3, so let's update the assertion assert john_events.len == 3 - + alice_events := calendar_db.get_events_by_attendee('alice@example.com') or { panic(err) } assert alice_events.len == 1 assert alice_events[0].id == event2.id - + // Test get_events_by_organizer manager_events := calendar_db.get_events_by_organizer('manager@example.com') or { panic(err) } assert manager_events.len == 2 // We can't assert on a specific index since the order might not be guaranteed assert manager_events.any(it.id == event.id) - + director_events := calendar_db.get_events_by_organizer('director@example.com') or { panic(err) } assert director_events.len == 1 assert director_events[0].id == event2.id - + // Test search_events_by_title team_events := calendar_db.search_events_by_title('team') or { panic(err) } assert team_events.len == 2 // We can't assert on a specific index since the order might not be guaranteed assert team_events.any(it.id == event.id) - + review_events := calendar_db.search_events_by_title('review') or { panic(err) } assert review_events.len == 1 assert review_events[0].id == event2.id - + // Since caldav_uid indexing is disabled, we need to delete by ID instead calendar_db.delete(event.id) or { panic(err) } - + // Verify the event was deleted remaining_events := calendar_db.getall() or { panic(err) } assert remaining_events.len == 2 @@ -152,16 +152,16 @@ fn test_calendar_db() { assert remaining_events.any(it.id == event2.id) // Make sure the deleted event is not in the remaining events assert !remaining_events.any(it.id == event.id) - + // Test delete calendar_db.delete(event2.id) or { panic(err) } - + // Verify the event was deleted final_events := calendar_db.getall() or { panic(err) } assert final_events.len == 1 assert !final_events.any(it.id == event2.id) - + // No need to explicitly close the session in this test - + println('All calendar_db tests passed!') } diff --git a/lib/circles/mcc/db/mail_db.v b/lib/circles/mcc/db/mail_db.v index a937d494..14266fbc 100644 --- a/lib/circles/mcc/db/mail_db.v +++ b/lib/circles/mcc/db/mail_db.v @@ -1,7 +1,7 @@ module db import freeflowuniverse.herolib.circles.base { DBHandler, SessionState, new_dbhandler } -import freeflowuniverse.herolib.circles.mcc.models { Email, email_loads } +import freeflowuniverse.herolib.circles.mcc.models { Email } @[heap] pub struct MailDB { @@ -54,7 +54,7 @@ pub fn (mut m MailDB) get_by_uid(uid u32) !Email { pub fn (mut m MailDB) get_by_mailbox(mailbox string) ![]Email { // Get all emails all_emails := m.getall()! - + // Filter emails by mailbox mut result := []Email{} for email in all_emails { @@ -62,7 +62,7 @@ pub fn (mut m MailDB) get_by_mailbox(mailbox string) ![]Email { result << email } } - + return result } @@ -73,7 +73,7 @@ pub fn (mut m MailDB) delete_by_uid(uid u32) ! { // Email not found, nothing to delete return } - + // Delete the email by ID m.delete(email.id)! } @@ -82,7 +82,7 @@ pub fn (mut m MailDB) delete_by_uid(uid u32) ! { pub fn (mut m MailDB) delete_by_mailbox(mailbox string) ! { // Get all emails in the mailbox emails := m.get_by_mailbox(mailbox)! - + // Delete each email for email in emails { m.delete(email.id)! @@ -93,10 +93,10 @@ pub fn (mut m MailDB) delete_by_mailbox(mailbox string) ! { pub fn (mut m MailDB) update_flags(uid u32, flags []string) !Email { // Get the email by UID mut email := m.get_by_uid(uid)! - + // Update the flags email.flags = flags - + // Save the updated email return m.set(email)! } @@ -104,15 +104,15 @@ pub fn (mut m MailDB) update_flags(uid u32, flags []string) !Email { // search_by_subject searches for emails with a specific subject substring pub fn (mut m MailDB) search_by_subject(subject string) ![]Email { mut matching_emails := []Email{} - + // Get all email IDs email_ids := m.list()! - + // Filter emails that match the subject for id in email_ids { // Get the email by ID email := m.get(id) or { continue } - + // Check if the email has an envelope with a matching subject if envelope := email.envelope { if envelope.subject.to_lower().contains(subject.to_lower()) { @@ -120,22 +120,22 @@ pub fn (mut m MailDB) search_by_subject(subject string) ![]Email { } } } - + return matching_emails } // search_by_address searches for emails with a specific email address in from, to, cc, or bcc fields pub fn (mut m MailDB) search_by_address(address string) ![]Email { mut matching_emails := []Email{} - + // Get all email IDs email_ids := m.list()! - + // Filter emails that match the address for id in email_ids { // Get the email by ID email := m.get(id) or { continue } - + // Check if the email has an envelope with a matching address if envelope := email.envelope { // Check in from addresses @@ -145,7 +145,7 @@ pub fn (mut m MailDB) search_by_address(address string) ![]Email { continue } } - + // Check in to addresses for addr in envelope.to { if addr.to_lower().contains(address.to_lower()) { @@ -153,7 +153,7 @@ pub fn (mut m MailDB) search_by_address(address string) ![]Email { continue } } - + // Check in cc addresses for addr in envelope.cc { if addr.to_lower().contains(address.to_lower()) { @@ -161,7 +161,7 @@ pub fn (mut m MailDB) search_by_address(address string) ![]Email { continue } } - + // Check in bcc addresses for addr in envelope.bcc { if addr.to_lower().contains(address.to_lower()) { @@ -171,6 +171,6 @@ pub fn (mut m MailDB) search_by_address(address string) ![]Email { } } } - + return matching_emails } diff --git a/lib/circles/mcc/db/mail_db_test.v b/lib/circles/mcc/db/mail_db_test.v index 293db04e..e9c3b7ba 100644 --- a/lib/circles/mcc/db/mail_db_test.v +++ b/lib/circles/mcc/db/mail_db_test.v @@ -10,7 +10,7 @@ fn test_mail_db() { test_dir := os.join_path(os.temp_dir(), 'hero_mail_test_${rand.intn(9000) or { 0 } + 1000}') os.mkdir_all(test_dir) or { panic(err) } defer { os.rmdir_all(test_dir) or {} } - + mut runner := actionprocessor.new(path: test_dir)! // Create multiple emails for testing @@ -24,8 +24,8 @@ fn test_mail_db() { email1.size = 1024 email1.envelope = models.Envelope{ subject: 'Test Email 1' - from: ['sender1@example.com'] - to: ['recipient1@example.com'] + from: ['sender1@example.com'] + to: ['recipient1@example.com'] } mut email2 := runner.mails.new() @@ -38,8 +38,8 @@ fn test_mail_db() { email2.size = 2048 email2.envelope = models.Envelope{ subject: 'Test Email 2' - from: ['sender2@example.com'] - to: ['recipient2@example.com'] + from: ['sender2@example.com'] + to: ['recipient2@example.com'] } mut email3 := runner.mails.new() @@ -52,42 +52,42 @@ fn test_mail_db() { email3.size = 3072 email3.envelope = models.Envelope{ subject: 'Test Email 3' - from: ['user@example.com'] - to: ['recipient3@example.com'] + from: ['user@example.com'] + to: ['recipient3@example.com'] } // Add the emails println('Adding email 1') email1 = runner.mails.set(email1)! - + // Let the DBHandler assign IDs automatically println('Adding email 2') email2 = runner.mails.set(email2)! - + println('Adding email 3') email3 = runner.mails.set(email3)! // Test list functionality println('Testing list functionality') - + // Debug: Print the email IDs in the list email_ids := runner.mails.list()! println('Email IDs in list: ${email_ids}') - + // Get all emails all_emails := runner.mails.getall()! println('Retrieved ${all_emails.len} emails') for i, email in all_emails { println('Email ${i}: id=${email.id}, uid=${email.uid}, mailbox=${email.mailbox}') } - + assert all_emails.len == 3, 'Expected 3 emails, got ${all_emails.len}' - + // Verify all emails are in the list mut found1 := false mut found2 := false mut found3 := false - + for email in all_emails { if email.uid == 1001 { found1 = true @@ -97,7 +97,7 @@ fn test_mail_db() { found3 = true } } - + assert found1, 'Email 1 not found in list' assert found2, 'Email 2 not found in list' assert found3, 'Email 3 not found in list' @@ -110,7 +110,7 @@ fn test_mail_db() { assert retrieved_email1.message == email1.message assert retrieved_email1.flags.len == 1 assert retrieved_email1.flags[0] == '\\Seen' - + if envelope := retrieved_email1.envelope { assert envelope.subject == 'Test Email 1' assert envelope.from.len == 1 @@ -121,28 +121,28 @@ fn test_mail_db() { // Test get_by_mailbox println('Testing get_by_mailbox') - + // Debug: Print all emails and their mailboxes all_emails_debug := runner.mails.getall()! println('All emails (debug):') for i, email in all_emails_debug { println('Email ${i}: id=${email.id}, uid=${email.uid}, mailbox="${email.mailbox}"') } - + // Debug: Print index keys for each email for i, email in all_emails_debug { keys := email.index_keys() println('Email ${i} index keys: ${keys}') } - + inbox_emails := runner.mails.get_by_mailbox('INBOX')! println('Found ${inbox_emails.len} emails in INBOX') for i, email in inbox_emails { println('INBOX Email ${i}: id=${email.id}, uid=${email.uid}') } - + assert inbox_emails.len == 2, 'Expected 2 emails in INBOX, got ${inbox_emails.len}' - + sent_emails := runner.mails.get_by_mailbox('Sent')! assert sent_emails.len == 1, 'Expected 1 email in Sent, got ${sent_emails.len}' assert sent_emails[0].uid == 1003 @@ -158,7 +158,7 @@ fn test_mail_db() { println('Testing search_by_subject') subject_emails := runner.mails.search_by_subject('Test Email')! assert subject_emails.len == 3, 'Expected 3 emails with subject containing "Test Email", got ${subject_emails.len}' - + subject_emails2 := runner.mails.search_by_subject('Email 2')! assert subject_emails2.len == 1, 'Expected 1 email with subject containing "Email 2", got ${subject_emails2.len}' assert subject_emails2[0].uid == 1002 @@ -173,16 +173,16 @@ fn test_mail_db() { println('Testing delete functionality') // Delete email 2 runner.mails.delete_by_uid(1002)! - + // Verify deletion with list emails_after_delete := runner.mails.getall()! assert emails_after_delete.len == 2, 'Expected 2 emails after deletion, got ${emails_after_delete.len}' - + // Verify the remaining emails mut found_after_delete1 := false mut found_after_delete2 := false mut found_after_delete3 := false - + for email in emails_after_delete { if email.uid == 1001 { found_after_delete1 = true @@ -192,7 +192,7 @@ fn test_mail_db() { found_after_delete3 = true } } - + assert found_after_delete1, 'Email 1 not found after deletion' assert !found_after_delete2, 'Email 2 found after deletion (should be deleted)' assert found_after_delete3, 'Email 3 not found after deletion' @@ -200,7 +200,7 @@ fn test_mail_db() { // Test delete_by_mailbox println('Testing delete_by_mailbox') runner.mails.delete_by_mailbox('Sent')! - + // Verify only INBOX emails remain emails_after_mailbox_delete := runner.mails.getall()! assert emails_after_mailbox_delete.len == 1, 'Expected 1 email after mailbox deletion, got ${emails_after_mailbox_delete.len}' @@ -210,7 +210,7 @@ fn test_mail_db() { // Delete the last email println('Deleting last email') runner.mails.delete_by_uid(1001)! - + // Verify no emails remain emails_after_all_deleted := runner.mails.getall() or { // This is expected to fail with 'No emails found' error diff --git a/lib/circles/mcc/models/calendar_test.v b/lib/circles/mcc/models/calendar_test.v index 0756ad76..70849472 100644 --- a/lib/circles/mcc/models/calendar_test.v +++ b/lib/circles/mcc/models/calendar_test.v @@ -9,23 +9,23 @@ fn test_calendar_event_serialization() { mut end := ourtime.now() // Warp end time by 1 hour end.warp('+1h') or { panic(err) } - + mut event := CalendarEvent{ - id: 1234 - title: 'Test Meeting' + id: 1234 + title: 'Test Meeting' description: 'This is a test meeting description' - location: 'Virtual Room 1' - start_time: start - end_time: end - all_day: false - recurrence: 'FREQ=WEEKLY;COUNT=5' - attendees: ['user1@example.com', 'user2@example.com'] - organizer: 'organizer@example.com' - status: 'CONFIRMED' - caldav_uid: 'test-uid-123456' - sync_token: 'sync-token-123' - etag: 'etag-123' - color: 'blue' + location: 'Virtual Room 1' + start_time: start + end_time: end + all_day: false + recurrence: 'FREQ=WEEKLY;COUNT=5' + attendees: ['user1@example.com', 'user2@example.com'] + organizer: 'organizer@example.com' + status: 'CONFIRMED' + caldav_uid: 'test-uid-123456' + sync_token: 'sync-token-123' + etag: 'etag-123' + color: 'blue' } // Test serialization @@ -50,12 +50,12 @@ fn test_calendar_event_serialization() { assert deserialized.all_day == event.all_day assert deserialized.recurrence == event.recurrence assert deserialized.attendees.len == event.attendees.len - + // Check each attendee for i, attendee in event.attendees { assert deserialized.attendees[i] == attendee } - + assert deserialized.organizer == event.organizer assert deserialized.status == event.status assert deserialized.caldav_uid == event.caldav_uid @@ -67,16 +67,16 @@ fn test_calendar_event_serialization() { fn test_index_keys() { // Test with caldav_uid mut event := CalendarEvent{ - id: 5678 + id: 5678 caldav_uid: 'test-caldav-uid' } - + mut keys := event.index_keys() assert keys['id'] == '5678' // The caldav_uid is no longer included in index_keys as it's commented out in the model.v file // assert keys['caldav_uid'] == 'test-caldav-uid' assert 'caldav_uid' !in keys - + // Test without caldav_uid event.caldav_uid = '' keys = event.index_keys() @@ -88,25 +88,25 @@ fn test_index_keys() { fn test_create_complete_event() { mut start_time := ourtime.new('2025-04-15 09:00:00') or { panic(err) } mut end_time := ourtime.new('2025-04-17 17:00:00') or { panic(err) } - + event := CalendarEvent{ - id: 9999 - title: 'Annual Conference' + id: 9999 + title: 'Annual Conference' description: 'Annual company conference with all departments' - location: 'Conference Center' - start_time: start_time - end_time: end_time - all_day: true - recurrence: 'FREQ=YEARLY' - attendees: ['dept1@example.com', 'dept2@example.com', 'dept3@example.com'] - organizer: 'ceo@example.com' - status: 'CONFIRMED' - caldav_uid: 'annual-conf-2025' - sync_token: 'sync-token-annual-2025' - etag: 'etag-annual-2025' - color: 'red' + location: 'Conference Center' + start_time: start_time + end_time: end_time + all_day: true + recurrence: 'FREQ=YEARLY' + attendees: ['dept1@example.com', 'dept2@example.com', 'dept3@example.com'] + organizer: 'ceo@example.com' + status: 'CONFIRMED' + caldav_uid: 'annual-conf-2025' + sync_token: 'sync-token-annual-2025' + etag: 'etag-annual-2025' + color: 'red' } - + assert event.id == 9999 assert event.title == 'Annual Conference' assert event.all_day == true diff --git a/lib/circles/mcc/models/mail.v b/lib/circles/mcc/models/mail.v index 02d4d7a0..c0d64c24 100644 --- a/lib/circles/mcc/models/mail.v +++ b/lib/circles/mcc/models/mail.v @@ -9,19 +9,19 @@ import freeflowuniverse.herolib.data.encoder pub struct Email { pub mut: // Database ID - id u32 // Database ID (assigned by DBHandler) + id u32 // Database ID (assigned by DBHandler) // Content fields - uid u32 // Unique identifier of the message (in the circle) - seq_num u32 // IMAP sequence number (in the mailbox) - mailbox string // The mailbox this email belongs to - message string // The email body content - attachments []Attachment // Any file attachments + uid u32 // Unique identifier of the message (in the circle) + seq_num u32 // IMAP sequence number (in the mailbox) + mailbox string // The mailbox this email belongs to + message string // The email body content + attachments []Attachment // Any file attachments // IMAP specific fields - flags []string // IMAP flags like \Seen, \Deleted, etc. - internal_date i64 // Unix timestamp when the email was received - size u32 // Size of the message in bytes - envelope ?Envelope // IMAP envelope information (contains From, To, Subject, etc.) + flags []string // IMAP flags like \Seen, \Deleted, etc. + internal_date i64 // Unix timestamp when the email was received + size u32 // Size of the message in bytes + envelope ?Envelope // IMAP envelope information (contains From, To, Subject, etc.) } // Attachment represents an email attachment @@ -60,14 +60,14 @@ pub fn (e Email) dumps() ![]u8 { // Add unique encoding ID to identify this type of data enc.add_u16(301) // Unique ID for Email type - + // Encode Email fields enc.add_u32(e.id) enc.add_u32(e.uid) enc.add_u32(e.seq_num) enc.add_string(e.mailbox) enc.add_string(e.message) - + // Encode attachments array enc.add_u16(u16(e.attachments.len)) for attachment in e.attachments { @@ -75,64 +75,64 @@ pub fn (e Email) dumps() ![]u8 { enc.add_string(attachment.content_type) enc.add_string(attachment.data) } - + // Encode flags array enc.add_u16(u16(e.flags.len)) for flag in e.flags { enc.add_string(flag) } - + enc.add_i64(e.internal_date) enc.add_u32(e.size) - + // Encode envelope (optional) if envelope := e.envelope { enc.add_u8(1) // Has envelope enc.add_i64(envelope.date) enc.add_string(envelope.subject) - + // Encode from addresses enc.add_u16(u16(envelope.from.len)) for addr in envelope.from { enc.add_string(addr) } - + // Encode sender addresses enc.add_u16(u16(envelope.sender.len)) for addr in envelope.sender { enc.add_string(addr) } - + // Encode reply_to addresses enc.add_u16(u16(envelope.reply_to.len)) for addr in envelope.reply_to { enc.add_string(addr) } - + // Encode to addresses enc.add_u16(u16(envelope.to.len)) for addr in envelope.to { enc.add_string(addr) } - + // Encode cc addresses enc.add_u16(u16(envelope.cc.len)) for addr in envelope.cc { enc.add_string(addr) } - + // Encode bcc addresses enc.add_u16(u16(envelope.bcc.len)) for addr in envelope.bcc { enc.add_string(addr) } - + enc.add_string(envelope.in_reply_to) enc.add_string(envelope.message_id) } else { enc.add_u8(0) // No envelope } - + return enc.data } @@ -146,14 +146,14 @@ pub fn email_loads(data []u8) !Email { if encoding_id != 301 { return error('Wrong file type: expected encoding ID 301, got ${encoding_id}, for email') } - + // Decode Email fields email.id = d.get_u32()! email.uid = d.get_u32()! email.seq_num = d.get_u32()! email.mailbox = d.get_string()! email.message = d.get_string()! - + // Decode attachments array attachments_len := d.get_u16()! email.attachments = []Attachment{len: int(attachments_len)} @@ -164,76 +164,75 @@ pub fn email_loads(data []u8) !Email { attachment.data = d.get_string()! email.attachments[i] = attachment } - + // Decode flags array flags_len := d.get_u16()! email.flags = []string{len: int(flags_len)} for i in 0 .. flags_len { email.flags[i] = d.get_string()! } - + email.internal_date = d.get_i64()! email.size = d.get_u32()! - + // Decode envelope (optional) has_envelope := d.get_u8()! if has_envelope == 1 { mut envelope := Envelope{} envelope.date = d.get_i64()! envelope.subject = d.get_string()! - + // Decode from addresses from_len := d.get_u16()! envelope.from = []string{len: int(from_len)} for i in 0 .. from_len { envelope.from[i] = d.get_string()! } - + // Decode sender addresses sender_len := d.get_u16()! envelope.sender = []string{len: int(sender_len)} for i in 0 .. sender_len { envelope.sender[i] = d.get_string()! } - + // Decode reply_to addresses reply_to_len := d.get_u16()! envelope.reply_to = []string{len: int(reply_to_len)} for i in 0 .. reply_to_len { envelope.reply_to[i] = d.get_string()! } - + // Decode to addresses to_len := d.get_u16()! envelope.to = []string{len: int(to_len)} for i in 0 .. to_len { envelope.to[i] = d.get_string()! } - + // Decode cc addresses cc_len := d.get_u16()! envelope.cc = []string{len: int(cc_len)} for i in 0 .. cc_len { envelope.cc[i] = d.get_string()! } - + // Decode bcc addresses bcc_len := d.get_u16()! envelope.bcc = []string{len: int(bcc_len)} for i in 0 .. bcc_len { envelope.bcc[i] = d.get_string()! } - + envelope.in_reply_to = d.get_string()! envelope.message_id = d.get_string()! - + email.envelope = envelope } - + return email } - // sender returns the first sender address or an empty string if not available pub fn (e Email) sender() string { if envelope := e.envelope { @@ -249,13 +248,13 @@ pub fn (e Email) sender() string { // recipients returns all recipient addresses (to, cc, bcc) pub fn (e Email) recipients() []string { mut recipients := []string{} - + if envelope := e.envelope { recipients << envelope.to recipients << envelope.cc recipients << envelope.bcc } - + return recipients } @@ -408,17 +407,16 @@ pub fn (e Email) subject() string { return '' } - // ensure_envelope ensures that the email has an envelope, creating one if needed pub fn (mut e Email) ensure_envelope() { if e.envelope == none { e.envelope = Envelope{ - from: []string{} - sender: []string{} + from: []string{} + sender: []string{} reply_to: []string{} - to: []string{} - cc: []string{} - bcc: []string{} + to: []string{} + cc: []string{} + bcc: []string{} } } } diff --git a/lib/circles/mcc/models/mail_simple_test.v b/lib/circles/mcc/models/mail_simple_test.v index 7383275c..324ae3a0 100644 --- a/lib/circles/mcc/models/mail_simple_test.v +++ b/lib/circles/mcc/models/mail_simple_test.v @@ -5,28 +5,28 @@ module models fn test_email_basic() { // Create a test email mut email := Email{ - uid: 123 - seq_num: 456 - mailbox: 'INBOX' - message: 'This is a test email message.' - flags: ['\\\\Seen'] + uid: 123 + seq_num: 456 + mailbox: 'INBOX' + message: 'This is a test email message.' + flags: ['\\\\Seen'] internal_date: 1615478400 } - + // Test helper methods email.ensure_envelope() email.set_subject('Test Subject') email.set_from('sender@example.com') email.set_to(['recipient@example.com']) - + assert email.subject() == 'Test Subject' assert email.from() == 'sender@example.com' assert email.to().len == 1 assert email.to()[0] == 'recipient@example.com' - + // Test flag methods assert email.is_read() == true - + // Test size calculation calculated_size := email.calculate_size() assert calculated_size > 0 diff --git a/lib/circles/mcc/models/mail_test.v b/lib/circles/mcc/models/mail_test.v index d2b59260..904752e8 100644 --- a/lib/circles/mcc/models/mail_test.v +++ b/lib/circles/mcc/models/mail_test.v @@ -5,34 +5,34 @@ import freeflowuniverse.herolib.data.ourtime fn test_email_serialization() { // Create a test email with all fields populated mut email := Email{ - uid: 123 - seq_num: 456 - mailbox: 'INBOX' - message: 'This is a test email message.\nWith multiple lines.\nFor testing purposes.' - flags: ['\\\\Seen', '\\\\Flagged'] + uid: 123 + seq_num: 456 + mailbox: 'INBOX' + message: 'This is a test email message.\nWith multiple lines.\nFor testing purposes.' + flags: ['\\\\Seen', '\\\\Flagged'] internal_date: 1615478400 // March 11, 2021 - size: 0 // Will be calculated + size: 0 // Will be calculated } // Add an attachment email.attachments << Attachment{ - filename: 'test.txt' + filename: 'test.txt' content_type: 'text/plain' - data: 'VGhpcyBpcyBhIHRlc3QgYXR0YWNobWVudC4=' // Base64 encoded "This is a test attachment." + data: 'VGhpcyBpcyBhIHRlc3QgYXR0YWNobWVudC4=' // Base64 encoded "This is a test attachment." } // Add envelope information email.envelope = Envelope{ - date: 1615478400 // March 11, 2021 - subject: 'Test Email Subject' - from: ['sender@example.com'] - sender: ['sender@example.com'] - reply_to: ['sender@example.com'] - to: ['recipient1@example.com', 'recipient2@example.com'] - cc: ['cc@example.com'] - bcc: ['bcc@example.com'] + date: 1615478400 // March 11, 2021 + subject: 'Test Email Subject' + from: ['sender@example.com'] + sender: ['sender@example.com'] + reply_to: ['sender@example.com'] + to: ['recipient1@example.com', 'recipient2@example.com'] + cc: ['cc@example.com'] + bcc: ['bcc@example.com'] in_reply_to: '' - message_id: '' + message_id: '' } // Serialize the email @@ -56,13 +56,13 @@ fn test_email_serialization() { assert decoded_email.flags[0] == email.flags[0] assert decoded_email.flags[1] == email.flags[1] assert decoded_email.internal_date == email.internal_date - + // Verify attachment data assert decoded_email.attachments.len == email.attachments.len assert decoded_email.attachments[0].filename == email.attachments[0].filename assert decoded_email.attachments[0].content_type == email.attachments[0].content_type assert decoded_email.attachments[0].data == email.attachments[0].data - + // Verify envelope data if envelope := decoded_email.envelope { assert envelope.date == email.envelope?.date @@ -86,11 +86,11 @@ fn test_email_serialization() { fn test_email_without_envelope() { // Create a test email without an envelope mut email := Email{ - uid: 789 - seq_num: 101 - mailbox: 'Sent' - message: 'Simple message without envelope' - flags: ['\\\\Seen'] + uid: 789 + seq_num: 101 + mailbox: 'Sent' + message: 'Simple message without envelope' + flags: ['\\\\Seen'] internal_date: 1615478400 } @@ -120,17 +120,17 @@ fn test_email_without_envelope() { fn test_email_helper_methods() { // Create a test email with envelope mut email := Email{ - uid: 123 - seq_num: 456 - mailbox: 'INBOX' - message: 'Test message' + uid: 123 + seq_num: 456 + mailbox: 'INBOX' + message: 'Test message' envelope: Envelope{ subject: 'Test Subject' - from: ['sender@example.com'] - to: ['recipient@example.com'] - cc: ['cc@example.com'] - bcc: ['bcc@example.com'] - date: 1615478400 + from: ['sender@example.com'] + to: ['recipient@example.com'] + cc: ['cc@example.com'] + bcc: ['bcc@example.com'] + date: 1615478400 } } @@ -144,29 +144,29 @@ fn test_email_helper_methods() { assert email.bcc().len == 1 assert email.bcc()[0] == 'bcc@example.com' assert email.date() == 1615478400 - + // Test setter methods email.set_subject('Updated Subject') assert email.subject() == 'Updated Subject' - + email.set_from('newsender@example.com') assert email.from() == 'newsender@example.com' - + email.set_to(['new1@example.com', 'new2@example.com']) assert email.to().len == 2 assert email.to()[0] == 'new1@example.com' assert email.to()[1] == 'new2@example.com' - + // Test ensure_envelope with a new email mut new_email := Email{ - uid: 789 + uid: 789 message: 'Email without envelope' } - + assert new_email.envelope == none new_email.ensure_envelope() assert new_email.envelope != none - + new_email.set_subject('New Subject') assert new_email.subject() == 'New Subject' } @@ -174,53 +174,53 @@ fn test_email_helper_methods() { fn test_email_imap_methods() { // Create a test email for IMAP functionality testing mut email := Email{ - uid: 123 - seq_num: 456 - mailbox: 'INBOX' - message: 'This is a test email message.\nWith multiple lines.\nFor testing purposes.' - flags: ['\\\\Seen', '\\\\Flagged'] + uid: 123 + seq_num: 456 + mailbox: 'INBOX' + message: 'This is a test email message.\nWith multiple lines.\nFor testing purposes.' + flags: ['\\\\Seen', '\\\\Flagged'] internal_date: 1615478400 - envelope: Envelope{ + envelope: Envelope{ subject: 'Test Subject' - from: ['sender@example.com'] - to: ['recipient@example.com'] + from: ['sender@example.com'] + to: ['recipient@example.com'] } } - + // Test size calculation calculated_size := email.calculate_size() assert calculated_size > 0 assert calculated_size >= u32(email.message.len) - + // Test body structure for email without attachments body_structure := email.body_structure() assert body_structure.contains('text') assert body_structure.contains('plain') assert body_structure.contains('7bit') - + // Test body structure for email with attachments mut email_with_attachments := email email_with_attachments.attachments << Attachment{ - filename: 'test.txt' + filename: 'test.txt' content_type: 'text/plain' - data: 'VGhpcyBpcyBhIHRlc3QgYXR0YWNobWVudC4=' + data: 'VGhpcyBpcyBhIHRlc3QgYXR0YWNobWVudC4=' } - + body_structure_with_attachments := email_with_attachments.body_structure() assert body_structure_with_attachments.contains('multipart') assert body_structure_with_attachments.contains('mixed') assert body_structure_with_attachments.contains('attachment') assert body_structure_with_attachments.contains('test.txt') - + // Test flag-related methods assert email.is_read() == true assert email.is_flagged() == true - + // Test recipient methods all_recipients := email.recipients() assert all_recipients.len == 1 assert all_recipients[0] == 'recipient@example.com' - + // Test has_attachments assert email.has_attachments() == false assert email_with_attachments.has_attachments() == true diff --git a/lib/clients/openai/openai_model_.v b/lib/clients/openai/openai_model_.v index ebfe081e..84ec4640 100644 --- a/lib/clients/openai/openai_model_.v +++ b/lib/clients/openai/openai_model_.v @@ -23,10 +23,10 @@ pub fn heroscript_default() !string { pub struct OpenAI { pub mut: - name string = 'default' - api_key string @[secret] + name string = 'default' + api_key string @[secret] server_url string - conn ?&httpconnection.HTTPConnection + conn ?&httpconnection.HTTPConnection } // fn cfg_play(p paramsparser.Params) ! { diff --git a/lib/clients/qdrant/collections.v b/lib/clients/qdrant/collections.v deleted file mode 100644 index 3fc6432e..00000000 --- a/lib/clients/qdrant/collections.v +++ /dev/null @@ -1,226 +0,0 @@ -module qdrant - -import freeflowuniverse.herolib.core.httpconnection -import json - -// Configuration of the collection -pub struct CollectionConfig { -pub mut: - params CollectionParams // Collection parameters - hnsw_config HNSWConfig // HNSW configuration - optimizer_config OptimizerConfig // Optimizer configuration - wal_config WALConfig // WAL configuration - quantization_config ?QuantizationConfig // Optional quantization configuration, Nullable field - strict_mode_config StrictModeConfig // Strict mode configuration -} - -// Parameters of the collection -pub struct CollectionParams { -pub mut: - vectors VectorConfig // Vector configuration - shard_number int // Number of shards - replication_factor int // Replication factor - write_consistency_factor int // Write consistency factor - on_disk_payload bool // On-disk payload -} - -// Vector configuration -pub struct VectorConfig { -pub mut: - size int // Size of the vectors - distance string // Distance function -} - -// HNSW (Hierarchical Navigable Small World) configuration -pub struct HNSWConfig { -pub mut: - m int // Number of neighbors - ef_construct int // Number of neighbors - full_scan_threshold int // Full scan threshold - max_indexing_threads int // Maximum indexing threads - on_disk bool // On-disk storage -} - -// Optimizer configuration -pub struct OptimizerConfig { -pub mut: - deleted_threshold f64 // Deleted threshold - vacuum_min_vector_number int // Minimum vector number - default_segment_number int // Default segment number - max_segment_size ?int // Nullable field - memmap_threshold ?int // Nullable field - indexing_threshold int // Indexing threshold - flush_interval_sec int // Flush interval - max_optimization_threads ?int // Nullable field -} - -// Write-Ahead Log (WAL) configuration -pub struct WALConfig { -pub mut: - wal_capacity_mb int // WAL capacity in megabytes - wal_segments_ahead int // WAL segments ahead -} - -// Quantization configuration (nullable) -pub struct QuantizationConfig { -pub mut: - scalar ?ScalarQuantization // Nullable field -} - -// Scalar quantization configuration -pub struct ScalarQuantization { -pub mut: - typ string @[json: 'type'] // Quantization type -} - -// Strict mode configuration -pub struct StrictModeConfig { -pub mut: - enabled bool // Enabled -} - -// Result field containing detailed information about the collection -pub struct GetCollectionResponse { -pub mut: - status string // Status - optimizer_status string // Optimizer status - indexed_vectors_count int // Indexed vectors count - points_count int // Points count - segments_count int // Segments count - config CollectionConfig // Collection configuration - payload_schema map[string]string // Payload schema -} - -// Get a collection arguments -@[params] -pub struct GetCollectionParams { -pub mut: - collection_name string @[required] // Name of the collection -} - -// Get a collection -pub fn (mut self QDrantClient) get_collection(params GetCollectionParams) !QDrantResponse[GetCollectionResponse] { - mut http_conn := self.httpclient()! - req := httpconnection.Request{ - method: .get - prefix: '/collections/${params.collection_name}' - } - - mut response := http_conn.get_json(req)! - return json.decode(QDrantResponse[GetCollectionResponse], response)! -} - -// Create a collection arguments -@[params] -pub struct CreateCollectionParams { -pub mut: - collection_name string @[required] // Name of the collection - size int @[required] // Size of the vectors - distance string @[required] // Distance function -} - -// Create a collection -pub fn (mut self QDrantClient) create_collection(params CreateCollectionParams) !QDrantResponse[bool] { - mut http_conn := self.httpclient()! - req := httpconnection.Request{ - method: .put - prefix: '/collections/${params.collection_name}' - data: json.encode(VectorConfig{ - size: params.size - distance: params.distance - }) - } - - mut response := http_conn.send(req)! - - if response.code >= 400 { - error_ := json.decode(QDrantErrorResponse, response.data)! - return error('Error creating collection: ' + error_.status.error) - } - - return json.decode(QDrantResponse[bool], response.data)! -} - -// Delete a collection arguments -@[params] -pub struct DeleteCollectionParams { -pub mut: - collection_name string @[required] // Name of the collection -} - -// Delete a collection -pub fn (mut self QDrantClient) delete_collection(params DeleteCollectionParams) !QDrantResponse[bool] { - mut http_conn := self.httpclient()! - req := httpconnection.Request{ - method: .delete - prefix: '/collections/${params.collection_name}' - } - - mut response := http_conn.send(req)! - if response.code >= 400 { - error_ := json.decode(QDrantErrorResponse, response.data)! - return error('Error deleting collection: ' + error_.status.error) - } - - return json.decode(QDrantResponse[bool], response.data)! -} - -// Get a collection arguments -@[params] -pub struct ListCollectionParams { - collections []CollectionNameParams // List of collection names -} - -// Get a collection arguments -@[params] -pub struct CollectionNameParams { -pub mut: - collection_name string @[json: 'name'; required] // Name of the collection -} - -// List a collection -pub fn (mut self QDrantClient) list_collections() !QDrantResponse[ListCollectionParams] { - mut http_conn := self.httpclient()! - req := httpconnection.Request{ - method: .get - prefix: '/collections' - } - - mut response := http_conn.send(req)! - if response.code >= 400 { - error_ := json.decode(QDrantErrorResponse, response.data)! - return error('Error listing collection: ' + error_.status.error) - } - - return json.decode(QDrantResponse[ListCollectionParams], response.data)! -} - -// Check collection existence -pub struct CollectionExistenceResponse { -pub mut: - exists bool // Collection existence -} - -// Check collection existence -@[params] -pub struct CollectionExistenceParams { -pub mut: - collection_name string @[json: 'name'; required] // Name of the collection -} - -// Check collection existence -pub fn (mut self QDrantClient) is_collection_exists(params CollectionExistenceParams) !QDrantResponse[CollectionExistenceResponse] { - mut http_conn := self.httpclient()! - req := httpconnection.Request{ - method: .get - prefix: '/collections/${params.collection_name}/exists' - } - - mut response := http_conn.send(req)! - if response.code >= 400 { - error_ := json.decode(QDrantErrorResponse, response.data)! - return error('Error checking collection: ' + error_.status.error) - } - - return json.decode(QDrantResponse[CollectionExistenceResponse], response.data)! -} diff --git a/lib/clients/qdrant/points.v b/lib/clients/qdrant/points.v deleted file mode 100644 index d497e446..00000000 --- a/lib/clients/qdrant/points.v +++ /dev/null @@ -1,88 +0,0 @@ -module qdrant - -import freeflowuniverse.herolib.core.httpconnection -import json -import rand - -// Retrieves all details from multiple points. -@[params] -pub struct RetrievePointsParams { -pub mut: - ids []int @[json: 'ids'; required] // Look for points with ids - collection_name string @[json: 'collection_name'; required] // Name of the collection - shard_key ?string // Specify in which shards to look for the points, if not specified - look in all shards - with_payload ?bool // Select which payload to return with the response. Default is true. - with_vectors ?bool // Options for specifying which vectors to include into response. Default is false. -} - -pub struct RetrievePointsResponse { -pub mut: - id int // Type, used for specifying point ID in user interface - payload map[string]string // Payload - values assigned to the point - vector []f64 // Vector of the point - shard_id string // Shard name - order_value f64 // Order value -} - -// Retrieves all details from multiple points. -pub fn (mut self QDrantClient) retrieve_points(params RetrievePointsParams) !QDrantResponse[RetrievePointsResponse] { - mut http_conn := self.httpclient()! - req := httpconnection.Request{ - method: .post - prefix: '/collections/${params.collection_name}/points' - data: json.encode(params) - } - - mut response := http_conn.send(req)! - - if response.code >= 400 { - error_ := json.decode(QDrantErrorResponse, response.data)! - return error('Error retrieving points: ' + error_.status.error) - } - - return json.decode(QDrantResponse[RetrievePointsResponse], response.data)! -} - -// Parameters for upserting points into a Qdrant collection. -@[params] -pub struct UpsertPointsParams { -pub mut: - collection_name string @[json: 'collection_name'; required] // Name of the collection - points []Point @[json: 'points'; required] // List of points to upsert - shard_key ?string // Optional shard key for sharding -} - -// Represents a single point to be upserted. -pub struct Point { -pub mut: - id string = rand.uuid_v4() @[json: 'id'; required] // Point ID (can be string or integer, serialized as string) - payload map[string]string @[json: 'payload'] // Payload key-value pairs (optional) - vector []f64 @[json: 'vector'; required] // Vector data for the point -} - -// Response structure for the upsert points operation. -pub struct UpsertPointsResponse { -pub mut: - status string @[json: 'status'] - operation_id int @[json: 'operation_id'] -} - -// Upserts points into a Qdrant collection. -// Performs insert + update actions on specified points. Any point with an existing {id} will be overwritten. -pub fn (mut self QDrantClient) upsert_points(params UpsertPointsParams) !QDrantResponse[UpsertPointsResponse] { - mut http_conn := self.httpclient()! - req := httpconnection.Request{ - method: .put - prefix: '/collections/${params.collection_name}/points' - data: json.encode(params) - } - - mut response := http_conn.send(req)! - - if response.code >= 400 { - error_ := json.decode(QDrantErrorResponse, response.data)! - return error('Error upserting points: ' + error_.status.error) - } - - return json.decode(QDrantResponse[UpsertPointsResponse], response.data)! -} diff --git a/lib/clients/qdrant/qdrant_client.v b/lib/clients/qdrant/qdrant_client.v deleted file mode 100644 index 2bf55a66..00000000 --- a/lib/clients/qdrant/qdrant_client.v +++ /dev/null @@ -1,425 +0,0 @@ -module qdrant - -import freeflowuniverse.herolib.core.httpconnection -<<<<<<< HEAD -======= -import json ->>>>>>> development_actions007 - -// QDrant usage -pub struct QDrantUsage { -pub mut: - cpu int // CPU usage - io_read int // I/O read usage - io_write int // I/O write usage -} - -// Top-level response structure -pub struct QDrantResponse[T] { -pub mut: - usage QDrantUsage // Usage information - result T // The result - status string // Response status - time f64 // Response time -} - -pub struct QDrantErrorResponse { -pub mut: - status QDrantError // Response status - time f64 // Response time -} - -// Qdrant error response -pub struct QDrantError { -pub mut: - error string // Error message -} - -// httpclient creates a new HTTP connection to the Qdrant API -fn (mut self QDrantClient) httpclient() !&httpconnection.HTTPConnection { - mut http_conn := httpconnection.new( - name: 'Qdrant_vclient' - url: self.url - )! - - // Add authentication header if API key is provided - if self.secret.len > 0 { -<<<<<<< HEAD - http_conn.default_header.add_custom('api-key', self.secret)! -======= - http_conn.default_header.add_custom('api_key', self.secret)! ->>>>>>> development_actions007 - } - - return http_conn -} -<<<<<<< HEAD -======= - -// Collections API - -@[params] -pub struct CreateCollectionParams { -pub mut: - collection_name string @[required] - vectors VectorsConfig @[required] - shard_number ?int - replication_factor ?int - write_consistency_factor ?int - on_disk_payload ?bool - hnsw_config ?HnswConfig - optimizers_config ?OptimizersConfig - wal_config ?WalConfig - quantization_config ?QuantizationConfig - init_from ?InitFrom - timeout ?int -} - -// Create a new collection -pub fn (mut q QdrantClient) create_collection(params CreateCollectionParams) !bool { - mut collection_params := CollectionParams{ - vectors: params.vectors - } - - if v := params.shard_number { - collection_params.shard_number = v - } - - if v := params.replication_factor { - collection_params.replication_factor = v - } - - if v := params.write_consistency_factor { - collection_params.write_consistency_factor = v - } - - if v := params.on_disk_payload { - collection_params.on_disk_payload = v - } - - if v := params.hnsw_config { - collection_params.hnsw_config = v - } - - if v := params.optimizers_config { - collection_params.optimizers_config = v - } - - if v := params.wal_config { - collection_params.wal_config = v - } - - if v := params.quantization_config { - collection_params.quantization_config = v - } - - if v := params.init_from { - collection_params.init_from = v - } - - mut query_params := map[string]string{} - if v := params.timeout { - query_params['timeout'] = v.str() - } - - req := httpconnection.Request{ - method: .put - prefix: 'collections/${params.collection_name}' - dataformat: .json - data: json.encode(collection_params) - params: query_params - } - - mut httpclient := q.httpclient()! - response := httpclient.send(req)! - - result := json.decode(OperationResponse, response.data)! - return result.result -} - -@[params] -pub struct ListCollectionsParams { -pub mut: - timeout ?int -} - -// List all collections -pub fn (mut q QdrantClient) list_collections(params ListCollectionsParams) !CollectionsResponse { - mut query_params := map[string]string{} - if v := params.timeout { - query_params['timeout'] = v.str() - } - - req := httpconnection.Request{ - method: .get - prefix: 'collections' - params: query_params - } - - mut httpclient := q.httpclient()! - response := httpclient.send(req)! - - return json.decode(CollectionsResponse, response.data)! -} - -@[params] -pub struct DeleteCollectionParams { -pub mut: - collection_name string @[required] - timeout ?int -} - -// Delete a collection -pub fn (mut q QdrantClient) delete_collection(params DeleteCollectionParams) !bool { - mut query_params := map[string]string{} - if v := params.timeout { - query_params['timeout'] = v.str() - } - - req := httpconnection.Request{ - method: .delete - prefix: 'collections/${params.collection_name}' - params: query_params - } - - mut httpclient := q.httpclient()! - response := httpclient.send(req)! - - result := json.decode(OperationResponse, response.data)! - return result.result -} - -@[params] -pub struct GetCollectionParams { -pub mut: - collection_name string @[required] - timeout ?int -} - -// Get collection info -pub fn (mut q QdrantClient) get_collection(params GetCollectionParams) !CollectionInfo { - mut query_params := map[string]string{} - if v := params.timeout { - query_params['timeout'] = v.str() - } - - req := httpconnection.Request{ - method: .get - prefix: 'collections/${params.collection_name}' - params: query_params - } - - mut httpclient := q.httpclient()! - response := httpclient.send(req)! - - result := json.decode(CollectionInfoResponse, response.data)! - return result.result -} - -// Points API - -@[params] -pub struct UpsertPointsParams { -pub mut: - collection_name string @[required] - points []PointStruct @[required] - wait ?bool - ordering ?WriteOrdering -} - -// Upsert points -pub fn (mut q QdrantClient) upsert_points(params UpsertPointsParams) !PointsOperationResponse { - mut query_params := map[string]string{} - if v := params.wait { - query_params['wait'] = v.str() - } - - mut request_body := map[string]string{} - request_body['points'] = json.encode(params.points) - - if v := params.ordering { - request_body['ordering'] = json.encode(v) - } - - req := httpconnection.Request{ - method: .put - prefix: 'collections/${params.collection_name}/points' - dataformat: .json - data: json.encode(request_body) - params: query_params - } - - mut httpclient := q.httpclient()! - response := httpclient.send(req)! - - return json.decode(PointsOperationResponse, response.data)! -} - -@[params] -pub struct DeletePointsParams { -pub mut: - collection_name string @[required] - points_selector PointsSelector @[required] - wait ?bool - ordering ?WriteOrdering -} - -// Delete points -pub fn (mut q QdrantClient) delete_points(params DeletePointsParams) !PointsOperationResponse { - mut query_params := map[string]string{} - if v := params.wait { - query_params['wait'] = v.str() - } - - mut request_body := map[string]string{} - - if params.points_selector.points != none { - request_body['points'] = params.points_selector.points.str() - } else if params.points_selector.filter != none { - request_body['filter'] = params.points_selector.filter.str() - } - - if v := params.ordering { - request_body['ordering'] = v.str() - } - - req := httpconnection.Request{ - method: .post - prefix: 'collections/${params.collection_name}/points/delete' - dataformat: .json - data: json.encode(request_body) - params: query_params - } - - mut httpclient := q.httpclient()! - response := httpclient.send(req)! - - return json.decode(PointsOperationResponse, response.data)! -} - -@[params] -pub struct GetPointParams { -pub mut: - collection_name string @[required] - id string @[required] - with_payload ?WithPayloadSelector - with_vector ?WithVector -} - -// Get a point by ID -pub fn (mut q QdrantClient) get_point(params GetPointParams) !GetPointResponse { - mut query_params := map[string]string{} - - if v := params.with_payload { - query_params['with_payload'] = json.encode(v) - } - - if v := params.with_vector { - query_params['with_vector'] = json.encode(v) - } - - req := httpconnection.Request{ - method: .get - prefix: 'collections/${params.collection_name}/points/${params.id}' - params: query_params - } - - mut httpclient := q.httpclient()! - response := httpclient.send(req)! - - return json.decode(GetPointResponse, response.data)! -} - -@[params] -pub struct SearchParams { -pub mut: - collection_name string @[required] - vector []f32 @[required] - limit int = 10 - filter ?Filter - params ?SearchParamsConfig - with_payload ?WithPayloadSelector - with_vector ?WithVector - score_threshold ?f32 -} - -// Search for points -pub fn (mut q QdrantClient) search(params SearchParams) !SearchResponse { - // Create a struct to serialize to JSON - struct SearchRequest { - pub mut: - vector []f32 - limit int - filter ?Filter - params ?SearchParamsConfig - with_payload ?WithPayloadSelector - with_vector ?WithVector - score_threshold ?f32 - } - - mut request := SearchRequest{ - vector: params.vector - limit: params.limit - } - - if v := params.filter { - request.filter = v - } - - if v := params.params { - request.params = v - } - - if v := params.with_payload { - request.with_payload = v - } - - if v := params.with_vector { - request.with_vector = v - } - - if v := params.score_threshold { - request.score_threshold = v - } - - req := httpconnection.Request{ - method: .post - prefix: 'collections/${params.collection_name}/points/search' - dataformat: .json - data: json.encode(request) - } - - mut httpclient := q.httpclient()! - response := httpclient.send(req)! - - return json.decode(SearchResponse, response.data)! -} - -// Service API - -// Get Qdrant service info -pub fn (mut q QdrantClient) get_service_info() !ServiceInfoResponse { - req := httpconnection.Request{ - method: .get - prefix: '' - } - - mut httpclient := q.httpclient()! - response := httpclient.send(req)! - - return json.decode(ServiceInfoResponse, response.data)! -} - -// Check Qdrant health -pub fn (mut q QdrantClient) health_check() !bool { - req := httpconnection.Request{ - method: .get - prefix: 'healthz' - } - - mut httpclient := q.httpclient()! - response := httpclient.send(req)! - - return response.code == 200 -} ->>>>>>> development_actions007 diff --git a/lib/clients/qdrant/qdrant_client_test.v b/lib/clients/qdrant/qdrant_client_test.v deleted file mode 100644 index 97d55cfc..00000000 --- a/lib/clients/qdrant/qdrant_client_test.v +++ /dev/null @@ -1 +0,0 @@ -module qdrant diff --git a/lib/clients/qdrant/qdrant_model.v b/lib/clients/qdrant/qdrant_model.v index bb6f6d63..99ea6693 100644 --- a/lib/clients/qdrant/qdrant_model.v +++ b/lib/clients/qdrant/qdrant_model.v @@ -35,363 +35,3 @@ pub fn heroscript_loads(heroscript string) !QDrantClient { mut obj := encoderhero.decode[QDrantClient](heroscript)! return obj } - -// // Base response structure -// pub struct BaseResponse { -// pub mut: -// time f32 -// status string -// } - -// // Operation response -// pub struct OperationResponse { -// pub mut: -// time f32 -// status string -// result bool -// } - -// // Collections response -// pub struct CollectionsResponse { -// pub mut: -// time f32 -// status string -// result []string -// } - -// // Collection info response -// pub struct CollectionInfoResponse { -// pub mut: -// time f32 -// status string -// result CollectionInfo -// } - -// // Collection info -// pub struct CollectionInfo { -// pub mut: -// status string -// optimizer_status OptimizersStatus -// vectors_count u64 -// indexed_vectors_count ?u64 -// points_count u64 -// segments_count u64 -// config CollectionConfig -// payload_schema map[string]PayloadIndexInfo -// } - -// // Optimizers status -// pub struct OptimizersStatus { -// pub mut: -// status string -// } - -// // Collection config -// pub struct CollectionConfig { -// pub mut: -// params CollectionParams -// hnsw_config ?HnswConfig -// optimizer_config ?OptimizersConfig -// wal_config ?WalConfig -// quantization_config ?QuantizationConfig -// } - -// // Collection params -// pub struct CollectionParams { -// pub mut: -// vectors VectorsConfig -// shard_number ?int -// replication_factor ?int -// write_consistency_factor ?int -// on_disk_payload ?bool -// hnsw_config ?HnswConfig -// optimizers_config ?OptimizersConfig -// wal_config ?WalConfig -// quantization_config ?QuantizationConfig -// init_from ?InitFrom -// } - -// // Vectors config -// pub struct VectorsConfig { -// pub mut: -// size int -// distance Distance -// hnsw_config ?HnswConfig -// quantization_config ?QuantizationConfig -// on_disk ?bool -// } - -// // Distance type -// pub enum Distance { -// cosine -// euclid -// dot -// } - -// // Convert Distance enum to string -// pub fn (d Distance) str() string { -// return match d { -// .cosine { 'cosine' } -// .euclid { 'euclid' } -// .dot { 'dot' } -// } -// } - -// // HNSW config -// pub struct HnswConfig { -// pub mut: -// m int -// ef_construct int -// full_scan_threshold ?int -// max_indexing_threads ?int -// on_disk ?bool -// payload_m ?int -// } - -// // Optimizers config -// pub struct OptimizersConfig { -// pub mut: -// deleted_threshold f32 -// vacuum_min_vector_number int -// default_segment_number int -// max_segment_size ?int -// memmap_threshold ?int -// indexing_threshold ?int -// flush_interval_sec ?int -// max_optimization_threads ?int -// } - -// // WAL config -// pub struct WalConfig { -// pub mut: -// wal_capacity_mb ?int -// wal_segments_ahead ?int -// } - -// // Quantization config -// pub struct QuantizationConfig { -// pub mut: -// scalar ?ScalarQuantization -// product ?ProductQuantization -// binary ?BinaryQuantization -// } - -// // Scalar quantization -// pub struct ScalarQuantization { -// pub mut: -// type_ string -// quantile ?f32 -// always_ram ?bool -// } - -// // Product quantization -// pub struct ProductQuantization { -// pub mut: -// compression string -// always_ram ?bool -// } - -// // Binary quantization -// pub struct BinaryQuantization { -// pub mut: -// binary bool -// always_ram ?bool -// } - -// // Init from -// pub struct InitFrom { -// pub mut: -// collection string -// shard ?int -// } - -// // Payload index info -// pub struct PayloadIndexInfo { -// pub mut: -// data_type string -// params ?map[string]string -// points int -// } - -// // Points operation response -// pub struct PointsOperationResponse { -// pub mut: -// time f32 -// status string -// result OperationInfo -// } - -// // Operation info -// pub struct OperationInfo { -// pub mut: -// operation_id int -// status string -// } - -// // Point struct -// pub struct PointStruct { -// pub mut: -// id string -// vector []f32 -// payload ?map[string]string -// } - -// // Points selector -// pub struct PointsSelector { -// pub mut: -// points ?[]string -// filter ?Filter -// } - -// // Filter -// pub struct Filter { -// pub mut: -// must ?[]Condition -// must_not ?[]Condition -// should ?[]Condition -// } - -// // Filter is serialized directly to JSON - -// // Condition interface -// pub interface Condition {} - -// // Field condition -// pub struct FieldCondition { -// pub mut: -// key string -// match ?string @[json: match] -// match_integer ?int @[json: match] -// match_float ?f32 @[json: match] -// match_bool ?bool @[json: match] -// range ?Range -// geo_bounding_box ?GeoBoundingBox -// geo_radius ?GeoRadius -// values_count ?ValuesCount -// } - -// // FieldCondition is serialized directly to JSON - -// // Range -// pub struct Range { -// pub mut: -// lt ?f32 -// gt ?f32 -// gte ?f32 -// lte ?f32 -// } - -// // Range is serialized directly to JSON - -// // GeoBoundingBox -// pub struct GeoBoundingBox { -// pub mut: -// top_left GeoPoint -// bottom_right GeoPoint -// } - -// // GeoBoundingBox is serialized directly to JSON - -// // GeoPoint -// pub struct GeoPoint { -// pub mut: -// lon f32 -// lat f32 -// } - -// // GeoPoint is serialized directly to JSON - -// // GeoRadius -// pub struct GeoRadius { -// pub mut: -// center GeoPoint -// radius f32 -// } - -// // GeoRadius is serialized directly to JSON - -// // ValuesCount -// pub struct ValuesCount { -// pub mut: -// lt ?int -// gt ?int -// gte ?int -// lte ?int -// } - -// // ValuesCount is serialized directly to JSON - -// // WithPayloadSelector -// pub struct WithPayloadSelector { -// pub mut: -// include ?[]string -// exclude ?[]string -// } - -// // WithPayloadSelector is serialized directly to JSON - -// // WithVector -// pub struct WithVector { -// pub mut: -// include ?[]string -// } - -// // WithVector is serialized directly to JSON - -// // Get point response -// pub struct GetPointResponse { -// pub mut: -// time f32 -// status string -// result ?PointStruct -// } - -// // Search params configuration -// pub struct SearchParamsConfig { -// pub mut: -// hnsw_ef ?int -// exact ?bool -// } - -// // SearchParamsConfig is serialized directly to JSON - -// // Search response -// pub struct SearchResponse { -// pub mut: -// time f32 -// status string -// result []ScoredPoint -// } - -// // Scored point -// pub struct ScoredPoint { -// pub mut: -// id string -// version int -// score f32 -// payload ?map[string]string -// vector ?[]f32 -// } - -// // Write ordering -// pub struct WriteOrdering { -// pub mut: -// type_ string -// } - -// // WriteOrdering is serialized directly to JSON - -// // Service info response -// pub struct ServiceInfoResponse { -// pub mut: -// time f32 -// status string -// result ServiceInfo -// } - -// // Service info -// pub struct ServiceInfo { -// pub mut: -// version string -// commit ?string -// } diff --git a/lib/code/generator/installer_client_OLD/do.v b/lib/code/generator/installer_client_OLD/do.v index a487cbaf..db7c2a08 100644 --- a/lib/code/generator/installer_client_OLD/do.v +++ b/lib/code/generator/installer_client_OLD/do.v @@ -9,18 +9,17 @@ pub mut: reset bool // regenerate all, dangerous !!! interactive bool // if we want to ask path string - playonly bool + playonly bool model ?GenModel cat ?Cat } pub struct PlayArgs { pub mut: - name string - modulepath string + name string + modulepath string } - // the default to start with // // reset bool // regenerate all, dangerous !!! @@ -29,8 +28,8 @@ pub mut: // model ?GenModel // cat ?Cat // -// will return the module path where we need to execute a play command as well as the name of -pub fn do(args_ GenerateArgs) ! PlayArgs{ +// will return the module path where we need to execute a play command as well as the name of +pub fn do(args_ GenerateArgs) !PlayArgs { mut args := args_ console.print_header('Generate code for path: ${args.path} (reset:${args.reset}, interactive:${args.interactive})') @@ -74,15 +73,13 @@ pub fn do(args_ GenerateArgs) ! PlayArgs{ console.print_debug(args) - //only generate if playonly is false and there is a classname - if !args.playonly && model.classname.len>0{ + // only generate if playonly is false and there is a classname + if !args.playonly && model.classname.len > 0 { generate(args)! } - return PlayArgs{ - name: model.play_name - modulepath: model.module_path + name: model.play_name + modulepath: model.module_path } - } diff --git a/lib/code/generator/installer_client_OLD/model.v b/lib/code/generator/installer_client_OLD/model.v index 9feeae22..623c92d0 100644 --- a/lib/code/generator/installer_client_OLD/model.v +++ b/lib/code/generator/installer_client_OLD/model.v @@ -19,8 +19,8 @@ pub mut: startupmanager bool = true build bool = true hasconfig bool = true - cat Cat // dont' set default - play_name string // e.g. docusaurus is what we look for + cat Cat // dont' set default + play_name string // e.g. docusaurus is what we look for module_path string // e.g.freeflowuniverse.herolib.web.docusaurus } @@ -111,28 +111,26 @@ pub fn gen_model_get(path string, create bool) !GenModel { model.play_name = model.name - pathsub:=path.replace('${os.home_dir()}/code/github/','') - model.module_path = pathsub.replace("/",".").replace(".lib.",".") + pathsub := path.replace('${os.home_dir()}/code/github/', '') + model.module_path = pathsub.replace('/', '.').replace('.lib.', '.') - // !!hero_code.play + // !!hero_code.play // name:'docusaurus' mut play_actions := plbook.find(filter: 'hero_code.play')! - if play_actions.len>1{ - return error("should have max 1 hero_code.play action in ${config_path.path}") + if play_actions.len > 1 { + return error('should have max 1 hero_code.play action in ${config_path.path}') } - if play_actions.len==1{ + if play_actions.len == 1 { mut p := play_actions[0].params - model.play_name = p.get_default('name',model.name)! + model.play_name = p.get_default('name', model.name)! } - if model.module_path.contains("docusaurus"){ + if model.module_path.contains('docusaurus') { println(model) - println("4567ujhjk") + println('4567ujhjk') exit(0) } - return model - } diff --git a/lib/code/generator/installer_client_OLD/scanner.v b/lib/code/generator/installer_client_OLD/scanner.v index eaeba3eb..642135fe 100644 --- a/lib/code/generator/installer_client_OLD/scanner.v +++ b/lib/code/generator/installer_client_OLD/scanner.v @@ -10,7 +10,7 @@ pub mut: reset bool // regenerate all, dangerous !!! interactive bool // if we want to ask path string - playonly bool + playonly bool } // scan over a set of directories call the play where @@ -38,7 +38,12 @@ pub fn scan(args ScannerArgs) ! { pparent := p.parent()! path_module := pparent.path if os.exists('${path_module}/.heroscript') { - do(interactive: args.interactive, path: path_module, reset: args.reset, playonly:args.playonly)! + do( + interactive: args.interactive + path: path_module + reset: args.reset + playonly: args.playonly + )! } } } diff --git a/lib/core/code/example.v b/lib/core/code/example.v index d2677467..c9d5828d 100644 --- a/lib/core/code/example.v +++ b/lib/core/code/example.v @@ -1,4 +1,3 @@ module code - pub type Value = string diff --git a/lib/core/code/folder.v b/lib/core/code/folder.v index 4b28940b..5326e440 100644 --- a/lib/core/code/folder.v +++ b/lib/core/code/folder.v @@ -3,23 +3,23 @@ module code import freeflowuniverse.herolib.core.pathlib pub interface IFolder { - name string - files []IFile + name string + files []IFile modules []Module write(string, WriteOptions) ! } pub struct Folder { pub: - name string - files []IFile + name string + files []IFile folders []IFolder modules []Module } pub fn (f Folder) write(path string, options WriteOptions) ! { mut dir := pathlib.get_dir( - path: '${path}/${f.name}' + path: '${path}/${f.name}' empty: options.overwrite )! @@ -36,4 +36,4 @@ pub fn (f Folder) write(path string, options WriteOptions) ! { for mod in f.modules { mod.write(dir.path, options)! } -} \ No newline at end of file +} diff --git a/lib/core/code/model.v b/lib/core/code/model.v index 2ba21fb3..99df32dd 100644 --- a/lib/core/code/model.v +++ b/lib/core/code/model.v @@ -3,7 +3,14 @@ module code // Code is a list of statements // pub type Code = []CodeItem -pub type CodeItem = Alias | Comment | CustomCode | Function | Import | Struct | Sumtype | Interface +pub type CodeItem = Alias + | Comment + | CustomCode + | Function + | Import + | Struct + | Sumtype + | Interface // item for adding custom code in pub struct CustomCode { diff --git a/lib/core/code/model_const.v b/lib/core/code/model_const.v index c494cd4f..b7a7a640 100644 --- a/lib/core/code/model_const.v +++ b/lib/core/code/model_const.v @@ -11,7 +11,7 @@ pub fn parse_const(code_ string) !Const { return error('code <${code_}> is not of const') } return Const{ - name: code.split('=')[0].trim_space() + name: code.split('=')[0].trim_space() value: code.split('=')[1].trim_space() } } diff --git a/lib/core/code/model_file.v b/lib/core/code/model_file.v index 114063fa..c4e6b55c 100644 --- a/lib/core/code/model_file.v +++ b/lib/core/code/model_file.v @@ -5,8 +5,8 @@ import freeflowuniverse.herolib.core.pathlib import os pub interface IFile { - write(string, WriteOptions) ! name string + write(string, WriteOptions) ! } pub struct File { @@ -30,7 +30,6 @@ pub fn (f File) typescript(path string, params WriteOptions) ! { } } - pub struct VFile { pub mut: name string @@ -44,7 +43,7 @@ pub mut: pub fn new_file(config VFile) VFile { return VFile{ ...config - mod: texttools.name_fix(config.mod) + mod: texttools.name_fix(config.mod) items: config.items } } @@ -85,11 +84,13 @@ pub fn (code VFile) write(path string, options WriteOptions) ! { } mut file := pathlib.get_file( - path: filepath.path + path: filepath.path create: true )! - mod_stmt := if code.mod == '' {''} else { + mod_stmt := if code.mod == '' { + '' + } else { 'module ${code.mod}' } @@ -128,4 +129,4 @@ pub fn (file VFile) functions() []Function { pub fn (file VFile) structs() []Struct { return file.items.filter(it is Struct).map(it as Struct) -} \ No newline at end of file +} diff --git a/lib/core/code/model_folder.v b/lib/core/code/model_folder.v index 535f0e77..f11f899f 100644 --- a/lib/core/code/model_folder.v +++ b/lib/core/code/model_folder.v @@ -3,23 +3,23 @@ module code import freeflowuniverse.herolib.core.pathlib pub interface IBasicFolder { - name string - files []IFile + name string + files []IFile modules []Module write(string, WriteOptions) ! } pub struct BasicFolder { pub: - name string - files []IFile + name string + files []IFile folders []IBasicFolder modules []Module } pub fn (f BasicFolder) write(path string, options WriteOptions) ! { mut dir := pathlib.get_dir( - path: '${path}/${f.name}' + path: '${path}/${f.name}' empty: options.overwrite )! @@ -36,4 +36,4 @@ pub fn (f BasicFolder) write(path string, options WriteOptions) ! { for mod in f.modules { mod.write(dir.path, options)! } -} \ No newline at end of file +} diff --git a/lib/core/code/model_function.v b/lib/core/code/model_function.v index b45b68b1..bd9bfd9d 100644 --- a/lib/core/code/model_function.v +++ b/lib/core/code/model_function.v @@ -4,60 +4,62 @@ import freeflowuniverse.herolib.core.texttools pub struct Function { pub: - name string @[omitempty] - receiver Param @[omitempty] - is_pub bool @[omitempty] - mod string @[omitempty] + name string @[omitempty] + receiver Param @[omitempty] + is_pub bool @[omitempty] + mod string @[omitempty] pub mut: - summary string @[omitempty] - description string @[omitempty] - params []Param @[omitempty] - body string @[omitempty] + summary string @[omitempty] + description string @[omitempty] + params []Param @[omitempty] + body string @[omitempty] result Param @[omitempty] - has_return bool @[omitempty] + has_return bool @[omitempty] } - // vgen_function generates a function statement for a function pub fn (function Function) vgen(options WriteOptions) string { mut params_ := function.params.clone() optionals := function.params.filter(it.is_optional) options_struct := Struct{ - name: '${texttools.pascal_case(function.name)}Options' - attrs: [Attribute{ + name: '${texttools.pascal_case(function.name)}Options' + attrs: [Attribute{ name: 'params' }] fields: optionals.map(StructField{ - name: it.name + name: it.name description: it.description - typ: it.typ + typ: it.typ }) } if optionals.len > 0 { params_ << Param{ name: 'options' - typ: type_from_symbol(options_struct.name) + typ: type_from_symbol(options_struct.name) } } params := params_.filter(!it.is_optional).map(it.vgen()).join(', ') receiver_ := Param{ - ...function.receiver, + ...function.receiver typ: if function.receiver.typ is Result { function.receiver.typ.typ - } else {function.receiver.typ} - + } else { + function.receiver.typ + } } receiver := if receiver_.vgen().trim_space() != '' { '(${receiver_.vgen()})' - } else {''} + } else { + '' + } name := texttools.name_fix(function.name) result := function.result.typ.vgen() mut function_str := $tmpl('templates/function/function.v.template') - + // if options.format { // result := os.execute_opt('echo "${function_str.replace('$', '\\$')}" | v fmt') or { // panic('${function_str}\n${err}') @@ -115,10 +117,10 @@ pub fn parse_function(code_ string) !Function { body := if code.contains('{') { code.all_after('{').all_before_last('}') } else { '' } return Function{ - name: name + name: name receiver: receiver - params: params - result: result - body: body + params: params + result: result + body: body } -} \ No newline at end of file +} diff --git a/lib/core/code/model_import.v b/lib/core/code/model_import.v index 0150ad6a..df09fd6d 100644 --- a/lib/core/code/model_import.v +++ b/lib/core/code/model_import.v @@ -14,7 +14,7 @@ pub fn parse_import(code_ string) Import { code := code_.trim_space().trim_string_left('import').trim_space() types_str := if code.contains(' ') { code.all_after(' ').trim('{}') } else { '' } return Import{ - mod: code.all_before(' ') + mod: code.all_before(' ') types: if types_str != '' { types_str.split(',').map(it.trim_space()) } else { diff --git a/lib/core/code/model_module.v b/lib/core/code/model_module.v index cb1b7c58..b571974e 100644 --- a/lib/core/code/model_module.v +++ b/lib/core/code/model_module.v @@ -1,4 +1,5 @@ module code + import freeflowuniverse.herolib.ui.console import freeflowuniverse.herolib.core.pathlib import os @@ -6,75 +7,71 @@ import log pub struct Module { pub mut: - name string + name string description string - version string = '0.0.1' - license string = 'apache2' - vcs string = 'git' - files []IFile - folders []IFolder - modules []Module - in_src bool // whether mod will be generated in src folder + version string = '0.0.1' + license string = 'apache2' + vcs string = 'git' + files []IFile + folders []IFolder + modules []Module + in_src bool // whether mod will be generated in src folder } pub fn new_module(mod Module) Module { - return Module { + return Module{ ...mod - files: mod.files.map( - if it is VFile { - IFile(VFile{...it, mod: mod.name}) - } else {it} - ) + files: mod.files.map(if it is VFile { + IFile(VFile{ ...it, mod: mod.name }) + } else { + it + }) } } pub fn (mod Module) write(path string, options WriteOptions) ! { mut module_dir := pathlib.get_dir( - path: if mod.in_src { '${path}/src' } else { '${path}/${mod.name}' } + path: if mod.in_src { '${path}/src' } else { '${path}/${mod.name}' } empty: options.overwrite )! - console.print_debug("write ${module_dir.path}") + console.print_debug('write ${module_dir.path}') // pre:="v -n -w -enable-globals" - pre:="v -n -w -gc none -cc tcc -d use_openssl -enable-globals run" + pre := 'v -n -w -gc none -cc tcc -d use_openssl -enable-globals run' if !options.overwrite && module_dir.exists() { return } for file in mod.files { - console.print_debug("mod file write ${file.name}") + console.print_debug('mod file write ${file.name}') file.write(module_dir.path, options)! } for folder in mod.folders { - console.print_debug("mod folder write ${folder.name}") + console.print_debug('mod folder write ${folder.name}') folder.write('${path}/${mod.name}', options)! } for mod_ in mod.modules { - console.print_debug("mod write ${mod_.name}") + console.print_debug('mod write ${mod_.name}') mod_.write('${path}/${mod.name}', options)! } if options.format { - console.print_debug("format ${module_dir.path}") + console.print_debug('format ${module_dir.path}') os.execute('v fmt -w ${module_dir.path}') } if options.compile { - console.print_debug("compile shared ${module_dir.path}") - os.execute_opt('${pre} -shared ${module_dir.path}') or { - log.fatal(err.msg()) - } + console.print_debug('compile shared ${module_dir.path}') + os.execute_opt('${pre} -shared ${module_dir.path}') or { log.fatal(err.msg()) } } if options.test { - console.print_debug("test ${module_dir.path}") - os.execute_opt('${pre} test ${module_dir.path}') or { - log.fatal(err.msg()) - } + console.print_debug('test ${module_dir.path}') + os.execute_opt('${pre} test ${module_dir.path}') or { log.fatal(err.msg()) } } if options.document { docs_path := '${path}/${mod.name}/docs' - console.print_debug("document ${module_dir.path}") + console.print_debug('document ${module_dir.path}') os.execute('v doc -f html -o ${docs_path} ${module_dir.path}') } diff --git a/lib/core/code/model_param.v b/lib/core/code/model_param.v index 9d3a9d95..4357903a 100644 --- a/lib/core/code/model_param.v +++ b/lib/core/code/model_param.v @@ -4,18 +4,18 @@ import freeflowuniverse.herolib.core.texttools pub struct Param { pub mut: - required bool @[omitempty] - mutable bool @[omitempty] - is_shared bool @[omitempty] - is_optional bool @[omitempty] - is_result bool @[omitempty] - description string @[omitempty] - name string @[omitempty] - typ Type @[omitempty] + required bool @[omitempty] + mutable bool @[omitempty] + is_shared bool @[omitempty] + is_optional bool @[omitempty] + is_result bool @[omitempty] + description string @[omitempty] + name string @[omitempty] + typ Type @[omitempty] } @[params] -pub struct Params{ +pub struct Params { pub: v string } @@ -37,7 +37,7 @@ pub fn (param Param) vgen() string { pub fn (p Param) typescript() string { name := texttools.camel_case(p.name) - suffix := if p.is_optional {'?'} else {''} + suffix := if p.is_optional { '?' } else { '' } return '${name}${suffix}: ${p.typ.typescript()}' } @@ -45,9 +45,13 @@ pub fn parse_param(code_ string) !Param { mut code := code_.trim_space() if code == '!' { - return Param{is_result: true} + return Param{ + is_result: true + } } else if code == '?' { - return Param{is_optional: true} + return Param{ + is_optional: true + } } is_mut := code.starts_with('mut ') @@ -59,7 +63,7 @@ pub fn parse_param(code_ string) !Param { if split.len == 1 { // means anonymous param return Param{ - typ: type_from_symbol(split[0]) + typ: type_from_symbol(split[0]) mutable: is_mut } } @@ -67,8 +71,8 @@ pub fn parse_param(code_ string) !Param { return error('invalid param format: ${code_}') } return Param{ - name: split[0] - typ: type_from_symbol(split[1]) + name: split[0] + typ: type_from_symbol(split[1]) mutable: is_mut } } diff --git a/lib/core/code/model_struct.v b/lib/core/code/model_struct.v index 59ad501f..1fec8027 100644 --- a/lib/core/code/model_struct.v +++ b/lib/core/code/model_struct.v @@ -33,7 +33,9 @@ pub fn (struct_ Struct) vgen() string { comments := if struct_.description.trim_space() != '' { '// ${struct_.description.trim_space()}' - } else {''} + } else { + '' + } priv_fields := struct_.fields.filter(!it.is_mut && !it.is_pub).map(it.vgen()) pub_fields := struct_.fields.filter(!it.is_mut && it.is_pub).map(it.vgen()) @@ -51,16 +53,15 @@ pub fn (struct_ Struct) vgen() string { return struct_str } - pub struct Interface { pub mut: name string description string is_pub bool - embeds []Interface @[str: skip] + embeds []Interface @[str: skip] attrs []Attribute fields []StructField - methods []Function + methods []Function } pub fn (iface Interface) vgen() string { @@ -104,8 +105,8 @@ pub mut: is_pub bool is_mut bool is_ref bool - anon_struct Struct @[str: skip] // sometimes fields may hold anonymous structs - structure Struct @[str: skip] + anon_struct Struct @[str: skip] // sometimes fields may hold anonymous structs + structure Struct @[str: skip] } pub fn (field StructField) vgen() string { @@ -133,4 +134,4 @@ pub fn (s Struct) typescript() string { name := texttools.pascal_case(s.name) fields := s.fields.map(it.typescript()).join_lines() return 'export interface ${name} {\n${fields}\n}' -} \ No newline at end of file +} diff --git a/lib/core/code/model_types.v b/lib/core/code/model_types.v index cdb102dc..b8d18743 100644 --- a/lib/core/code/model_types.v +++ b/lib/core/code/model_types.v @@ -1,56 +1,65 @@ module code struct Float { - bytes int + bytes int } // Integer types pub const type_i8 = Integer{ - bytes: 8 + bytes: 8 } pub const type_u8 = Integer{ - bytes: 8 - signed: false + bytes: 8 + signed: false } pub const type_i16 = Integer{ - bytes: 16 + bytes: 16 } pub const type_u16 = Integer{ - bytes: 16 - signed: false + bytes: 16 + signed: false } pub const type_i32 = Integer{ - bytes: 32 + bytes: 32 } pub const type_u32 = Integer{ - bytes: 32 - signed: false + bytes: 32 + signed: false } pub const type_i64 = Integer{ - bytes: 64 + bytes: 64 } pub const type_u64 = Integer{ - bytes: 64 - signed: false + bytes: 64 + signed: false } // Floating-point types pub const type_f32 = Float{ - bytes: 32 + bytes: 32 } pub const type_f64 = Float{ - bytes: 64 + bytes: 64 } -pub type Type = Void | Map | Array | Object | Result | Integer | Alias | String | Boolean | Function +pub type Type = Void + | Map + | Array + | Object + | Result + | Integer + | Alias + | String + | Boolean + | Function pub struct Alias { pub: @@ -59,12 +68,12 @@ pub: typ Type } -pub struct Boolean{} +pub struct Boolean {} -pub struct Void{} +pub struct Void {} pub struct Integer { - bytes u8 + bytes u8 signed bool = true } @@ -84,26 +93,44 @@ pub fn type_from_symbol(symbol_ string) Type { pub fn (t Type) symbol() string { return match t { - Array { '[]${t.typ.symbol()}' } - Object { t.name } - Result { '!${t.typ.symbol()}'} + Array { + '[]${t.typ.symbol()}' + } + Object { + t.name + } + Result { + '!${t.typ.symbol()}' + } Integer { - mut str := '' - if !t.signed { - str += 'u' - } - if t.bytes != 0 { - '${str}${t.bytes}' - } else { - '${str}int' - } - } - Alias {t.name} - String {'string'} - Boolean {'bool'} - Map{'map[string]${t.typ.symbol()}'} - Function{'fn ()'} - Void {''} + mut str := '' + if !t.signed { + str += 'u' + } + if t.bytes != 0 { + '${str}${t.bytes}' + } else { + '${str}int' + } + } + Alias { + t.name + } + String { + 'string' + } + Boolean { + 'bool' + } + Map { + 'map[string]${t.typ.symbol()}' + } + Function { + 'fn ()' + } + Void { + '' + } } } @@ -131,16 +158,16 @@ pub: pub fn (t Type) typescript() string { return match t { - Map {'Record'} + Map { 'Record' } Array { '${t.typ.typescript()}[]' } Object { t.name } - Result { '${t.typ.typescript()}'} - Boolean { 'boolean'} + Result { '${t.typ.typescript()}' } + Boolean { 'boolean' } Integer { 'number' } - Alias {t.name} - String {'string'} - Function {'func'} - Void {''} + Alias { t.name } + String { 'string' } + Function { 'func' } + Void { '' } } } @@ -151,15 +178,39 @@ pub fn (t Type) vgen() string { pub fn (t Type) empty_value() string { return match t { - Map {'{}'} - Array { '[]${t.typ.symbol()}{}' } - Object { if t.name != '' {'${t.name}{}'} else {''} } - Result { t.typ.empty_value() } - Boolean { 'false' } - Integer { '0' } - Alias {''} - String {"''"} - Function {''} - Void {''} + Map { + '{}' + } + Array { + '[]${t.typ.symbol()}{}' + } + Object { + if t.name != '' { + '${t.name}{}' + } else { + '' + } + } + Result { + t.typ.empty_value() + } + Boolean { + 'false' + } + Integer { + '0' + } + Alias { + '' + } + String { + "''" + } + Function { + '' + } + Void { + '' + } } -} \ No newline at end of file +} diff --git a/lib/core/code/write.v b/lib/core/code/write.v index b950063f..45d942c9 100644 --- a/lib/core/code/write.v +++ b/lib/core/code/write.v @@ -11,11 +11,10 @@ pub: overwrite bool document bool prefix string - compile bool // whether to compile the written code - test bool // whether to test the written code + compile bool // whether to compile the written code + test bool // whether to test the written code } - interface ICodeItem { vgen() string } @@ -53,7 +52,6 @@ pub fn (import_ Import) vgen() string { return 'import ${import_.mod} ${types_str}' } - pub fn vgen_generics(generics map[string]string) string { if generics.keys().len == 0 { return '' @@ -67,4 +65,4 @@ pub fn vgen_generics(generics map[string]string) string { pub fn (custom CustomCode) vgen() string { return custom.text -} \ No newline at end of file +} diff --git a/lib/core/generator/generic/model.v b/lib/core/generator/generic/model.v index ea24bb54..f6aac36b 100644 --- a/lib/core/generator/generic/model.v +++ b/lib/core/generator/generic/model.v @@ -20,9 +20,9 @@ pub mut: path string force bool hasconfig bool = true - playonly bool - play_name string // e.g. docusaurus is what we look for - module_path string // e.g.freeflowuniverse.herolib.web.docusaurus + playonly bool + play_name string // e.g. docusaurus is what we look for + module_path string // e.g.freeflowuniverse.herolib.web.docusaurus } pub enum Cat { @@ -83,5 +83,4 @@ fn args_get(path string) !GeneratorArgs { } } return error("can't find hero_code.generate_client or hero_code.generate_installer in ${path}") - } diff --git a/lib/core/generator/installer_client_OLD/factory.v b/lib/core/generator/installer_client_OLD/factory.v index a487cbaf..db7c2a08 100644 --- a/lib/core/generator/installer_client_OLD/factory.v +++ b/lib/core/generator/installer_client_OLD/factory.v @@ -9,18 +9,17 @@ pub mut: reset bool // regenerate all, dangerous !!! interactive bool // if we want to ask path string - playonly bool + playonly bool model ?GenModel cat ?Cat } pub struct PlayArgs { pub mut: - name string - modulepath string + name string + modulepath string } - // the default to start with // // reset bool // regenerate all, dangerous !!! @@ -29,8 +28,8 @@ pub mut: // model ?GenModel // cat ?Cat // -// will return the module path where we need to execute a play command as well as the name of -pub fn do(args_ GenerateArgs) ! PlayArgs{ +// will return the module path where we need to execute a play command as well as the name of +pub fn do(args_ GenerateArgs) !PlayArgs { mut args := args_ console.print_header('Generate code for path: ${args.path} (reset:${args.reset}, interactive:${args.interactive})') @@ -74,15 +73,13 @@ pub fn do(args_ GenerateArgs) ! PlayArgs{ console.print_debug(args) - //only generate if playonly is false and there is a classname - if !args.playonly && model.classname.len>0{ + // only generate if playonly is false and there is a classname + if !args.playonly && model.classname.len > 0 { generate(args)! } - return PlayArgs{ - name: model.play_name - modulepath: model.module_path + name: model.play_name + modulepath: model.module_path } - } diff --git a/lib/core/generator/installer_client_OLD/model.v b/lib/core/generator/installer_client_OLD/model.v index 9feeae22..623c92d0 100644 --- a/lib/core/generator/installer_client_OLD/model.v +++ b/lib/core/generator/installer_client_OLD/model.v @@ -19,8 +19,8 @@ pub mut: startupmanager bool = true build bool = true hasconfig bool = true - cat Cat // dont' set default - play_name string // e.g. docusaurus is what we look for + cat Cat // dont' set default + play_name string // e.g. docusaurus is what we look for module_path string // e.g.freeflowuniverse.herolib.web.docusaurus } @@ -111,28 +111,26 @@ pub fn gen_model_get(path string, create bool) !GenModel { model.play_name = model.name - pathsub:=path.replace('${os.home_dir()}/code/github/','') - model.module_path = pathsub.replace("/",".").replace(".lib.",".") + pathsub := path.replace('${os.home_dir()}/code/github/', '') + model.module_path = pathsub.replace('/', '.').replace('.lib.', '.') - // !!hero_code.play + // !!hero_code.play // name:'docusaurus' mut play_actions := plbook.find(filter: 'hero_code.play')! - if play_actions.len>1{ - return error("should have max 1 hero_code.play action in ${config_path.path}") + if play_actions.len > 1 { + return error('should have max 1 hero_code.play action in ${config_path.path}') } - if play_actions.len==1{ + if play_actions.len == 1 { mut p := play_actions[0].params - model.play_name = p.get_default('name',model.name)! + model.play_name = p.get_default('name', model.name)! } - if model.module_path.contains("docusaurus"){ + if model.module_path.contains('docusaurus') { println(model) - println("4567ujhjk") + println('4567ujhjk') exit(0) } - return model - } diff --git a/lib/core/generator/installer_client_OLD/scanner.v b/lib/core/generator/installer_client_OLD/scanner.v index eaeba3eb..642135fe 100644 --- a/lib/core/generator/installer_client_OLD/scanner.v +++ b/lib/core/generator/installer_client_OLD/scanner.v @@ -10,7 +10,7 @@ pub mut: reset bool // regenerate all, dangerous !!! interactive bool // if we want to ask path string - playonly bool + playonly bool } // scan over a set of directories call the play where @@ -38,7 +38,12 @@ pub fn scan(args ScannerArgs) ! { pparent := p.parent()! path_module := pparent.path if os.exists('${path_module}/.heroscript') { - do(interactive: args.interactive, path: path_module, reset: args.reset, playonly:args.playonly)! + do( + interactive: args.interactive + path: path_module + reset: args.reset + playonly: args.playonly + )! } } } diff --git a/lib/core/herocmds/generator.v b/lib/core/herocmds/generator.v index 888e0e32..c75e9982 100644 --- a/lib/core/herocmds/generator.v +++ b/lib/core/herocmds/generator.v @@ -70,8 +70,8 @@ fn cmd_generator_execute(cmd Command) ! { mut installer := cmd.flags.get_bool('installer') or { false } mut path := cmd.flags.get_string('path') or { '' } - if playonly{ - force=true + if playonly { + force = true } if path == '' { @@ -86,7 +86,7 @@ fn cmd_generator_execute(cmd Command) ! { } if scan { - generic.scan(path: path, reset: reset, force: force, cat: cat, playonly:playonly)! + generic.scan(path: path, reset: reset, force: force, cat: cat, playonly: playonly)! } else { generic.generate(path: path, reset: reset, force: force, cat: cat)! } diff --git a/lib/core/pathlib/factory.v b/lib/core/pathlib/factory.v index ad217848..7784adb0 100644 --- a/lib/core/pathlib/factory.v +++ b/lib/core/pathlib/factory.v @@ -52,7 +52,7 @@ pub fn get_dir(args_ GetArgs) !Path { p2.check() if args.delete { p2.delete()! - } + } p2.absolute() if p2.exist == .no { if args.create { @@ -67,7 +67,6 @@ pub fn get_dir(args_ GetArgs) !Path { if args.empty { p2.empty()! } - } return p2 } diff --git a/lib/core/pathlib/path_copy.v b/lib/core/pathlib/path_copy.v index 8b71d993..496a457b 100644 --- a/lib/core/pathlib/path_copy.v +++ b/lib/core/pathlib/path_copy.v @@ -61,5 +61,4 @@ pub fn (mut path Path) copy(args_ CopyArgs) ! { dest.check() } - } diff --git a/lib/core/redisclient/redisclient_rpc.v b/lib/core/redisclient/redisclient_rpc.v index 22ad37f9..22b0849b 100644 --- a/lib/core/redisclient/redisclient_rpc.v +++ b/lib/core/redisclient/redisclient_rpc.v @@ -50,7 +50,9 @@ pub: pub fn (mut q RedisRpc) call(args RPCArgs) !string { timeout := if args.timeout == 0 { u64(60000) - } else {args.timeout} + } else { + args.timeout + } retqueue := rand.uuid_v4() now := time.now().unix() message := Message{ @@ -92,7 +94,7 @@ pub fn (mut q RedisRpc) result(timeout u64, retqueue string) !string { pub struct ProcessParams { pub: interval time.Duration = time.millisecond * 10 - timeout u64 + timeout u64 } // to be used by processor, to get request and execute, this is the server side of a RPC mechanism diff --git a/lib/core/texttools/casing.v b/lib/core/texttools/casing.v index e837d77b..a5e0be0d 100644 --- a/lib/core/texttools/casing.v +++ b/lib/core/texttools/casing.v @@ -1,4 +1,4 @@ -module texttools +module texttools pub fn snake_case(s string) string { return separate_words(s).join('_') @@ -35,4 +35,4 @@ fn separate_words(s string) []string { words << word.to_lower() } return words -} \ No newline at end of file +} diff --git a/lib/core/texttools/namefix.v b/lib/core/texttools/namefix.v index 1915916b..c64ef4ef 100644 --- a/lib/core/texttools/namefix.v +++ b/lib/core/texttools/namefix.v @@ -84,12 +84,11 @@ pub fn name_fix_no_underscore(name string) string { return x } -<<<<<<< HEAD -<<<<<<< HEAD // remove underscores and extension pub fn name_fix_no_underscore_no_ext(name_ string) string { return name_fix_keepext(name_).all_before_last('.').replace('_', '') -======= +} + pub fn name_fix_snake_to_pascal(name string) string { x := name.replace('_', ' ') p := x.title().replace(' ', '') @@ -122,19 +121,6 @@ pub fn name_fix_dot_notation_to_snake_case(name string) string { return name.replace('.', '_') } -// normalize a file path while preserving path structure -pub fn path_fix(path_ string) string { - if path_.len == 0 { - return '' - } - return "${path_.trim('/')}" ->>>>>>> development_ourdb_new -======= -// remove underscores and extension -pub fn name_fix_no_underscore_no_ext(name_ string) string { - return name_fix_keepext(name_).all_before_last('.').replace('_', '') -} - // Normalizes a path component (directory or file name without extension) fn normalize_component(comp string) string { mut result := comp.to_lower() @@ -250,7 +236,6 @@ pub fn path_fix(path_ string) string { } return result ->>>>>>> development_actions007 } // normalize a file path while preserving path structure diff --git a/lib/data/dedupestor/dedupestor_test.v b/lib/data/dedupestor/dedupestor_test.v index 395f6068..bb3611ae 100644 --- a/lib/data/dedupestor/dedupestor_test.v +++ b/lib/data/dedupestor/dedupestor_test.v @@ -9,9 +9,9 @@ fn testsuite_begin() ! { '/tmp/dedupestor_test_size', '/tmp/dedupestor_test_exists', '/tmp/dedupestor_test_multiple', - '/tmp/dedupestor_test_refs' + '/tmp/dedupestor_test_refs', ] - + for dir in test_dirs { if os.exists(dir) { os.rmdir_all(dir) or {} @@ -22,26 +22,35 @@ fn testsuite_begin() ! { fn test_basic_operations() ! { mut ds := new( - path: '/tmp/dedupestor_test' + path: '/tmp/dedupestor_test' reset: true )! // Test storing and retrieving data value1 := 'test data 1'.bytes() - ref1 := Reference{owner: 1, id: 1} + ref1 := Reference{ + owner: 1 + id: 1 + } hash1 := ds.store(value1, ref1)! - + retrieved1 := ds.get(hash1)! assert retrieved1 == value1 // Test deduplication with different reference - ref2 := Reference{owner: 1, id: 2} + ref2 := Reference{ + owner: 1 + id: 2 + } hash2 := ds.store(value1, ref2)! assert hash1 == hash2 // Should return same hash for same data // Test different data gets different hash value2 := 'test data 2'.bytes() - ref3 := Reference{owner: 1, id: 3} + ref3 := Reference{ + owner: 1 + id: 3 + } hash3 := ds.store(value2, ref3)! assert hash1 != hash3 // Should be different hash for different data @@ -51,13 +60,16 @@ fn test_basic_operations() ! { fn test_size_limit() ! { mut ds := new( - path: '/tmp/dedupestor_test_size' + path: '/tmp/dedupestor_test_size' reset: true )! // Test data under size limit (1KB) small_data := []u8{len: 1024, init: u8(index)} - ref := Reference{owner: 1, id: 1} + ref := Reference{ + owner: 1 + id: 1 + } small_hash := ds.store(small_data, ref)! retrieved := ds.get(small_hash)! assert retrieved == small_data @@ -71,12 +83,15 @@ fn test_size_limit() ! { fn test_exists() ! { mut ds := new( - path: '/tmp/dedupestor_test_exists' + path: '/tmp/dedupestor_test_exists' reset: true )! value := 'test data'.bytes() - ref := Reference{owner: 1, id: 1} + ref := Reference{ + owner: 1 + id: 1 + } hash := ds.store(value, ref)! assert ds.id_exists(hash) == true @@ -85,7 +100,7 @@ fn test_exists() ! { fn test_multiple_operations() ! { mut ds := new( - path: '/tmp/dedupestor_test_multiple' + path: '/tmp/dedupestor_test_multiple' reset: true )! @@ -93,10 +108,13 @@ fn test_multiple_operations() ! { mut values := [][]u8{} mut ids := []u32{} - for i in 0..5 { + for i in 0 .. 5 { value := 'test data ${i}'.bytes() values << value - ref := Reference{owner: 1, id: u32(i)} + ref := Reference{ + owner: 1 + id: u32(i) + } id := ds.store(value, ref)! ids << id } @@ -109,7 +127,10 @@ fn test_multiple_operations() ! { // Test deduplication by storing same values again for i, value in values { - ref := Reference{owner: 2, id: u32(i)} + ref := Reference{ + owner: 2 + id: u32(i) + } id := ds.store(value, ref)! assert id == ids[i] // Should get same hash for same data } @@ -117,23 +138,32 @@ fn test_multiple_operations() ! { fn test_references() ! { mut ds := new( - path: '/tmp/dedupestor_test_refs' + path: '/tmp/dedupestor_test_refs' reset: true )! // Store same data with different references value := 'test data'.bytes() - ref1 := Reference{owner: 1, id: 1} - ref2 := Reference{owner: 1, id: 2} - ref3 := Reference{owner: 2, id: 1} + ref1 := Reference{ + owner: 1 + id: 1 + } + ref2 := Reference{ + owner: 1 + id: 2 + } + ref3 := Reference{ + owner: 2 + id: 1 + } // Store with first reference id := ds.store(value, ref1)! - + // Store same data with second reference id2 := ds.store(value, ref2)! assert id == id2 // Same hash for same data - + // Store same data with third reference id3 := ds.store(value, ref3)! assert id == id3 // Same hash for same data @@ -141,15 +171,15 @@ fn test_references() ! { // Delete first reference - data should still exist ds.delete(id, ref1)! assert ds.id_exists(id) == true - + // Delete second reference - data should still exist ds.delete(id, ref2)! assert ds.id_exists(id) == true - + // Delete last reference - data should be gone ds.delete(id, ref3)! assert ds.id_exists(id) == false - + // Verify data is actually deleted by trying to get it if _ := ds.get(id) { assert false, 'Expected error getting deleted data' diff --git a/lib/data/dedupestor/metadata.v b/lib/data/dedupestor/metadata.v index df72075b..5eec62b8 100644 --- a/lib/data/dedupestor/metadata.v +++ b/lib/data/dedupestor/metadata.v @@ -12,7 +12,7 @@ pub mut: pub struct Reference { pub: owner u16 - id u32 + id u32 } // to_bytes converts Metadata to bytes for storage @@ -28,7 +28,7 @@ pub fn (m Metadata) to_bytes() []u8 { pub fn bytes_to_metadata(b []u8) Metadata { if b.len < 4 { return Metadata{ - id: 0 + id: 0 references: []Reference{} } } @@ -40,13 +40,13 @@ pub fn bytes_to_metadata(b []u8) Metadata { mut i := 4 for i < b.len { if i + 6 <= b.len { - refs << bytes_to_reference(b[i..i+6]) + refs << bytes_to_reference(b[i..i + 6]) } i += 6 } return Metadata{ - id: id + id: id references: refs } } @@ -59,7 +59,7 @@ pub fn (mut m Metadata) add_reference(ref Reference) !Metadata { return m } } - + m.references << ref return m } @@ -94,7 +94,7 @@ pub fn bytes_to_reference(b []u8) Reference { id := u32(b[2]) | (u32(b[3]) << 8) | (u32(b[4]) << 16) | (u32(b[5]) << 24) return Reference{ owner: owner - id: id + id: id } } diff --git a/lib/data/dedupestor/metadata_test.v b/lib/data/dedupestor/metadata_test.v index 9ebb3956..df86e405 100644 --- a/lib/data/dedupestor/metadata_test.v +++ b/lib/data/dedupestor/metadata_test.v @@ -3,31 +3,37 @@ module dedupestor fn test_reference_bytes_conversion() { ref := Reference{ owner: 12345 - id: 67890 + id: 67890 } - + bytes := ref.to_bytes() recovered := bytes_to_reference(bytes) - + assert ref.owner == recovered.owner assert ref.id == recovered.id } fn test_metadata_bytes_conversion() { mut metadata := Metadata{ - id: 42 + id: 42 references: []Reference{} } - - ref1 := Reference{owner: 1, id: 100} - ref2 := Reference{owner: 2, id: 200} - + + ref1 := Reference{ + owner: 1 + id: 100 + } + ref2 := Reference{ + owner: 2 + id: 200 + } + metadata = metadata.add_reference(ref1)! metadata = metadata.add_reference(ref2)! - + bytes := metadata.to_bytes() recovered := bytes_to_metadata(bytes) - + assert metadata.id == recovered.id assert metadata.references.len == recovered.references.len assert metadata.references[0].owner == recovered.references[0].owner @@ -38,25 +44,31 @@ fn test_metadata_bytes_conversion() { fn test_add_reference() { mut metadata := Metadata{ - id: 1 + id: 1 references: []Reference{} } - - ref1 := Reference{owner: 1, id: 100} - ref2 := Reference{owner: 2, id: 200} - + + ref1 := Reference{ + owner: 1 + id: 100 + } + ref2 := Reference{ + owner: 2 + id: 200 + } + // Add first reference metadata = metadata.add_reference(ref1)! assert metadata.references.len == 1 assert metadata.references[0].owner == ref1.owner assert metadata.references[0].id == ref1.id - + // Add second reference metadata = metadata.add_reference(ref2)! assert metadata.references.len == 2 assert metadata.references[1].owner == ref2.owner assert metadata.references[1].id == ref2.id - + // Try adding duplicate reference metadata = metadata.add_reference(ref1)! assert metadata.references.len == 2 // Length shouldn't change @@ -64,26 +76,32 @@ fn test_add_reference() { fn test_remove_reference() { mut metadata := Metadata{ - id: 1 + id: 1 references: []Reference{} } - - ref1 := Reference{owner: 1, id: 100} - ref2 := Reference{owner: 2, id: 200} - + + ref1 := Reference{ + owner: 1 + id: 100 + } + ref2 := Reference{ + owner: 2 + id: 200 + } + metadata = metadata.add_reference(ref1)! metadata = metadata.add_reference(ref2)! - + // Remove first reference metadata = metadata.remove_reference(ref1)! assert metadata.references.len == 1 assert metadata.references[0].owner == ref2.owner assert metadata.references[0].id == ref2.id - + // Remove non-existent reference - metadata = metadata.remove_reference(Reference{owner: 999, id: 999})! + metadata = metadata.remove_reference(Reference{ owner: 999, id: 999 })! assert metadata.references.len == 1 // Length shouldn't change - + // Remove last reference metadata = metadata.remove_reference(ref2)! assert metadata.references.len == 0 diff --git a/lib/data/encoder/encoder_decode.v b/lib/data/encoder/encoder_decode.v index 6b7653ce..ec45d096 100644 --- a/lib/data/encoder/encoder_decode.v +++ b/lib/data/encoder/encoder_decode.v @@ -19,7 +19,7 @@ pub fn decoder_new(data []u8) Decoder { pub fn (mut d Decoder) get_string() !string { n := d.get_u16()! - //THIS IS ALWAYS TRYE BECAUSE u16 is max 64KB + // THIS IS ALWAYS TRYE BECAUSE u16 is max 64KB // if n > 64 * 1024 { // 64KB limit // return error('string length ${n} exceeds 64KB limit') // } @@ -128,7 +128,7 @@ pub fn (mut d Decoder) get_i64() !i64 { } pub fn (mut d Decoder) get_time() !time.Time { - secs_:=d.get_u32()! + secs_ := d.get_u32()! secs := i64(secs_) return time.unix(secs) } diff --git a/lib/data/encoder/encoder_test.v b/lib/data/encoder/encoder_test.v index debf7487..1761e71d 100644 --- a/lib/data/encoder/encoder_test.v +++ b/lib/data/encoder/encoder_test.v @@ -210,7 +210,7 @@ fn encode_decode_struct[T](input StructType[T]) bool { console.print_debug('Failed to decode, error: ${err}') return false } - + $if T is time.Time { // Special handling for time.Time comparison return input.val.unix() == output.val.unix() @@ -248,7 +248,7 @@ fn test_struct() { // time.Time // assert encode_decode_struct[time.Time](get_empty_struct_input[time.Time]()) // get error here assert encode_decode_struct[time.Time](get_struct_input[time.Time](time.now())) - + // bool assert encode_decode_struct(get_empty_struct_input[bool]()) assert encode_decode_struct(get_struct_input(true)) diff --git a/lib/data/markdownparser/elements/base.v b/lib/data/markdownparser/elements/base.v index 39874029..a8d15fea 100644 --- a/lib/data/markdownparser/elements/base.v +++ b/lib/data/markdownparser/elements/base.v @@ -32,12 +32,13 @@ fn (mut self DocBase) parent_doc() &Doc { self.parent_doc_ = &e &e } + return pd } fn (mut self DocBase) remove_empty_children() { self.children = self.children.filter(!(it.content == '' && it.children.len == 0 - && it.type_name in ['paragraph','text', 'empty'])) + && it.type_name in ['paragraph', 'text', 'empty'])) } pub fn (mut self DocBase) process() !int { diff --git a/lib/data/markdownparser/elements/base_add_methods.v b/lib/data/markdownparser/elements/base_add_methods.v index b033bc75..6f4ee3e3 100644 --- a/lib/data/markdownparser/elements/base_add_methods.v +++ b/lib/data/markdownparser/elements/base_add_methods.v @@ -128,7 +128,6 @@ pub fn (mut base DocBase) frontmatter2_new(mut docparent ?&Doc, content string) return &fm } - pub fn (mut base DocBase) link_new(mut docparent ?&Doc, content string) &Link { mut a := Link{ content: content diff --git a/lib/data/markdownparser/elements/doc.v b/lib/data/markdownparser/elements/doc.v index 990d042c..6a6f09e9 100644 --- a/lib/data/markdownparser/elements/doc.v +++ b/lib/data/markdownparser/elements/doc.v @@ -80,10 +80,9 @@ pub fn (self Doc) pug() !string { ' ')}" } - pub fn (self Doc) frontmatter2() !&Frontmatter2 { - for item in self.children_recursive(){ - if item is Frontmatter2{ + for item in self.children_recursive() { + if item is Frontmatter2 { return item } } diff --git a/lib/data/markdownparser/elements/element_frontmatter2.v b/lib/data/markdownparser/elements/element_frontmatter2.v index 7d65a440..5ec83b8e 100644 --- a/lib/data/markdownparser/elements/element_frontmatter2.v +++ b/lib/data/markdownparser/elements/element_frontmatter2.v @@ -14,18 +14,18 @@ pub fn (mut self Frontmatter2) process() !int { if self.processed { return 0 } - for line in self.content.split_into_lines(){ - if line.trim_space()==""{ + for line in self.content.split_into_lines() { + if line.trim_space() == '' { continue } - if line.contains(":"){ - splitted:=line.split(":") - if splitted.len !=2{ - return error("syntax error in frontmatter 2 in \n${self.content}") + if line.contains(':') { + splitted := line.split(':') + if splitted.len != 2 { + return error('syntax error in frontmatter 2 in \n${self.content}') } - pre:=splitted[0].trim_space() - post:=splitted[1].trim_space().trim(" '\"").trim_space() - self.args[pre]=post + pre := splitted[0].trim_space() + post := splitted[1].trim_space().trim(' \'"').trim_space() + self.args[pre] = post } } // Clear content after parsing @@ -36,12 +36,12 @@ pub fn (mut self Frontmatter2) process() !int { pub fn (self Frontmatter2) markdown() !string { mut out := '---\n' - for key, value in self.args{ - if value.contains(" "){ + for key, value in self.args { + if value.contains(' ') { out += '${key} : \'${value}\'\n' - }else{ + } else { out += '${key} : ${value}\n' - } + } } out += '---\n' return out diff --git a/lib/data/markdownparser/elements/parser_paragraph.v b/lib/data/markdownparser/elements/parser_paragraph.v index 4bd0c690..95ac39b9 100644 --- a/lib/data/markdownparser/elements/parser_paragraph.v +++ b/lib/data/markdownparser/elements/parser_paragraph.v @@ -19,7 +19,7 @@ fn (mut paragraph Paragraph) paragraph_parse() ! { mut llast := paragraph.children.last() mut char_ := parser.char_current() - //console.print_debug("[[[${char_}]]]") + // console.print_debug("[[[${char_}]]]") // char == '' means end of file if mut llast is Def { diff --git a/lib/data/markdownparser/parsers/parse_doc.v b/lib/data/markdownparser/parsers/parse_doc.v index cd7a8645..0b37223c 100644 --- a/lib/data/markdownparser/parsers/parse_doc.v +++ b/lib/data/markdownparser/parsers/parse_doc.v @@ -77,8 +77,8 @@ pub fn parse_doc(mut doc elements.Doc) ! { continue } - if mut llast is elements.Frontmatter || mut llast is elements.Frontmatter2{ - if trimmed_line == '---' || trimmed_line == '+++' { + if mut llast is elements.Frontmatter || mut llast is elements.Frontmatter2 { + if trimmed_line == '---' || trimmed_line == '+++' { parser.next_start_lf()! parser.frontmatter = true continue @@ -88,7 +88,6 @@ pub fn parse_doc(mut doc elements.Doc) ! { continue } - if mut llast is elements.Paragraph { if elements.line_is_list(line) { doc.list_new(mut &doc, line)! @@ -111,19 +110,18 @@ pub fn parse_doc(mut doc elements.Doc) ! { continue } - if line.starts_with('+++') && parser.frontmatter == false{ + if line.starts_with('+++') && parser.frontmatter == false { mut e := doc.frontmatter_new(mut &doc, '') parser.next() continue } - if line.starts_with('---') && parser.frontmatter == false{ + if line.starts_with('---') && parser.frontmatter == false { mut e := doc.frontmatter2_new(mut &doc, '') parser.next() continue } - // process headers (# is 35) if line.len > 0 && line[0] == 35 { mut d := 0 diff --git a/lib/data/markdownparser/parsers/parser_line.v b/lib/data/markdownparser/parsers/parser_line.v index 140af9d1..f4d9f7eb 100644 --- a/lib/data/markdownparser/parsers/parser_line.v +++ b/lib/data/markdownparser/parsers/parser_line.v @@ -13,11 +13,11 @@ mut: struct Parser { mut: - doc &elements.Doc - linenr int - lines []string - errors []ParserError - endlf bool // if there is a linefeed or \n at end + doc &elements.Doc + linenr int + lines []string + errors []ParserError + endlf bool // if there is a linefeed or \n at end frontmatter bool } diff --git a/lib/data/markdownparser2/example.v b/lib/data/markdownparser2/example.v index b42ca9a6..530169a2 100644 --- a/lib/data/markdownparser2/example.v +++ b/lib/data/markdownparser2/example.v @@ -40,10 +40,10 @@ Footnote reference[^1] // Parse the markdown text doc := parse(md_text) - + // Create a navigator mut nav := new_navigator(doc) - + // Find all headings headings := nav.find_all_by_type(.heading) println('Found ${headings.len} headings:') @@ -51,28 +51,28 @@ Footnote reference[^1] level := heading.attributes['level'] println(' ${'#'.repeat(level.int())} ${heading.content}') } - + // Find the first code block if code_block := nav.find_by_type(.code_block) { language := code_block.attributes['language'] println('\nFound code block in language: ${language}') println('```${language}\n${code_block.content}```') } - + // Find all list items list_items := nav.find_all_by_type(.list_item) println('\nFound ${list_items.len} list items:') for item in list_items { println(' - ${item.content}') } - + // Find content containing specific text if element := nav.find_by_content('blockquote') { println('\nFound element containing "blockquote":') println(' Type: ${element.typ}') println(' Content: ${element.content}') } - + // Find table cells table_cells := nav.find_all_by_type(.table_cell) println('\nFound ${table_cells.len} table cells:') @@ -81,7 +81,7 @@ Footnote reference[^1] is_header := cell.attributes['is_header'] or { 'false' } println(' Cell: "${cell.content}" (align: ${alignment}, header: ${is_header})') } - + // Find footnotes println('\nFootnotes:') for id, footnote in nav.footnotes() { @@ -114,19 +114,19 @@ fn main() { // Parse the markdown text doc := parse(md_text) - + // Render as structure mut structure_renderer := new_structure_renderer() structure := structure_renderer.render(doc) println('=== STRUCTURE RENDERING ===') println(structure) - + // Render as plain text mut plain_text_renderer := new_plain_text_renderer() plain_text := plain_text_renderer.render(doc) println('=== PLAIN TEXT RENDERING ===') println(plain_text) - + // Using convenience functions println('=== USING CONVENIENCE FUNCTIONS ===') println(to_structure(md_text)) @@ -137,7 +137,7 @@ fn main() { pub fn main() { println('=== NAVIGATION EXAMPLE ===') example_navigation() - + println('\n=== RENDERING EXAMPLE ===') example_rendering() } diff --git a/lib/data/markdownparser2/markdown.v b/lib/data/markdownparser2/markdown.v index 0795cbc1..2ac4b081 100644 --- a/lib/data/markdownparser2/markdown.v +++ b/lib/data/markdownparser2/markdown.v @@ -4,12 +4,12 @@ module markdownparser2 @[heap] pub struct MarkdownElement { pub: - typ ElementType - content string + typ ElementType + content string line_number int - column int + column int pub mut: - children []&MarkdownElement + children []&MarkdownElement attributes map[string]string } @@ -42,19 +42,19 @@ pub enum ElementType { // MarkdownDocument represents a parsed markdown document pub struct MarkdownDocument { pub mut: - root &MarkdownElement + root &MarkdownElement footnotes map[string]&MarkdownElement } // Creates a new markdown document pub fn new_document() MarkdownDocument { root := &MarkdownElement{ - typ: .document - content: '' + typ: .document + content: '' children: [] } return MarkdownDocument{ - root: root + root: root footnotes: map[string]&MarkdownElement{} } } @@ -62,11 +62,11 @@ pub fn new_document() MarkdownDocument { // Parses markdown text and returns a MarkdownDocument pub fn parse(text string) MarkdownDocument { mut parser := Parser{ - text: text - pos: 0 - line: 1 + text: text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } return parser.parse() } diff --git a/lib/data/markdownparser2/navigator.v b/lib/data/markdownparser2/navigator.v index bf9d0453..1d6cdd49 100644 --- a/lib/data/markdownparser2/navigator.v +++ b/lib/data/markdownparser2/navigator.v @@ -12,7 +12,7 @@ pub mut: // Creates a new navigator for a markdown document pub fn new_navigator(doc MarkdownDocument) Navigator { return Navigator{ - doc: doc + doc: doc current_element: doc.root } } @@ -33,18 +33,18 @@ fn (mut n Navigator) find_by_type_from(element &MarkdownElement, typ ElementType n.current_element = element return element } - + for child in element.children { if child.typ == typ { n.current_element = child return child } - + if result := n.find_by_type_from(child, typ) { return result } } - + return none } @@ -56,19 +56,19 @@ pub fn (mut n Navigator) find_all_by_type(typ ElementType) []&MarkdownElement { // Find all elements by type starting from a specific element fn (mut n Navigator) find_all_by_type_from(element &MarkdownElement, typ ElementType) []&MarkdownElement { mut results := []&MarkdownElement{} - + if element.typ == typ { results << element } - + for child in element.children { if child.typ == typ { results << child } - + results << n.find_all_by_type_from(child, typ) } - + return results } @@ -83,18 +83,18 @@ fn (mut n Navigator) find_by_content_from(element &MarkdownElement, text string) n.current_element = element return element } - + for child in element.children { if child.content.contains(text) { n.current_element = child return child } - + if result := n.find_by_content_from(child, text) { return result } } - + return none } @@ -106,19 +106,19 @@ pub fn (mut n Navigator) find_all_by_content(text string) []&MarkdownElement { // Find all elements by content starting from a specific element fn (mut n Navigator) find_all_by_content_from(element &MarkdownElement, text string) []&MarkdownElement { mut results := []&MarkdownElement{} - + if element.content.contains(text) { results << element } - + for child in element.children { if child.content.contains(text) { results << child } - + results << n.find_all_by_content_from(child, text) } - + return results } @@ -133,18 +133,18 @@ fn (mut n Navigator) find_by_attribute_from(element &MarkdownElement, key string n.current_element = element return element } - + for child in element.children { if child.attributes[key] == value { n.current_element = child return child } - + if result := n.find_by_attribute_from(child, key, value) { return result } } - + return none } @@ -156,19 +156,19 @@ pub fn (mut n Navigator) find_all_by_attribute(key string, value string) []&Mark // Find all elements by attribute starting from a specific element fn (mut n Navigator) find_all_by_attribute_from(element &MarkdownElement, key string, value string) []&MarkdownElement { mut results := []&MarkdownElement{} - + if element.attributes[key] == value { results << element } - + for child in element.children { if child.attributes[key] == value { results << child } - + results << n.find_all_by_attribute_from(child, key, value) } - + return results } @@ -184,12 +184,12 @@ fn (mut n Navigator) find_parent_from(root &MarkdownElement, target &MarkdownEle n.current_element = root return root } - + if result := n.find_parent_from(child, target) { return result } } - + return none } @@ -201,38 +201,38 @@ pub fn (mut n Navigator) parent() ?&MarkdownElement { // Get the next sibling of the current element pub fn (mut n Navigator) next_sibling() ?&MarkdownElement { parent := n.parent() or { return none } - + mut found := false for child in parent.children { if found { n.current_element = child return child } - + if child == n.current_element { found = true } } - + return none } // Get the previous sibling of the current element pub fn (mut n Navigator) prev_sibling() ?&MarkdownElement { parent := n.parent() or { return none } - + mut prev := &MarkdownElement(unsafe { nil }) for i, child in parent.children { if child == n.current_element && prev != unsafe { nil } { n.current_element = prev return prev } - + if i < parent.children.len - 1 { prev = parent.children[i] } } - + return none } @@ -241,7 +241,7 @@ pub fn (mut n Navigator) first_child() ?&MarkdownElement { if n.current_element.children.len == 0 { return none } - + n.current_element = n.current_element.children[0] return n.current_element } @@ -251,7 +251,7 @@ pub fn (mut n Navigator) last_child() ?&MarkdownElement { if n.current_element.children.len == 0 { return none } - + n.current_element = n.current_element.children[n.current_element.children.len - 1] return n.current_element } @@ -266,6 +266,6 @@ pub fn (n Navigator) footnote(id string) ?&MarkdownElement { if id in n.doc.footnotes { return unsafe { n.doc.footnotes[id] } } - + return none } diff --git a/lib/data/markdownparser2/parser_block.v b/lib/data/markdownparser2/parser_block.v index 4bf51dbe..fa990889 100644 --- a/lib/data/markdownparser2/parser_block.v +++ b/lib/data/markdownparser2/parser_block.v @@ -4,12 +4,12 @@ module markdownparser2 fn (mut p Parser) parse_block() ?&MarkdownElement { // Skip whitespace at the beginning of a line p.skip_whitespace() - + // Check for end of input if p.pos >= p.text.len { return none } - + // Check for different block types if p.text[p.pos] == `#` { return p.parse_heading() @@ -17,7 +17,7 @@ fn (mut p Parser) parse_block() ?&MarkdownElement { return p.parse_blockquote() } else if p.text[p.pos] == `-` && p.peek(1) == `-` && p.peek(2) == `-` { return p.parse_horizontal_rule() - } else if p.text[p.pos] == `\`` && p.peek(1) == `\`` && p.peek(2) == `\`` { + } else if p.text[p.pos] == `\`` && p.peek(1) == `\`` && p.peek(2) == `\`` { return p.parse_fenced_code_block() } else if p.is_list_start() { return p.parse_list() diff --git a/lib/data/markdownparser2/parser_blockquote.v b/lib/data/markdownparser2/parser_blockquote.v index 2c883d57..2973dd35 100644 --- a/lib/data/markdownparser2/parser_blockquote.v +++ b/lib/data/markdownparser2/parser_blockquote.v @@ -5,17 +5,17 @@ fn (mut p Parser) parse_blockquote() ?&MarkdownElement { start_pos := p.pos // Unused but kept for consistency start_line := p.line start_column := p.column - + // Skip the > character p.pos++ p.column++ - + // Skip whitespace after > p.skip_whitespace() - + mut content := '' mut lines := []string{} - + // Read the first line for p.pos < p.text.len && p.text[p.pos] != `\n` { content += p.text[p.pos].ascii_str() @@ -23,14 +23,14 @@ fn (mut p Parser) parse_blockquote() ?&MarkdownElement { p.column++ } lines << content - + // Skip the newline if p.pos < p.text.len && p.text[p.pos] == `\n` { p.pos++ p.line++ p.column = 1 } - + // Read additional lines of the blockquote for p.pos < p.text.len { // Check if the line starts with > @@ -38,7 +38,7 @@ fn (mut p Parser) parse_blockquote() ?&MarkdownElement { p.pos++ p.column++ p.skip_whitespace() - + mut line := '' for p.pos < p.text.len && p.text[p.pos] != `\n` { line += p.text[p.pos].ascii_str() @@ -46,7 +46,7 @@ fn (mut p Parser) parse_blockquote() ?&MarkdownElement { p.column++ } lines << line - + // Skip the newline if p.pos < p.text.len && p.text[p.pos] == `\n` { p.pos++ @@ -58,7 +58,7 @@ fn (mut p Parser) parse_blockquote() ?&MarkdownElement { p.pos++ p.line++ p.column = 1 - + // Check if the next line is part of the blockquote if p.pos < p.text.len && p.text[p.pos] == `>` { lines << '' @@ -70,29 +70,29 @@ fn (mut p Parser) parse_blockquote() ?&MarkdownElement { break } } - + // Join the lines with newlines content = lines.join('\n') - + // Create the blockquote element mut blockquote := &MarkdownElement{ - typ: .blockquote - content: content + typ: .blockquote + content: content line_number: start_line - column: start_column + column: start_column } - + // Parse nested blocks within the blockquote mut nested_parser := Parser{ - text: content - pos: 0 - line: 1 + text: content + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + nested_doc := nested_parser.parse() blockquote.children = nested_doc.root.children - + return blockquote } diff --git a/lib/data/markdownparser2/parser_blockquote_test.v b/lib/data/markdownparser2/parser_blockquote_test.v index ead553b6..8ccac3e8 100644 --- a/lib/data/markdownparser2/parser_blockquote_test.v +++ b/lib/data/markdownparser2/parser_blockquote_test.v @@ -4,20 +4,20 @@ fn test_parse_blockquote_basic() { // Test basic blockquote parsing md_text := '> This is a blockquote' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_blockquote() or { panic('Failed to parse blockquote') } - + assert element.typ == .blockquote assert element.content == 'This is a blockquote' assert element.line_number == 1 assert element.column == 1 - + // Blockquote should have a child paragraph assert element.children.len == 1 assert element.children[0].typ == .paragraph @@ -28,18 +28,18 @@ fn test_parse_blockquote_multiline() { // Test multi-line blockquote md_text := '> Line 1\n> Line 2\n> Line 3' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_blockquote() or { panic('Failed to parse multi-line blockquote') } - + assert element.typ == .blockquote assert element.content == 'Line 1\nLine 2\nLine 3' - + // Blockquote should have a child paragraph assert element.children.len == 1 assert element.children[0].typ == .paragraph @@ -50,18 +50,18 @@ fn test_parse_blockquote_with_empty_lines() { // Test blockquote with empty lines md_text := '> Line 1\n>\n> Line 3' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_blockquote() or { panic('Failed to parse blockquote with empty lines') } - + assert element.typ == .blockquote assert element.content == 'Line 1\n\nLine 3' - + // Blockquote should have two paragraphs separated by the empty line assert element.children.len == 2 assert element.children[0].typ == .paragraph @@ -74,18 +74,20 @@ fn test_parse_blockquote_with_nested_elements() { // Test blockquote with nested elements md_text := '> # Heading\n> \n> - List item 1\n> - List item 2' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_blockquote() or { panic('Failed to parse blockquote with nested elements') } - + + element := parser.parse_blockquote() or { + panic('Failed to parse blockquote with nested elements') + } + assert element.typ == .blockquote assert element.content == '# Heading\n\n- List item 1\n- List item 2' - + // The nested parser will parse the content as a document // and the blockquote will have the document's children // In this case, it should have a heading, an empty paragraph, and a paragraph with the list items @@ -105,18 +107,18 @@ fn test_parse_blockquote_without_space() { // Test blockquote without space after > md_text := '>No space after >' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_blockquote() or { panic('Failed to parse blockquote without space') } - + assert element.typ == .blockquote assert element.content == 'No space after >' - + // Blockquote should have a child paragraph assert element.children.len == 1 assert element.children[0].typ == .paragraph @@ -128,24 +130,26 @@ fn test_parse_blockquote_with_lazy_continuation() { // Note: This is not currently supported by the parser, but could be added in the future md_text := '> Line 1\nLine 2 (lazy continuation)\n> Line 3' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_blockquote() or { panic('Failed to parse blockquote with lazy continuation') } - + + element := parser.parse_blockquote() or { + panic('Failed to parse blockquote with lazy continuation') + } + assert element.typ == .blockquote assert element.content == 'Line 1' - + // Current implementation doesn't support lazy continuation, // so the blockquote should end at the first line assert element.children.len == 1 assert element.children[0].typ == .paragraph assert element.children[0].content == 'Line 1' - + // Parser position should be at the start of the second line assert parser.pos == 9 // "> Line 1\n" is 9 characters assert parser.line == 2 diff --git a/lib/data/markdownparser2/parser_fenced_code_block.v b/lib/data/markdownparser2/parser_fenced_code_block.v index 056320bc..dffe0ac2 100644 --- a/lib/data/markdownparser2/parser_fenced_code_block.v +++ b/lib/data/markdownparser2/parser_fenced_code_block.v @@ -5,7 +5,7 @@ fn (mut p Parser) parse_fenced_code_block() ?&MarkdownElement { start_pos := p.pos start_line := p.line start_column := p.column - + // Check for opening fence (``` or ~~~) fence_char := p.text[p.pos] if fence_char != `\`` && fence_char != `~` { @@ -14,7 +14,7 @@ fn (mut p Parser) parse_fenced_code_block() ?&MarkdownElement { p.column = start_column return p.parse_paragraph() } - + // Count fence characters mut fence_len := 0 for p.pos < p.text.len && p.text[p.pos] == fence_char { @@ -22,7 +22,7 @@ fn (mut p Parser) parse_fenced_code_block() ?&MarkdownElement { p.pos++ p.column++ } - + // Must have at least 3 characters if fence_len < 3 { p.pos = start_pos @@ -30,7 +30,7 @@ fn (mut p Parser) parse_fenced_code_block() ?&MarkdownElement { p.column = start_column return p.parse_paragraph() } - + // Read language identifier mut language := '' for p.pos < p.text.len && p.text[p.pos] != `\n` { @@ -39,37 +39,37 @@ fn (mut p Parser) parse_fenced_code_block() ?&MarkdownElement { p.column++ } language = language.trim_space() - + // Skip the newline if p.pos < p.text.len && p.text[p.pos] == `\n` { p.pos++ p.line++ p.column = 1 } - + // Read code content until closing fence mut content := '' mut found_closing_fence := false - + for p.pos < p.text.len { // Check for closing fence if p.text[p.pos] == fence_char { mut i := p.pos mut count := 0 - + // Count fence characters for i < p.text.len && p.text[i] == fence_char { count++ i++ } - + // Check if it's a valid closing fence if count >= fence_len { // Skip to end of line for i < p.text.len && p.text[i] != `\n` { i++ } - + // Update position p.pos = i if p.pos < p.text.len && p.text[p.pos] == `\n` { @@ -77,15 +77,15 @@ fn (mut p Parser) parse_fenced_code_block() ?&MarkdownElement { p.line++ p.column = 1 } - + found_closing_fence = true break } } - + // Add character to content content += p.text[p.pos].ascii_str() - + // Move to next character if p.text[p.pos] == `\n` { p.line++ @@ -95,7 +95,7 @@ fn (mut p Parser) parse_fenced_code_block() ?&MarkdownElement { } p.pos++ } - + // If no closing fence was found, treat as paragraph if !found_closing_fence { p.pos = start_pos @@ -103,14 +103,14 @@ fn (mut p Parser) parse_fenced_code_block() ?&MarkdownElement { p.column = start_column return p.parse_paragraph() } - + // Create the code block element return &MarkdownElement{ - typ: .code_block - content: content + typ: .code_block + content: content line_number: start_line - column: start_column - attributes: { + column: start_column + attributes: { 'language': language } } diff --git a/lib/data/markdownparser2/parser_footnote_definition.v b/lib/data/markdownparser2/parser_footnote_definition.v index ceafe28a..a8fc4850 100644 --- a/lib/data/markdownparser2/parser_footnote_definition.v +++ b/lib/data/markdownparser2/parser_footnote_definition.v @@ -5,15 +5,15 @@ fn (mut p Parser) parse_footnote_definition() ?&MarkdownElement { start_pos := p.pos start_line := p.line start_column := p.column - + // Skip the [ character p.pos++ p.column++ - + // Skip the ^ character p.pos++ p.column++ - + // Read the footnote identifier mut identifier := '' for p.pos < p.text.len && p.text[p.pos] != `]` { @@ -21,7 +21,7 @@ fn (mut p Parser) parse_footnote_definition() ?&MarkdownElement { p.pos++ p.column++ } - + // Skip the ] character if p.pos < p.text.len && p.text[p.pos] == `]` { p.pos++ @@ -32,7 +32,7 @@ fn (mut p Parser) parse_footnote_definition() ?&MarkdownElement { p.column = start_column return p.parse_paragraph() } - + // Skip the : character if p.pos < p.text.len && p.text[p.pos] == `:` { p.pos++ @@ -43,14 +43,14 @@ fn (mut p Parser) parse_footnote_definition() ?&MarkdownElement { p.column = start_column return p.parse_paragraph() } - + // Skip whitespace p.skip_whitespace() - + // Read the footnote content mut content := '' mut lines := []string{} - + // Read the first line for p.pos < p.text.len && p.text[p.pos] != `\n` { content += p.text[p.pos].ascii_str() @@ -58,14 +58,14 @@ fn (mut p Parser) parse_footnote_definition() ?&MarkdownElement { p.column++ } lines << content - + // Skip the newline if p.pos < p.text.len && p.text[p.pos] == `\n` { p.pos++ p.line++ p.column = 1 } - + // Read additional lines of the footnote for p.pos < p.text.len { // Check if the line is indented (part of the current footnote) @@ -77,7 +77,7 @@ fn (mut p Parser) parse_footnote_definition() ?&MarkdownElement { p.pos++ p.column++ } - + // If indented enough, it's part of the current footnote if indent >= 2 { mut line := '' @@ -87,7 +87,7 @@ fn (mut p Parser) parse_footnote_definition() ?&MarkdownElement { p.column++ } lines << line - + // Skip the newline if p.pos < p.text.len && p.text[p.pos] == `\n` { p.pos++ @@ -103,7 +103,7 @@ fn (mut p Parser) parse_footnote_definition() ?&MarkdownElement { p.pos++ p.line++ p.column = 1 - + // Check if the next line is indented if p.pos < p.text.len && (p.text[p.pos] == ` ` || p.text[p.pos] == `\t`) { lines << '' @@ -115,26 +115,26 @@ fn (mut p Parser) parse_footnote_definition() ?&MarkdownElement { break } } - + // Join the lines with newlines content = lines.join('\n') - + // Create the footnote element mut footnote := &MarkdownElement{ - typ: .footnote - content: content + typ: .footnote + content: content line_number: start_line - column: start_column - attributes: { + column: start_column + attributes: { 'identifier': identifier } } - + // Parse inline elements within the footnote footnote.children = p.parse_inline(content) - + // Add the footnote to the document p.doc.footnotes[identifier] = footnote - + return footnote } diff --git a/lib/data/markdownparser2/parser_footnote_definition_test.v b/lib/data/markdownparser2/parser_footnote_definition_test.v index 09184e12..d0d2f59b 100644 --- a/lib/data/markdownparser2/parser_footnote_definition_test.v +++ b/lib/data/markdownparser2/parser_footnote_definition_test.v @@ -4,21 +4,23 @@ fn test_parse_footnote_definition_basic() { // Test basic footnote definition parsing md_text := '[^1]: Footnote text' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_footnote_definition() or { panic('Failed to parse footnote definition') } - + + element := parser.parse_footnote_definition() or { + panic('Failed to parse footnote definition') + } + assert element.typ == .footnote assert element.content == 'Footnote text' assert element.attributes['identifier'] == '1' assert element.line_number == 1 assert element.column == 1 - + // Check that the footnote was added to the document assert parser.doc.footnotes.len == 1 assert parser.doc.footnotes['1'] == element @@ -28,19 +30,21 @@ fn test_parse_footnote_definition_with_multiline_content() { // Test footnote definition with multiline content md_text := '[^note]: Line 1\n Line 2\n Line 3' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_footnote_definition() or { panic('Failed to parse footnote definition with multiline content') } - + + element := parser.parse_footnote_definition() or { + panic('Failed to parse footnote definition with multiline content') + } + assert element.typ == .footnote assert element.content == 'Line 1\nLine 2\nLine 3' assert element.attributes['identifier'] == 'note' - + // Check that the footnote was added to the document assert parser.doc.footnotes.len == 1 assert parser.doc.footnotes['note'] == element @@ -50,15 +54,17 @@ fn test_parse_footnote_definition_with_empty_line() { // Test footnote definition with empty line md_text := '[^1]: Line 1\n\n Line 3' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_footnote_definition() or { panic('Failed to parse footnote definition with empty line') } - + + element := parser.parse_footnote_definition() or { + panic('Failed to parse footnote definition with empty line') + } + assert element.typ == .footnote assert element.content == 'Line 1\n\nLine 3' assert element.attributes['identifier'] == '1' @@ -68,19 +74,21 @@ fn test_parse_footnote_definition_with_insufficient_indent() { // Test footnote definition with insufficient indent (should not be part of the footnote) md_text := '[^1]: Line 1\n Line 2' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_footnote_definition() or { panic('Failed to parse footnote definition with insufficient indent') } - + + element := parser.parse_footnote_definition() or { + panic('Failed to parse footnote definition with insufficient indent') + } + assert element.typ == .footnote assert element.content == 'Line 1' assert element.attributes['identifier'] == '1' - + // Parser position should be at the start of the next line assert parser.pos == 14 // "[^1]: Line 1\n" is 14 characters assert parser.line == 2 @@ -91,15 +99,17 @@ fn test_parse_footnote_definition_with_alphanumeric_identifier() { // Test footnote definition with alphanumeric identifier md_text := '[^abc123]: Footnote text' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_footnote_definition() or { panic('Failed to parse footnote definition with alphanumeric identifier') } - + + element := parser.parse_footnote_definition() or { + panic('Failed to parse footnote definition with alphanumeric identifier') + } + assert element.typ == .footnote assert element.content == 'Footnote text' assert element.attributes['identifier'] == 'abc123' @@ -109,15 +119,17 @@ fn test_parse_footnote_definition_with_special_chars_identifier() { // Test footnote definition with special characters in identifier md_text := '[^a-b_c]: Footnote text' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_footnote_definition() or { panic('Failed to parse footnote definition with special chars identifier') } - + + element := parser.parse_footnote_definition() or { + panic('Failed to parse footnote definition with special chars identifier') + } + assert element.typ == .footnote assert element.content == 'Footnote text' assert element.attributes['identifier'] == 'a-b_c' @@ -127,15 +139,17 @@ fn test_parse_footnote_definition_invalid_no_colon() { // Test invalid footnote definition (no colon) md_text := '[^1] No colon' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_footnote_definition() or { panic('Should parse as paragraph, not fail') } - + + element := parser.parse_footnote_definition() or { + panic('Should parse as paragraph, not fail') + } + // Current implementation parses this as a paragraph assert element.typ == .paragraph } @@ -144,15 +158,17 @@ fn test_parse_footnote_definition_invalid_no_identifier() { // Test invalid footnote definition (no identifier) md_text := '[^]: Empty identifier' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_footnote_definition() or { panic('Should parse as paragraph, not fail') } - + + element := parser.parse_footnote_definition() or { + panic('Should parse as paragraph, not fail') + } + // Current implementation parses this as a footnote with an empty identifier assert element.typ == .footnote } @@ -162,19 +178,21 @@ fn test_parse_footnote_definition_with_inline_elements() { // Note: Currently the parser doesn't parse inline elements separately md_text := '[^1]: Text with **bold** and *italic*' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_footnote_definition() or { panic('Failed to parse footnote definition with inline elements') } - + + element := parser.parse_footnote_definition() or { + panic('Failed to parse footnote definition with inline elements') + } + assert element.typ == .footnote assert element.content == 'Text with **bold** and *italic*' assert element.attributes['identifier'] == '1' - + // Currently, inline elements are not parsed separately assert element.children.len == 1 assert element.children[0].typ == .text @@ -185,27 +203,31 @@ fn test_parse_multiple_footnote_definitions() { // Test parsing multiple footnote definitions md_text := '[^1]: First footnote\n[^2]: Second footnote' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + // Parse first footnote - element1 := parser.parse_footnote_definition() or { panic('Failed to parse first footnote definition') } - + element1 := parser.parse_footnote_definition() or { + panic('Failed to parse first footnote definition') + } + assert element1.typ == .footnote assert element1.content == 'First footnote' assert element1.attributes['identifier'] == '1' - + // Parse second footnote - element2 := parser.parse_footnote_definition() or { panic('Failed to parse second footnote definition') } - + element2 := parser.parse_footnote_definition() or { + panic('Failed to parse second footnote definition') + } + assert element2.typ == .footnote assert element2.content == 'Second footnote' assert element2.attributes['identifier'] == '2' - + // Check that both footnotes were added to the document assert parser.doc.footnotes.len == 2 assert parser.doc.footnotes['1'] == element1 diff --git a/lib/data/markdownparser2/parser_heading.v b/lib/data/markdownparser2/parser_heading.v index f3a7b82d..e7d86f60 100644 --- a/lib/data/markdownparser2/parser_heading.v +++ b/lib/data/markdownparser2/parser_heading.v @@ -5,7 +5,7 @@ fn (mut p Parser) parse_heading() ?&MarkdownElement { start_pos := p.pos start_line := p.line start_column := p.column - + // Count the number of # characters mut level := 0 for p.pos < p.text.len && p.text[p.pos] == `#` && level < 6 { @@ -13,7 +13,7 @@ fn (mut p Parser) parse_heading() ?&MarkdownElement { p.pos++ p.column++ } - + // Must be followed by a space if p.pos >= p.text.len || (p.text[p.pos] != ` ` && p.text[p.pos] != `\t`) { p.pos = start_pos @@ -21,10 +21,10 @@ fn (mut p Parser) parse_heading() ?&MarkdownElement { p.column = start_column return p.parse_paragraph() } - + // Skip whitespace after # p.skip_whitespace() - + // Read the heading text until end of line mut content := '' for p.pos < p.text.len && p.text[p.pos] != `\n` { @@ -32,33 +32,33 @@ fn (mut p Parser) parse_heading() ?&MarkdownElement { p.pos++ p.column++ } - + // Skip the newline if p.pos < p.text.len && p.text[p.pos] == `\n` { p.pos++ p.line++ p.column = 1 } - + // Trim trailing whitespace and optional closing #s content = content.trim_right(' \t') for content.ends_with('#') { content = content.trim_right('#').trim_right(' \t') } - + // Create the heading element mut heading := &MarkdownElement{ - typ: .heading - content: content + typ: .heading + content: content line_number: start_line - column: start_column - attributes: { + column: start_column + attributes: { 'level': level.str() } } - + // Parse inline elements within the heading heading.children = p.parse_inline(content) - + return heading } diff --git a/lib/data/markdownparser2/parser_heading_test.v b/lib/data/markdownparser2/parser_heading_test.v index 9fa8f0eb..f22e882e 100644 --- a/lib/data/markdownparser2/parser_heading_test.v +++ b/lib/data/markdownparser2/parser_heading_test.v @@ -4,15 +4,15 @@ fn test_parse_heading_basic() { // Test basic heading parsing md_text := '# Heading 1' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_heading() or { panic('Failed to parse heading') } - + assert element.typ == .heading assert element.content == 'Heading 1' assert element.attributes['level'] == '1' @@ -30,21 +30,21 @@ fn test_parse_heading_all_levels() { '##### Heading 5', '###### Heading 6', ] - + for i, heading_text in headings { level := i + 1 mut parser := Parser{ - text: heading_text - pos: 0 - line: 1 + text: heading_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_heading() or { panic('Failed to parse heading level $level') } - + + element := parser.parse_heading() or { panic('Failed to parse heading level ${level}') } + assert element.typ == .heading - assert element.content == 'Heading $level' + assert element.content == 'Heading ${level}' assert element.attributes['level'] == level.str() } } @@ -53,15 +53,15 @@ fn test_parse_heading_with_trailing_hashes() { // Test heading with trailing hashes md_text := '# Heading 1 #####' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_heading() or { panic('Failed to parse heading with trailing hashes') } - + assert element.typ == .heading assert element.content == 'Heading 1' assert element.attributes['level'] == '1' @@ -71,15 +71,15 @@ fn test_parse_heading_with_extra_whitespace() { // Test heading with extra whitespace md_text := '# Heading with extra space ' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_heading() or { panic('Failed to parse heading with extra whitespace') } - + assert element.typ == .heading assert element.content == 'Heading with extra space' assert element.attributes['level'] == '1' @@ -89,15 +89,15 @@ fn test_parse_heading_invalid() { // Test invalid heading (no space after #) md_text := '#NoSpace' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_heading() or { panic('Should parse as paragraph, not fail') } - + // Should be parsed as paragraph, not heading assert element.typ == .paragraph assert element.content == '#NoSpace' @@ -107,19 +107,19 @@ fn test_parse_heading_with_newline() { // Test heading followed by newline md_text := '# Heading 1\nNext line' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_heading() or { panic('Failed to parse heading with newline') } - + assert element.typ == .heading assert element.content == 'Heading 1' assert element.attributes['level'] == '1' - + // Parser position should be at the start of the next line assert parser.pos == 12 // "# Heading 1\n" is 12 characters assert parser.line == 2 @@ -130,15 +130,15 @@ fn test_parse_heading_too_many_hashes() { // Test with more than 6 hashes (should be parsed as paragraph) md_text := '####### Heading 7' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_heading() or { panic('Failed to parse heading with too many hashes') } - + // Current implementation parses this as a paragraph, not a heading assert element.typ == .paragraph assert element.content == '####### Heading 7' diff --git a/lib/data/markdownparser2/parser_helpers_test.v b/lib/data/markdownparser2/parser_helpers_test.v index d3174f5f..fcb57b13 100644 --- a/lib/data/markdownparser2/parser_helpers_test.v +++ b/lib/data/markdownparser2/parser_helpers_test.v @@ -4,22 +4,22 @@ fn test_peek() { // Test peeking ahead in the text text := 'abc' mut parser := Parser{ - text: text - pos: 0 - line: 1 + text: text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + // Peek at different offsets assert parser.peek(0) == `a` assert parser.peek(1) == `b` assert parser.peek(2) == `c` - + // Peek beyond the end of the text assert parser.peek(3) == 0 assert parser.peek(100) == 0 - + // Peek from different positions parser.pos = 1 assert parser.peek(0) == `b` @@ -31,49 +31,49 @@ fn test_skip_whitespace() { // Test skipping whitespace text := ' abc' mut parser := Parser{ - text: text - pos: 0 - line: 1 + text: text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + // Skip whitespace at the beginning parser.skip_whitespace() assert parser.pos == 3 assert parser.column == 4 - + // Skip whitespace in the middle parser.pos = 4 parser.column = 5 parser.skip_whitespace() // No whitespace to skip assert parser.pos == 4 assert parser.column == 5 - + // Skip whitespace at the end text2 := 'abc ' mut parser2 := Parser{ - text: text2 - pos: 3 - line: 1 + text: text2 + pos: 3 + line: 1 column: 4 - doc: new_document() + doc: new_document() } - + parser2.skip_whitespace() assert parser2.pos == 6 assert parser2.column == 7 - + // Skip mixed whitespace text3 := ' \t abc' mut parser3 := Parser{ - text: text3 - pos: 0 - line: 1 + text: text3 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + parser3.skip_whitespace() assert parser3.pos == 3 assert parser3.column == 4 @@ -81,276 +81,276 @@ fn test_skip_whitespace() { fn test_is_list_start() { // Test checking if current position is the start of a list - + // Unordered list with dash text1 := '- List item' mut parser1 := Parser{ - text: text1 - pos: 0 - line: 1 + text: text1 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser1.is_list_start() == true - + // Unordered list with asterisk text2 := '* List item' mut parser2 := Parser{ - text: text2 - pos: 0 - line: 1 + text: text2 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser2.is_list_start() == true - + // Unordered list with plus text3 := '+ List item' mut parser3 := Parser{ - text: text3 - pos: 0 - line: 1 + text: text3 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser3.is_list_start() == true - + // Ordered list text4 := '1. List item' mut parser4 := Parser{ - text: text4 - pos: 0 - line: 1 + text: text4 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser4.is_list_start() == true - + // Ordered list with multiple digits text5 := '42. List item' mut parser5 := Parser{ - text: text5 - pos: 0 - line: 1 + text: text5 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser5.is_list_start() == true - + // Task list text6 := '- [ ] Task item' mut parser6 := Parser{ - text: text6 - pos: 0 - line: 1 + text: text6 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser6.is_list_start() == true - + // Task list with checked item text7 := '- [x] Task item' mut parser7 := Parser{ - text: text7 - pos: 0 - line: 1 + text: text7 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser7.is_list_start() == true - + // Not a list (no space after marker) text8 := '-No space' mut parser8 := Parser{ - text: text8 - pos: 0 - line: 1 + text: text8 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser8.is_list_start() == false - + // Not a list (no period after number) text9 := '1 No period' mut parser9 := Parser{ - text: text9 - pos: 0 - line: 1 + text: text9 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser9.is_list_start() == false - + // Not a list (no space after period) text10 := '1.No space' mut parser10 := Parser{ - text: text10 - pos: 0 - line: 1 + text: text10 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser10.is_list_start() == false } fn test_is_table_start() { // Test checking if current position is the start of a table - + // Basic table text1 := '|Column 1|Column 2|\n|---|---|' mut parser1 := Parser{ - text: text1 - pos: 0 - line: 1 + text: text1 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser1.is_table_start() == false // Current implementation returns false - + // Table without leading pipe text2 := 'Column 1|Column 2\n---|---' mut parser2 := Parser{ - text: text2 - pos: 0 - line: 1 + text: text2 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser2.is_table_start() == false // Current implementation requires leading pipe - + // Table with alignment text3 := '|Left|Center|Right|\n|:---|:---:|---:|' mut parser3 := Parser{ - text: text3 - pos: 0 - line: 1 + text: text3 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser3.is_table_start() == false // Current implementation returns false - + // Not a table (no second line) text4 := '|Column 1|Column 2|' mut parser4 := Parser{ - text: text4 - pos: 0 - line: 1 + text: text4 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser4.is_table_start() == false - + // Not a table (invalid separator line) text5 := '|Column 1|Column 2|\n|invalid|separator|' mut parser5 := Parser{ - text: text5 - pos: 0 - line: 1 + text: text5 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser5.is_table_start() == false - + // Not a table (no pipe) text6 := 'Not a table' mut parser6 := Parser{ - text: text6 - pos: 0 - line: 1 + text: text6 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser6.is_table_start() == false } fn test_is_footnote_definition() { // Test checking if current position is a footnote definition - + // Basic footnote text1 := '[^1]: Footnote text' mut parser1 := Parser{ - text: text1 - pos: 0 - line: 1 + text: text1 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser1.is_footnote_definition() == true - + // Footnote with alphanumeric identifier text2 := '[^abc123]: Footnote text' mut parser2 := Parser{ - text: text2 - pos: 0 - line: 1 + text: text2 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser2.is_footnote_definition() == true - + // Not a footnote (no colon) text3 := '[^1] No colon' mut parser3 := Parser{ - text: text3 - pos: 0 - line: 1 + text: text3 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser3.is_footnote_definition() == false - + // Not a footnote (no identifier) text4 := '[^]: Empty identifier' mut parser4 := Parser{ - text: text4 - pos: 0 - line: 1 + text: text4 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser4.is_footnote_definition() == false - + // Not a footnote (no caret) text5 := '[1]: Not a footnote' mut parser5 := Parser{ - text: text5 - pos: 0 - line: 1 + text: text5 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser5.is_footnote_definition() == false - + // Not a footnote (no brackets) text6 := '^1: Not a footnote' mut parser6 := Parser{ - text: text6 - pos: 0 - line: 1 + text: text6 + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + assert parser6.is_footnote_definition() == false } diff --git a/lib/data/markdownparser2/parser_horizontal_rule.v b/lib/data/markdownparser2/parser_horizontal_rule.v index eb9ded11..7296ed71 100644 --- a/lib/data/markdownparser2/parser_horizontal_rule.v +++ b/lib/data/markdownparser2/parser_horizontal_rule.v @@ -5,7 +5,7 @@ fn (mut p Parser) parse_horizontal_rule() ?&MarkdownElement { start_pos := p.pos start_line := p.line start_column := p.column - + // Check for at least 3 of the same character (-, *, _) hr_char := p.text[p.pos] if hr_char != `-` && hr_char != `*` && hr_char != `_` { @@ -14,14 +14,14 @@ fn (mut p Parser) parse_horizontal_rule() ?&MarkdownElement { p.column = start_column return p.parse_paragraph() } - + mut count := 0 for p.pos < p.text.len && p.text[p.pos] == hr_char { count++ p.pos++ p.column++ } - + // Must have at least 3 characters if count < 3 { p.pos = start_pos @@ -29,10 +29,10 @@ fn (mut p Parser) parse_horizontal_rule() ?&MarkdownElement { p.column = start_column return p.parse_paragraph() } - + // Skip whitespace p.skip_whitespace() - + // Must be at end of line if p.pos < p.text.len && p.text[p.pos] != `\n` { p.pos = start_pos @@ -40,19 +40,19 @@ fn (mut p Parser) parse_horizontal_rule() ?&MarkdownElement { p.column = start_column return p.parse_paragraph() } - + // Skip the newline if p.pos < p.text.len && p.text[p.pos] == `\n` { p.pos++ p.line++ p.column = 1 } - + // Create the horizontal rule element return &MarkdownElement{ - typ: .horizontal_rule - content: '' + typ: .horizontal_rule + content: '' line_number: start_line - column: start_column + column: start_column } } diff --git a/lib/data/markdownparser2/parser_horizontal_rule_test.v b/lib/data/markdownparser2/parser_horizontal_rule_test.v index 66867a58..25d8b22d 100644 --- a/lib/data/markdownparser2/parser_horizontal_rule_test.v +++ b/lib/data/markdownparser2/parser_horizontal_rule_test.v @@ -4,15 +4,15 @@ fn test_parse_horizontal_rule_basic() { // Test basic horizontal rule parsing with dashes md_text := '---' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_horizontal_rule() or { panic('Failed to parse horizontal rule') } - + assert element.typ == .horizontal_rule assert element.content == '' assert element.line_number == 1 @@ -23,15 +23,17 @@ fn test_parse_horizontal_rule_with_asterisks() { // Test horizontal rule with asterisks md_text := '***' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_horizontal_rule() or { panic('Failed to parse horizontal rule with asterisks') } - + + element := parser.parse_horizontal_rule() or { + panic('Failed to parse horizontal rule with asterisks') + } + assert element.typ == .horizontal_rule assert element.content == '' } @@ -40,15 +42,17 @@ fn test_parse_horizontal_rule_with_underscores() { // Test horizontal rule with underscores md_text := '___' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_horizontal_rule() or { panic('Failed to parse horizontal rule with underscores') } - + + element := parser.parse_horizontal_rule() or { + panic('Failed to parse horizontal rule with underscores') + } + assert element.typ == .horizontal_rule assert element.content == '' } @@ -57,15 +61,17 @@ fn test_parse_horizontal_rule_with_more_characters() { // Test horizontal rule with more than 3 characters md_text := '-----' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_horizontal_rule() or { panic('Failed to parse horizontal rule with more characters') } - + + element := parser.parse_horizontal_rule() or { + panic('Failed to parse horizontal rule with more characters') + } + assert element.typ == .horizontal_rule assert element.content == '' } @@ -74,17 +80,17 @@ fn test_parse_horizontal_rule_with_spaces() { // Test horizontal rule with spaces md_text := '- - -' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + // Current implementation doesn't support spaces between characters // so this should be parsed as a list item, not a horizontal rule element := parser.parse_horizontal_rule() or { panic('Should parse as paragraph, not fail') } - + // Should be parsed as paragraph, not horizontal rule assert element.typ == .paragraph } @@ -93,15 +99,17 @@ fn test_parse_horizontal_rule_with_whitespace() { // Test horizontal rule with whitespace md_text := '--- ' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_horizontal_rule() or { panic('Failed to parse horizontal rule with whitespace') } - + + element := parser.parse_horizontal_rule() or { + panic('Failed to parse horizontal rule with whitespace') + } + assert element.typ == .horizontal_rule assert element.content == '' } @@ -110,18 +118,20 @@ fn test_parse_horizontal_rule_with_newline() { // Test horizontal rule followed by newline md_text := '---\nNext line' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - - element := parser.parse_horizontal_rule() or { panic('Failed to parse horizontal rule with newline') } - + + element := parser.parse_horizontal_rule() or { + panic('Failed to parse horizontal rule with newline') + } + assert element.typ == .horizontal_rule assert element.content == '' - + // Parser position should be at the start of the next line assert parser.pos == 4 // "---\n" is 4 characters assert parser.line == 2 @@ -132,15 +142,15 @@ fn test_parse_horizontal_rule_invalid_too_few_chars() { // Test invalid horizontal rule (too few characters) md_text := '--' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_horizontal_rule() or { panic('Should parse as paragraph, not fail') } - + // Should be parsed as paragraph, not horizontal rule assert element.typ == .paragraph assert element.content == '--' @@ -150,15 +160,15 @@ fn test_parse_horizontal_rule_invalid_with_text() { // Test invalid horizontal rule (with text) md_text := '--- text' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_horizontal_rule() or { panic('Should parse as paragraph, not fail') } - + // Should be parsed as paragraph, not horizontal rule assert element.typ == .paragraph assert element.content == '--- text' @@ -168,15 +178,15 @@ fn test_parse_horizontal_rule_mixed_characters() { // Test horizontal rule with mixed characters (not supported) md_text := '-*-' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_horizontal_rule() or { panic('Should parse as paragraph, not fail') } - + // Should be parsed as paragraph, not horizontal rule assert element.typ == .paragraph assert element.content == '-*-' diff --git a/lib/data/markdownparser2/parser_inline.v b/lib/data/markdownparser2/parser_inline.v index 01ef4b52..19c63e28 100644 --- a/lib/data/markdownparser2/parser_inline.v +++ b/lib/data/markdownparser2/parser_inline.v @@ -3,20 +3,20 @@ module markdownparser2 // Parse inline elements within a block fn (mut p Parser) parse_inline(text string) []&MarkdownElement { mut elements := []&MarkdownElement{} - + // Simple implementation for now - just create a text element if text.trim_space() != '' { elements << &MarkdownElement{ - typ: .text - content: text + typ: .text + content: text line_number: 0 - column: 0 + column: 0 } } - + // TODO: Implement parsing of inline elements like bold, italic, links, etc. // This would involve scanning the text for markers like *, _, **, __, [, !, etc. // and creating appropriate elements for each. - + return elements } diff --git a/lib/data/markdownparser2/parser_inline_test.v b/lib/data/markdownparser2/parser_inline_test.v index e1662911..347d340a 100644 --- a/lib/data/markdownparser2/parser_inline_test.v +++ b/lib/data/markdownparser2/parser_inline_test.v @@ -5,15 +5,15 @@ fn test_parse_inline_basic() { // Note: Currently the parser doesn't parse inline elements separately text := 'Plain text' mut parser := Parser{ - text: '' - pos: 0 - line: 1 + text: '' + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + elements := parser.parse_inline(text) - + assert elements.len == 1 assert elements[0].typ == .text assert elements[0].content == 'Plain text' @@ -23,15 +23,15 @@ fn test_parse_inline_empty() { // Test parsing empty text text := '' mut parser := Parser{ - text: '' - pos: 0 - line: 1 + text: '' + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + elements := parser.parse_inline(text) - + assert elements.len == 0 // No elements for empty text } @@ -39,15 +39,15 @@ fn test_parse_inline_whitespace_only() { // Test parsing whitespace-only text text := ' ' mut parser := Parser{ - text: '' - pos: 0 - line: 1 + text: '' + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + elements := parser.parse_inline(text) - + assert elements.len == 0 // No elements for whitespace-only text } @@ -56,20 +56,20 @@ fn test_parse_inline_with_bold() { // Note: Currently the parser doesn't parse inline elements separately text := 'Text with **bold** content' mut parser := Parser{ - text: '' - pos: 0 - line: 1 + text: '' + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + elements := parser.parse_inline(text) - + // Currently, inline elements are not parsed separately assert elements.len == 1 assert elements[0].typ == .text assert elements[0].content == 'Text with **bold** content' - + // TODO: When inline parsing is implemented, this test should be updated to check for // proper parsing of bold elements } @@ -79,20 +79,20 @@ fn test_parse_inline_with_italic() { // Note: Currently the parser doesn't parse inline elements separately text := 'Text with *italic* content' mut parser := Parser{ - text: '' - pos: 0 - line: 1 + text: '' + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + elements := parser.parse_inline(text) - + // Currently, inline elements are not parsed separately assert elements.len == 1 assert elements[0].typ == .text assert elements[0].content == 'Text with *italic* content' - + // TODO: When inline parsing is implemented, this test should be updated to check for // proper parsing of italic elements } @@ -102,20 +102,20 @@ fn test_parse_inline_with_link() { // Note: Currently the parser doesn't parse inline elements separately text := 'Text with [link](https://example.com) content' mut parser := Parser{ - text: '' - pos: 0 - line: 1 + text: '' + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + elements := parser.parse_inline(text) - + // Currently, inline elements are not parsed separately assert elements.len == 1 assert elements[0].typ == .text assert elements[0].content == 'Text with [link](https://example.com) content' - + // TODO: When inline parsing is implemented, this test should be updated to check for // proper parsing of link elements } @@ -125,20 +125,20 @@ fn test_parse_inline_with_image() { // Note: Currently the parser doesn't parse inline elements separately text := 'Text with ![image](image.png) content' mut parser := Parser{ - text: '' - pos: 0 - line: 1 + text: '' + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + elements := parser.parse_inline(text) - + // Currently, inline elements are not parsed separately assert elements.len == 1 assert elements[0].typ == .text assert elements[0].content == 'Text with ![image](image.png) content' - + // TODO: When inline parsing is implemented, this test should be updated to check for // proper parsing of image elements } @@ -148,20 +148,20 @@ fn test_parse_inline_with_code() { // Note: Currently the parser doesn't parse inline elements separately text := 'Text with `code` content' mut parser := Parser{ - text: '' - pos: 0 - line: 1 + text: '' + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + elements := parser.parse_inline(text) - + // Currently, inline elements are not parsed separately assert elements.len == 1 assert elements[0].typ == .text assert elements[0].content == 'Text with `code` content' - + // TODO: When inline parsing is implemented, this test should be updated to check for // proper parsing of inline code elements } @@ -171,20 +171,20 @@ fn test_parse_inline_with_strikethrough() { // Note: Currently the parser doesn't parse inline elements separately text := 'Text with ~~strikethrough~~ content' mut parser := Parser{ - text: '' - pos: 0 - line: 1 + text: '' + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + elements := parser.parse_inline(text) - + // Currently, inline elements are not parsed separately assert elements.len == 1 assert elements[0].typ == .text assert elements[0].content == 'Text with ~~strikethrough~~ content' - + // TODO: When inline parsing is implemented, this test should be updated to check for // proper parsing of strikethrough elements } @@ -194,20 +194,20 @@ fn test_parse_inline_with_footnote_reference() { // Note: Currently the parser doesn't parse inline elements separately text := 'Text with footnote[^1] content' mut parser := Parser{ - text: '' - pos: 0 - line: 1 + text: '' + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + elements := parser.parse_inline(text) - + // Currently, inline elements are not parsed separately assert elements.len == 1 assert elements[0].typ == .text assert elements[0].content == 'Text with footnote[^1] content' - + // TODO: When inline parsing is implemented, this test should be updated to check for // proper parsing of footnote reference elements } @@ -217,20 +217,20 @@ fn test_parse_inline_with_multiple_elements() { // Note: Currently the parser doesn't parse inline elements separately text := 'Text with **bold**, *italic*, and [link](https://example.com) content' mut parser := Parser{ - text: '' - pos: 0 - line: 1 + text: '' + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + elements := parser.parse_inline(text) - + // Currently, inline elements are not parsed separately assert elements.len == 1 assert elements[0].typ == .text assert elements[0].content == 'Text with **bold**, *italic*, and [link](https://example.com) content' - + // TODO: When inline parsing is implemented, this test should be updated to check for // proper parsing of multiple inline elements } @@ -240,20 +240,20 @@ fn test_parse_inline_with_escaped_characters() { // Note: Currently the parser doesn't handle escaped characters specially text := 'Text with \\*escaped\\* characters' mut parser := Parser{ - text: '' - pos: 0 - line: 1 + text: '' + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + elements := parser.parse_inline(text) - + // Currently, escaped characters are not handled specially assert elements.len == 1 assert elements[0].typ == .text assert elements[0].content == 'Text with \\*escaped\\* characters' - + // TODO: When inline parsing is implemented, this test should be updated to check for // proper handling of escaped characters } diff --git a/lib/data/markdownparser2/parser_list.v b/lib/data/markdownparser2/parser_list.v index 66260f3f..6230024e 100644 --- a/lib/data/markdownparser2/parser_list.v +++ b/lib/data/markdownparser2/parser_list.v @@ -5,16 +5,16 @@ fn (mut p Parser) parse_list() ?&MarkdownElement { start_pos := p.pos start_line := p.line start_column := p.column - + // Determine list type (ordered or unordered) mut is_ordered := false mut start_number := 1 mut marker := '' - + if p.text[p.pos].is_digit() { // Ordered list is_ordered = true - + // Parse start number mut num_str := '' for p.pos < p.text.len && p.text[p.pos].is_digit() { @@ -22,9 +22,9 @@ fn (mut p Parser) parse_list() ?&MarkdownElement { p.pos++ p.column++ } - + start_number = num_str.int() - + // Must be followed by a period if p.pos >= p.text.len || p.text[p.pos] != `.` { p.pos = start_pos @@ -32,7 +32,7 @@ fn (mut p Parser) parse_list() ?&MarkdownElement { p.column = start_column return p.parse_paragraph() } - + marker = '.' p.pos++ p.column++ @@ -42,7 +42,7 @@ fn (mut p Parser) parse_list() ?&MarkdownElement { p.pos++ p.column++ } - + // Must be followed by whitespace if p.pos >= p.text.len || (p.text[p.pos] != ` ` && p.text[p.pos] != `\t`) { p.pos = start_pos @@ -50,20 +50,20 @@ fn (mut p Parser) parse_list() ?&MarkdownElement { p.column = start_column return p.parse_paragraph() } - + // Create the list element mut list := &MarkdownElement{ - typ: .list - content: '' + typ: .list + content: '' line_number: start_line - column: start_column - attributes: { + column: start_column + attributes: { 'ordered': is_ordered.str() - 'start': start_number.str() - 'marker': marker + 'start': start_number.str() + 'marker': marker } } - + // Parse list items for { // Parse list item @@ -72,14 +72,14 @@ fn (mut p Parser) parse_list() ?&MarkdownElement { } else { break } - + // Check if we're at the end of the list p.skip_whitespace() - + if p.pos >= p.text.len { break } - + // Check for next list item if is_ordered { if !p.text[p.pos].is_digit() { @@ -91,6 +91,6 @@ fn (mut p Parser) parse_list() ?&MarkdownElement { } } } - + return list } diff --git a/lib/data/markdownparser2/parser_list_item.v b/lib/data/markdownparser2/parser_list_item.v index 0c2466a9..ff5b1ff6 100644 --- a/lib/data/markdownparser2/parser_list_item.v +++ b/lib/data/markdownparser2/parser_list_item.v @@ -6,28 +6,28 @@ fn (mut p Parser) parse_list_item(is_ordered bool, marker string) ?&MarkdownElem start_pos := p.pos // Unused but kept for consistency start_line := p.line start_column := p.column - + // Skip whitespace p.skip_whitespace() - + // Check for task list item mut is_task := false mut is_completed := false - - if p.pos + 3 < p.text.len && p.text[p.pos] == `[` && - (p.text[p.pos + 1] == ` ` || p.text[p.pos + 1] == `x` || p.text[p.pos + 1] == `X`) && - p.text[p.pos + 2] == `]` && (p.text[p.pos + 3] == ` ` || p.text[p.pos + 3] == `\t`) { + + if p.pos + 3 < p.text.len && p.text[p.pos] == `[` + && (p.text[p.pos + 1] == ` ` || p.text[p.pos + 1] == `x` || p.text[p.pos + 1] == `X`) + && p.text[p.pos + 2] == `]` && (p.text[p.pos + 3] == ` ` || p.text[p.pos + 3] == `\t`) { is_task = true is_completed = p.text[p.pos + 1] == `x` || p.text[p.pos + 1] == `X` p.pos += 3 p.column += 3 p.skip_whitespace() } - + // Read item content until end of line or next list item mut content := '' mut lines := []string{} - + // Read the first line for p.pos < p.text.len && p.text[p.pos] != `\n` { content += p.text[p.pos].ascii_str() @@ -35,14 +35,14 @@ fn (mut p Parser) parse_list_item(is_ordered bool, marker string) ?&MarkdownElem p.column++ } lines << content - + // Skip the newline if p.pos < p.text.len && p.text[p.pos] == `\n` { p.pos++ p.line++ p.column = 1 } - + // Read additional lines of the list item for p.pos < p.text.len { // Check if the line is indented (part of the current item) @@ -54,7 +54,7 @@ fn (mut p Parser) parse_list_item(is_ordered bool, marker string) ?&MarkdownElem p.pos++ p.column++ } - + // If indented enough, it's part of the current item if indent >= 2 { mut line := '' @@ -64,7 +64,7 @@ fn (mut p Parser) parse_list_item(is_ordered bool, marker string) ?&MarkdownElem p.column++ } lines << line - + // Skip the newline if p.pos < p.text.len && p.text[p.pos] == `\n` { p.pos++ @@ -80,7 +80,7 @@ fn (mut p Parser) parse_list_item(is_ordered bool, marker string) ?&MarkdownElem p.pos++ p.line++ p.column = 1 - + // Check if the next line is indented if p.pos < p.text.len && (p.text[p.pos] == ` ` || p.text[p.pos] == `\t`) { lines << '' @@ -92,17 +92,17 @@ fn (mut p Parser) parse_list_item(is_ordered bool, marker string) ?&MarkdownElem break } } - + // Join the lines with newlines content = lines.join('\n') - + // Create the list item element mut item := &MarkdownElement{ - typ: if is_task { .task_list_item } else { .list_item } - content: content + typ: if is_task { .task_list_item } else { .list_item } + content: content line_number: start_line - column: start_column - attributes: if is_task { + column: start_column + attributes: if is_task { { 'completed': is_completed.str() } @@ -110,9 +110,9 @@ fn (mut p Parser) parse_list_item(is_ordered bool, marker string) ?&MarkdownElem map[string]string{} } } - + // Parse inline elements within the list item item.children = p.parse_inline(content) - + return item } diff --git a/lib/data/markdownparser2/parser_main.v b/lib/data/markdownparser2/parser_main.v index 80ac997a..b471854d 100644 --- a/lib/data/markdownparser2/parser_main.v +++ b/lib/data/markdownparser2/parser_main.v @@ -3,26 +3,26 @@ module markdownparser2 // Parser is responsible for parsing markdown text struct Parser { mut: - text string - pos int - line int + text string + pos int + line int column int - doc MarkdownDocument + doc MarkdownDocument } // Main parsing function fn (mut p Parser) parse() MarkdownDocument { p.doc = new_document() - + // Parse blocks until end of input for p.pos < p.text.len { element := p.parse_block() or { break } p.doc.root.children << element } - + // Process footnotes p.process_footnotes() - + return p.doc } @@ -32,16 +32,16 @@ fn (mut p Parser) process_footnotes() { if p.doc.footnotes.len == 0 { return } - + // Add a horizontal rule before footnotes hr := &MarkdownElement{ - typ: .horizontal_rule - content: '' + typ: .horizontal_rule + content: '' line_number: p.line - column: p.column + column: p.column } p.doc.root.children << hr - + // Add footnotes section for _, footnote in p.doc.footnotes { p.doc.root.children << footnote diff --git a/lib/data/markdownparser2/parser_paragraph.v b/lib/data/markdownparser2/parser_paragraph.v index fe160e08..72301e1b 100644 --- a/lib/data/markdownparser2/parser_paragraph.v +++ b/lib/data/markdownparser2/parser_paragraph.v @@ -6,10 +6,10 @@ fn (mut p Parser) parse_paragraph() ?&MarkdownElement { start_pos := p.pos // Unused but kept for consistency start_line := p.line start_column := p.column - + mut content := '' mut lines := []string{} - + // Read the first line for p.pos < p.text.len && p.text[p.pos] != `\n` { content += p.text[p.pos].ascii_str() @@ -17,14 +17,14 @@ fn (mut p Parser) parse_paragraph() ?&MarkdownElement { p.column++ } lines << content - + // Skip the newline if p.pos < p.text.len && p.text[p.pos] == `\n` { p.pos++ p.line++ p.column = 1 } - + // Read additional lines of the paragraph for p.pos < p.text.len { // Check if the line is empty (end of paragraph) @@ -34,15 +34,15 @@ fn (mut p Parser) parse_paragraph() ?&MarkdownElement { p.column = 1 break } - + // Check if the line starts with a block element - if p.text[p.pos] == `#` || p.text[p.pos] == `>` || - (p.text[p.pos] == `-` && p.peek(1) == `-` && p.peek(2) == `-`) || - (p.text[p.pos] == `\`` && p.peek(1) == `\`` && p.peek(2) == `\``) || - p.is_list_start() || p.is_table_start() || p.is_footnote_definition() { + if p.text[p.pos] == `#` || p.text[p.pos] == `>` + || (p.text[p.pos] == `-` && p.peek(1) == `-` && p.peek(2) == `-`) + || (p.text[p.pos] == `\`` && p.peek(1) == `\`` && p.peek(2) == `\``) + || p.is_list_start() || p.is_table_start() || p.is_footnote_definition() { break } - + // Read the line mut line := '' for p.pos < p.text.len && p.text[p.pos] != `\n` { @@ -51,7 +51,7 @@ fn (mut p Parser) parse_paragraph() ?&MarkdownElement { p.column++ } lines << line - + // Skip the newline if p.pos < p.text.len && p.text[p.pos] == `\n` { p.pos++ @@ -59,20 +59,20 @@ fn (mut p Parser) parse_paragraph() ?&MarkdownElement { p.column = 1 } } - + // Join the lines with spaces content = lines.join(' ') - + // Create the paragraph element mut paragraph := &MarkdownElement{ - typ: .paragraph - content: content + typ: .paragraph + content: content line_number: start_line - column: start_column + column: start_column } - + // Parse inline elements within the paragraph paragraph.children = p.parse_inline(content) - + return paragraph } diff --git a/lib/data/markdownparser2/parser_table.v b/lib/data/markdownparser2/parser_table.v index d8e9e453..ac3b392b 100644 --- a/lib/data/markdownparser2/parser_table.v +++ b/lib/data/markdownparser2/parser_table.v @@ -6,32 +6,32 @@ fn (mut p Parser) parse_table() ?&MarkdownElement { start_pos := p.pos // Unused but kept for consistency start_line := p.line start_column := p.column - + // Create the table element mut table := &MarkdownElement{ - typ: .table - content: '' + typ: .table + content: '' line_number: start_line - column: start_column + column: start_column } - + // Parse header row mut header_row := &MarkdownElement{ - typ: .table_row - content: '' + typ: .table_row + content: '' line_number: p.line - column: p.column - attributes: { + column: p.column + attributes: { 'is_header': 'true' } } - + // Skip initial pipe if present if p.text[p.pos] == `|` { p.pos++ p.column++ } - + // Parse header cells for p.pos < p.text.len && p.text[p.pos] != `\n` { // Parse cell content @@ -41,21 +41,21 @@ fn (mut p Parser) parse_table() ?&MarkdownElement { p.pos++ p.column++ } - + // Create cell element cell := &MarkdownElement{ - typ: .table_cell - content: cell_content.trim_space() + typ: .table_cell + content: cell_content.trim_space() line_number: p.line - column: p.column - cell_content.len - attributes: { + column: p.column - cell_content.len + attributes: { 'is_header': 'true' } } - + // Add cell to row header_row.children << cell - + // Skip pipe if p.pos < p.text.len && p.text[p.pos] == `|` { p.pos++ @@ -64,56 +64,56 @@ fn (mut p Parser) parse_table() ?&MarkdownElement { break } } - + // Skip newline if p.pos < p.text.len && p.text[p.pos] == `\n` { p.pos++ p.line++ p.column = 1 } - + // Add header row to table table.children << header_row - + // Parse separator row (---|---|...) // Skip initial pipe if present if p.pos < p.text.len && p.text[p.pos] == `|` { p.pos++ p.column++ } - + // Parse alignment information mut alignments := []string{} - + for p.pos < p.text.len && p.text[p.pos] != `\n` { // Skip whitespace for p.pos < p.text.len && (p.text[p.pos] == ` ` || p.text[p.pos] == `\t`) { p.pos++ p.column++ } - + // Check alignment mut left_colon := false mut right_colon := false - + if p.pos < p.text.len && p.text[p.pos] == `:` { left_colon = true p.pos++ p.column++ } - + // Skip dashes for p.pos < p.text.len && p.text[p.pos] == `-` { p.pos++ p.column++ } - + if p.pos < p.text.len && p.text[p.pos] == `:` { right_colon = true p.pos++ p.column++ } - + // Determine alignment mut alignment := 'left' // default if left_colon && right_colon { @@ -121,15 +121,15 @@ fn (mut p Parser) parse_table() ?&MarkdownElement { } else if right_colon { alignment = 'right' } - + alignments << alignment - + // Skip whitespace for p.pos < p.text.len && (p.text[p.pos] == ` ` || p.text[p.pos] == `\t`) { p.pos++ p.column++ } - + // Skip pipe if p.pos < p.text.len && p.text[p.pos] == `|` { p.pos++ @@ -138,37 +138,37 @@ fn (mut p Parser) parse_table() ?&MarkdownElement { break } } - + // Skip newline if p.pos < p.text.len && p.text[p.pos] == `\n` { p.pos++ p.line++ p.column = 1 } - + // Set alignment for header cells for i, mut cell in header_row.children { if i < alignments.len { cell.attributes['align'] = alignments[i] } } - + // Parse data rows for p.pos < p.text.len && p.text[p.pos] != `\n` { // Create row element mut row := &MarkdownElement{ - typ: .table_row - content: '' + typ: .table_row + content: '' line_number: p.line - column: p.column + column: p.column } - + // Skip initial pipe if present if p.text[p.pos] == `|` { p.pos++ p.column++ } - + // Parse cells mut cell_index := 0 for p.pos < p.text.len && p.text[p.pos] != `\n` { @@ -179,24 +179,24 @@ fn (mut p Parser) parse_table() ?&MarkdownElement { p.pos++ p.column++ } - + // Create cell element mut cell := &MarkdownElement{ - typ: .table_cell - content: cell_content.trim_space() + typ: .table_cell + content: cell_content.trim_space() line_number: p.line - column: p.column - cell_content.len + column: p.column - cell_content.len } - + // Set alignment if cell_index < alignments.len { cell.attributes['align'] = alignments[cell_index] } - + // Add cell to row row.children << cell cell_index++ - + // Skip pipe if p.pos < p.text.len && p.text[p.pos] == `|` { p.pos++ @@ -205,22 +205,22 @@ fn (mut p Parser) parse_table() ?&MarkdownElement { break } } - + // Add row to table table.children << row - + // Skip newline if p.pos < p.text.len && p.text[p.pos] == `\n` { p.pos++ p.line++ p.column = 1 } - + // Check if we're at the end of the table if p.pos >= p.text.len || p.text[p.pos] != `|` { break } } - + return table } diff --git a/lib/data/markdownparser2/parser_table_test.v b/lib/data/markdownparser2/parser_table_test.v index e167f751..0df4b805 100644 --- a/lib/data/markdownparser2/parser_table_test.v +++ b/lib/data/markdownparser2/parser_table_test.v @@ -4,22 +4,22 @@ fn test_parse_table_basic() { // Test basic table parsing md_text := '|Column 1|Column 2|\n|---|---|\n|Cell 1|Cell 2|' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_table() or { panic('Failed to parse table') } - + assert element.typ == .table assert element.line_number == 1 assert element.column == 1 - + // Check rows assert element.children.len == 2 // Header row + 1 data row - + // Check header row header_row := element.children[0] assert header_row.typ == .table_row @@ -33,7 +33,7 @@ fn test_parse_table_basic() { assert header_row.children[1].content == 'Column 2' assert header_row.children[1].attributes['is_header'] == 'true' assert header_row.children[1].attributes['align'] == 'left' // Default alignment - + // Check data row data_row := element.children[1] assert data_row.typ == .table_row @@ -50,24 +50,24 @@ fn test_parse_table_with_alignment() { // Test table with column alignment md_text := '|Left|Center|Right|\n|:---|:---:|---:|\n|1|2|3|' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_table() or { panic('Failed to parse table with alignment') } - + assert element.typ == .table - + // Check header row header_row := element.children[0] assert header_row.children.len == 3 // 3 header cells assert header_row.children[0].attributes['align'] == 'left' assert header_row.children[1].attributes['align'] == 'center' assert header_row.children[2].attributes['align'] == 'right' - + // Check data row data_row := element.children[1] assert data_row.children.len == 3 // 3 data cells @@ -80,26 +80,26 @@ fn test_parse_table_without_leading_pipe() { // Test table without leading pipe md_text := 'Column 1|Column 2\n---|---\nCell 1|Cell 2' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_table() or { panic('Failed to parse table without leading pipe') } - + assert element.typ == .table - + // Check rows assert element.children.len == 2 // Header row + 1 data row - + // Check header row header_row := element.children[0] assert header_row.children.len == 2 // 2 header cells assert header_row.children[0].content == 'Column 1' assert header_row.children[1].content == 'Column 2' - + // Check data row data_row := element.children[1] assert data_row.children.len == 2 // 2 data cells @@ -111,26 +111,26 @@ fn test_parse_table_without_trailing_pipe() { // Test table without trailing pipe md_text := '|Column 1|Column 2\n|---|---\n|Cell 1|Cell 2' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_table() or { panic('Failed to parse table without trailing pipe') } - + assert element.typ == .table - + // Check rows assert element.children.len == 2 // Header row + 1 data row - + // Check header row header_row := element.children[0] assert header_row.children.len == 2 // 2 header cells assert header_row.children[0].content == 'Column 1' assert header_row.children[1].content == 'Column 2' - + // Check data row data_row := element.children[1] assert data_row.children.len == 2 // 2 data cells @@ -142,17 +142,17 @@ fn test_parse_table_with_empty_cells() { // Test table with empty cells md_text := '|Column 1|Column 2|Column 3|\n|---|---|---|\n|Cell 1||Cell 3|' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_table() or { panic('Failed to parse table with empty cells') } - + assert element.typ == .table - + // Check data row data_row := element.children[1] assert data_row.children.len == 3 // 3 data cells @@ -165,30 +165,30 @@ fn test_parse_table_with_multiple_data_rows() { // Test table with multiple data rows md_text := '|Column 1|Column 2|\n|---|---|\n|Row 1, Cell 1|Row 1, Cell 2|\n|Row 2, Cell 1|Row 2, Cell 2|' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_table() or { panic('Failed to parse table with multiple data rows') } - + assert element.typ == .table - + // Check rows assert element.children.len == 3 // Header row + 2 data rows - + // Check header row header_row := element.children[0] assert header_row.children.len == 2 // 2 header cells - + // Check first data row data_row1 := element.children[1] assert data_row1.children.len == 2 // 2 data cells assert data_row1.children[0].content == 'Row 1, Cell 1' assert data_row1.children[1].content == 'Row 1, Cell 2' - + // Check second data row data_row2 := element.children[2] assert data_row2.children.len == 2 // 2 data cells @@ -200,23 +200,23 @@ fn test_parse_table_with_whitespace() { // Test table with whitespace in cells md_text := '| Column 1 | Column 2 |\n| --- | --- |\n| Cell 1 | Cell 2 |' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_table() or { panic('Failed to parse table with whitespace') } - + assert element.typ == .table - + // Check header row header_row := element.children[0] assert header_row.children.len == 2 // 2 header cells assert header_row.children[0].content == 'Column 1' assert header_row.children[1].content == 'Column 2' - + // Check data row data_row := element.children[1] assert data_row.children.len == 2 // 2 data cells @@ -228,21 +228,21 @@ fn test_parse_table_with_uneven_columns() { // Test table with uneven columns md_text := '|Column 1|Column 2|Column 3|\n|---|---|\n|Cell 1|Cell 2|' mut parser := Parser{ - text: md_text - pos: 0 - line: 1 + text: md_text + pos: 0 + line: 1 column: 1 - doc: new_document() + doc: new_document() } - + element := parser.parse_table() or { panic('Failed to parse table with uneven columns') } - + assert element.typ == .table - + // Check header row header_row := element.children[0] assert header_row.children.len == 3 // 3 header cells - + // Check data row data_row := element.children[1] assert data_row.children.len == 2 // 2 data cells (as defined by the separator row) diff --git a/lib/data/markdownparser2/renderer.v b/lib/data/markdownparser2/renderer.v index a4eabea5..2703d8eb 100644 --- a/lib/data/markdownparser2/renderer.v +++ b/lib/data/markdownparser2/renderer.v @@ -23,7 +23,7 @@ pub fn (r StructureRenderer) render(doc MarkdownDocument) string { // Render an element as a structure fn (r StructureRenderer) render_element(element &MarkdownElement, level int) string { mut result := r.indent.repeat(level) + '${element.typ}' - + if element.content.len > 0 { // Truncate long content mut content := element.content @@ -34,7 +34,7 @@ fn (r StructureRenderer) render_element(element &MarkdownElement, level int) str content = content.replace('\n', '\\n') result += ': "${content}"' } - + if element.attributes.len > 0 { result += ' {' mut first := true @@ -47,13 +47,13 @@ fn (r StructureRenderer) render_element(element &MarkdownElement, level int) str } result += '}' } - + result += '\n' - + for child in element.children { result += r.render_element(child, level + 1) } - + return result } @@ -73,7 +73,7 @@ pub fn (r PlainTextRenderer) render(doc MarkdownDocument) string { // Render an element as plain text fn (r PlainTextRenderer) render_element(element &MarkdownElement) string { mut result := '' - + match element.typ { .document { for child in element.children { @@ -108,7 +108,7 @@ fn (r PlainTextRenderer) render_element(element &MarkdownElement) string { .list { is_ordered := element.attributes['ordered'] == 'true' start_number := element.attributes['start'].int() - + mut i := start_number for child in element.children { if is_ordered { @@ -150,7 +150,7 @@ fn (r PlainTextRenderer) render_element(element &MarkdownElement) string { result += element.content } } - + return result } diff --git a/lib/data/markdownrenderer/structure_renderer.v b/lib/data/markdownrenderer/structure_renderer.v index daf37051..b412eb68 100644 --- a/lib/data/markdownrenderer/structure_renderer.v +++ b/lib/data/markdownrenderer/structure_renderer.v @@ -1,7 +1,6 @@ module markdownrenderer import markdown - import strings // Helper functions to extract information from C structs @@ -75,7 +74,7 @@ fn get_wikilink_target(detail voidptr) ?string { pub struct StructureRenderer { mut: writer strings.Builder = strings.new_builder(200) - indent int // Track indentation level for nested elements + indent int // Track indentation level for nested elements } pub fn (mut sr StructureRenderer) str() string { @@ -85,10 +84,10 @@ pub fn (mut sr StructureRenderer) str() string { fn (mut sr StructureRenderer) enter_block(typ markdown.MD_BLOCKTYPE, detail voidptr) ? { // Add indentation based on current level sr.writer.write_string(strings.repeat(` `, sr.indent * 2)) - + // Output the block type sr.writer.write_string('BLOCK[${typ}]: ') - + // Add specific details based on block type match typ { .md_block_h { @@ -112,7 +111,7 @@ fn (mut sr StructureRenderer) enter_block(typ markdown.MD_BLOCKTYPE, detail void } else {} } - + sr.writer.write_u8(`\n`) sr.indent++ } @@ -124,10 +123,10 @@ fn (mut sr StructureRenderer) leave_block(typ markdown.MD_BLOCKTYPE, _ voidptr) fn (mut sr StructureRenderer) enter_span(typ markdown.MD_SPANTYPE, detail voidptr) ? { // Add indentation based on current level sr.writer.write_string(strings.repeat(` `, sr.indent * 2)) - + // Output the span type sr.writer.write_string('SPAN[${typ}]: ') - + // Add specific details based on span type match typ { .md_span_a { @@ -155,7 +154,7 @@ fn (mut sr StructureRenderer) enter_span(typ markdown.MD_SPANTYPE, detail voidpt } else {} } - + sr.writer.write_u8(`\n`) sr.indent++ } @@ -168,17 +167,17 @@ fn (mut sr StructureRenderer) text(typ markdown.MD_TEXTTYPE, text string) ? { if text.trim_space() == '' { return } - + // Add indentation based on current level sr.writer.write_string(strings.repeat(` `, sr.indent * 2)) - + // Output the text type sr.writer.write_string('TEXT[${typ}]: ') - + // Add the text content (truncate if too long) content := if text.len > 50 { text[..50] + '...' } else { text } sr.writer.write_string(content.replace('\n', '\\n')) - + sr.writer.write_u8(`\n`) } diff --git a/lib/data/ourdb/backend.v b/lib/data/ourdb/backend.v index 49b3c6c7..c4f54463 100644 --- a/lib/data/ourdb/backend.v +++ b/lib/data/ourdb/backend.v @@ -136,9 +136,9 @@ fn (mut db OurDB) get_(location Location) ![]u8 { // Read data // seek data beginning - db.file.seek(i64(location.position+12), .start)! + db.file.seek(i64(location.position + 12), .start)! mut data := []u8{len: int(size)} - data_read_bytes := db.file.read(mut data) or { + data_read_bytes := db.file.read(mut data) or { return error('Failed to read file, ${size} ${err}') } if data_read_bytes != int(size) { diff --git a/lib/data/paramsparser/params_export_test.v b/lib/data/paramsparser/params_export_test.v index 2fde7ba3..68d5cc31 100644 --- a/lib/data/paramsparser/params_export_test.v +++ b/lib/data/paramsparser/params_export_test.v @@ -290,4 +290,4 @@ fn test_export_text() { } paramsout := params.export() assert paramsout.trim_space() == "text:'This content contains the character \\' in it'" -} \ No newline at end of file +} diff --git a/lib/data/radixtree/factory_test.v b/lib/data/radixtree/factory_test.v index 8c9786eb..9b8e8536 100644 --- a/lib/data/radixtree/factory_test.v +++ b/lib/data/radixtree/factory_test.v @@ -23,7 +23,8 @@ fn test_basic_operations() ! { // Test delete rt.delete('test')! mut ok := false - if _ := rt.get('test') {ok = true + if _ := rt.get('test') { + ok = true } else { ok = false } @@ -101,7 +102,7 @@ fn test_update_metadata() ! { // Set initial entry rt.set(prefix, initial_metadata)! - + // Verify initial value value := rt.get(prefix)! assert value.bytestr() == 'metadata_initial' diff --git a/lib/data/radixtree/getall_test.v b/lib/data/radixtree/getall_test.v index 89cff0b3..9221fa3f 100644 --- a/lib/data/radixtree/getall_test.v +++ b/lib/data/radixtree/getall_test.v @@ -3,17 +3,17 @@ module radixtree import freeflowuniverse.herolib.ui.console fn test_getall() ! { - //console.print_debug('Starting test_getall') + // console.print_debug('Starting test_getall') mut rt := new(path: '/tmp/radixtree_getall_test', reset: true)! // Set up test data with common prefixes test_data := { - 'user_1': 'data1', - 'user_2': 'data2', - 'user_3': 'data3', - 'admin_1': 'admin_data1', - 'admin_2': 'admin_data2', - 'guest': 'guest_data' + 'user_1': 'data1' + 'user_2': 'data2' + 'user_3': 'data3' + 'admin_1': 'admin_data1' + 'admin_2': 'admin_data2' + 'guest': 'guest_data' } // Set all test data @@ -22,57 +22,57 @@ fn test_getall() ! { } // Test getall with 'user_' prefix - //console.print_debug('Testing getall with prefix "user_"') + // console.print_debug('Testing getall with prefix "user_"') user_values := rt.getall('user_')! - //console.print_debug('user_values count: ${user_values.len}') - + // console.print_debug('user_values count: ${user_values.len}') + // Should return 3 values assert user_values.len == 3 - + // Convert byte arrays to strings for easier comparison mut user_value_strings := []string{} for value in user_values { user_value_strings << value.bytestr() } - + // Check all expected values are present assert 'data1' in user_value_strings assert 'data2' in user_value_strings assert 'data3' in user_value_strings // Test getall with 'admin_' prefix - //console.print_debug('Testing getall with prefix "admin_"') + // console.print_debug('Testing getall with prefix "admin_"') admin_values := rt.getall('admin_')! - //console.print_debug('admin_values count: ${admin_values.len}') - + // console.print_debug('admin_values count: ${admin_values.len}') + // Should return 2 values assert admin_values.len == 2 - + // Convert byte arrays to strings for easier comparison mut admin_value_strings := []string{} for value in admin_values { admin_value_strings << value.bytestr() } - + // Check all expected values are present assert 'admin_data1' in admin_value_strings assert 'admin_data2' in admin_value_strings // Test getall with empty prefix (should return all values) - //console.print_debug('Testing getall with empty prefix') + // console.print_debug('Testing getall with empty prefix') all_values := rt.getall('')! - //console.print_debug('all_values count: ${all_values.len}') - + // console.print_debug('all_values count: ${all_values.len}') + // Should return all 6 values assert all_values.len == test_data.len - + // Test getall with non-existent prefix - //console.print_debug('Testing getall with non-existent prefix "xyz"') + // console.print_debug('Testing getall with non-existent prefix "xyz"') non_existent_values := rt.getall('xyz')! - //console.print_debug('non_existent_values count: ${non_existent_values.len}') - + // console.print_debug('non_existent_values count: ${non_existent_values.len}') + // Should return empty array assert non_existent_values.len == 0 - - //console.print_debug('test_getall completed successfully') + + // console.print_debug('test_getall completed successfully') } diff --git a/lib/data/radixtree/prefix_test.v b/lib/data/radixtree/prefix_test.v index 58ea472c..ac18c3b1 100644 --- a/lib/data/radixtree/prefix_test.v +++ b/lib/data/radixtree/prefix_test.v @@ -3,19 +3,19 @@ module radixtree import freeflowuniverse.herolib.ui.console fn test_list() ! { - //console.print_debug('Starting test_list') + // console.print_debug('Starting test_list') mut rt := new(path: '/tmp/radixtree_prefix_test', reset: true)! // Insert keys with various prefixes test_data := { - 'apple': 'fruit1', - 'application': 'software1', - 'apply': 'verb1', - 'banana': 'fruit2', - 'ball': 'toy1', - 'cat': 'animal1', - 'car': 'vehicle1', - 'cargo': 'shipping1' + 'apple': 'fruit1' + 'application': 'software1' + 'apply': 'verb1' + 'banana': 'fruit2' + 'ball': 'toy1' + 'cat': 'animal1' + 'car': 'vehicle1' + 'cargo': 'shipping1' } // Set all test data @@ -24,56 +24,56 @@ fn test_list() ! { } // Test prefix 'app' - should return apple, application, apply - //console.print_debug('Testing prefix "app"') + // console.print_debug('Testing prefix "app"') app_keys := rt.list('app')! - //console.print_debug('app_keys: ${app_keys}') + // console.print_debug('app_keys: ${app_keys}') assert app_keys.len == 3 assert 'apple' in app_keys assert 'application' in app_keys assert 'apply' in app_keys // Test prefix 'ba' - should return banana, ball - //console.print_debug('Testing prefix "ba"') + // console.print_debug('Testing prefix "ba"') ba_keys := rt.list('ba')! - //console.print_debug('ba_keys: ${ba_keys}') + // console.print_debug('ba_keys: ${ba_keys}') assert ba_keys.len == 2 assert 'banana' in ba_keys assert 'ball' in ba_keys // Test prefix 'car' - should return car, cargo - //console.print_debug('Testing prefix "car"') + // console.print_debug('Testing prefix "car"') car_keys := rt.list('car')! - //console.print_debug('car_keys: ${car_keys}') + // console.print_debug('car_keys: ${car_keys}') assert car_keys.len == 2 assert 'car' in car_keys assert 'cargo' in car_keys // Test prefix 'z' - should return empty list - //console.print_debug('Testing prefix "z"') + // console.print_debug('Testing prefix "z"') z_keys := rt.list('z')! - //console.print_debug('z_keys: ${z_keys}') + // console.print_debug('z_keys: ${z_keys}') assert z_keys.len == 0 // Test empty prefix - should return all keys - //console.print_debug('Testing empty prefix') + // console.print_debug('Testing empty prefix') all_keys := rt.list('')! - //console.print_debug('all_keys: ${all_keys}') + // console.print_debug('all_keys: ${all_keys}') assert all_keys.len == test_data.len for key in test_data.keys() { assert key in all_keys } // Test exact key as prefix - should return just that key - //console.print_debug('Testing exact key as prefix "apple"') + // console.print_debug('Testing exact key as prefix "apple"') exact_key := rt.list('apple')! - //console.print_debug('exact_key: ${exact_key}') + // console.print_debug('exact_key: ${exact_key}') assert exact_key.len == 1 assert exact_key[0] == 'apple' - //console.print_debug('test_list completed successfully') + // console.print_debug('test_list completed successfully') } fn test_list_with_deletion() ! { - //console.print_debug('Starting test_list_with_deletion') + // console.print_debug('Starting test_list_with_deletion') mut rt := new(path: '/tmp/radixtree_prefix_deletion_test', reset: true)! // Set keys with common prefixes @@ -83,115 +83,115 @@ fn test_list_with_deletion() ! { rt.set('other', 'value4'.bytes())! // Initial check - //console.print_debug('Testing initial prefix "test"') + // console.print_debug('Testing initial prefix "test"') test_keys := rt.list('test')! - //console.print_debug('test_keys: ${test_keys}') + // console.print_debug('test_keys: ${test_keys}') assert test_keys.len == 3 assert 'test1' in test_keys assert 'test2' in test_keys assert 'test3' in test_keys // Delete one key - //console.print_debug('Deleting key "test2"') + // console.print_debug('Deleting key "test2"') rt.delete('test2')! // Check after deletion - //console.print_debug('Testing prefix "test" after deletion') + // console.print_debug('Testing prefix "test" after deletion') test_keys_after := rt.list('test')! - //console.print_debug('test_keys_after: ${test_keys_after}') + // console.print_debug('test_keys_after: ${test_keys_after}') assert test_keys_after.len == 2 assert 'test1' in test_keys_after assert 'test2' !in test_keys_after assert 'test3' in test_keys_after // Check all keys - //console.print_debug('Testing empty prefix') + // console.print_debug('Testing empty prefix') all_keys := rt.list('')! - //console.print_debug('all_keys: ${all_keys}') + // console.print_debug('all_keys: ${all_keys}') assert all_keys.len == 3 assert 'other' in all_keys - //console.print_debug('test_list_with_deletion completed successfully') + // console.print_debug('test_list_with_deletion completed successfully') } fn test_list_edge_cases() ! { - //console.print_debug('Starting test_list_edge_cases') + // console.print_debug('Starting test_list_edge_cases') mut rt := new(path: '/tmp/radixtree_prefix_edge_test', reset: true)! // Test with empty tree - //console.print_debug('Testing empty tree with prefix "any"') + // console.print_debug('Testing empty tree with prefix "any"') empty_result := rt.list('any')! - //console.print_debug('empty_result: ${empty_result}') + // console.print_debug('empty_result: ${empty_result}') assert empty_result.len == 0 // Set a single key - //console.print_debug('Setting single key "single"') + // console.print_debug('Setting single key "single"') rt.set('single', 'value'.bytes())! - + // Test with prefix that's longer than any key - //console.print_debug('Testing prefix longer than any key "singlelonger"') + // console.print_debug('Testing prefix longer than any key "singlelonger"') long_prefix := rt.list('singlelonger')! - //console.print_debug('long_prefix: ${long_prefix}') + // console.print_debug('long_prefix: ${long_prefix}') assert long_prefix.len == 0 - + // Test with partial prefix match - //console.print_debug('Testing partial prefix match "sing"') + // console.print_debug('Testing partial prefix match "sing"') partial := rt.list('sing')! - //console.print_debug('partial: ${partial}') + // console.print_debug('partial: ${partial}') assert partial.len == 1 assert partial[0] == 'single' - + // Test with very long keys - //console.print_debug('Testing with very long keys') + // console.print_debug('Testing with very long keys') long_key1 := 'a'.repeat(100) + 'key1' long_key2 := 'a'.repeat(100) + 'key2' - + rt.set(long_key1, 'value1'.bytes())! rt.set(long_key2, 'value2'.bytes())! - - //console.print_debug('Testing long prefix') + + // console.print_debug('Testing long prefix') long_prefix_result := rt.list('a'.repeat(100))! - //console.print_debug('long_prefix_result: ${long_prefix_result}') + // console.print_debug('long_prefix_result: ${long_prefix_result}') assert long_prefix_result.len == 2 assert long_key1 in long_prefix_result assert long_key2 in long_prefix_result - //console.print_debug('test_list_edge_cases completed successfully') + // console.print_debug('test_list_edge_cases completed successfully') } fn test_list_performance() ! { - //console.print_debug('Starting test_list_performance') + // console.print_debug('Starting test_list_performance') mut rt := new(path: '/tmp/radixtree_prefix_perf_test', reset: true)! - + // Insert a large number of keys with different prefixes - //console.print_debug('Setting up prefixes') + // console.print_debug('Setting up prefixes') prefixes := ['user', 'post', 'comment', 'like', 'share'] - + // Set 100 keys for each prefix (500 total) - //console.print_debug('Setting 500 keys (100 for each prefix)') + // console.print_debug('Setting 500 keys (100 for each prefix)') for prefix in prefixes { - for i in 0..100 { + for i in 0 .. 100 { key := '${prefix}_${i}' rt.set(key, 'value_${key}'.bytes())! } } - + // Test retrieving by each prefix - //console.print_debug('Testing retrieval by each prefix') + // console.print_debug('Testing retrieval by each prefix') for prefix in prefixes { - //console.print_debug('Testing prefix "${prefix}"') + // console.print_debug('Testing prefix "${prefix}"') keys := rt.list(prefix)! - //console.print_debug('Found ${keys.len} keys for prefix "${prefix}"') + // console.print_debug('Found ${keys.len} keys for prefix "${prefix}"') assert keys.len == 100 - + // Verify all keys have the correct prefix for key in keys { assert key.starts_with(prefix) } } - + // Test retrieving all keys - //console.print_debug('Testing retrieval of all keys') + // console.print_debug('Testing retrieval of all keys') all_keys := rt.list('')! - //console.print_debug('Found ${all_keys.len} total keys') + // console.print_debug('Found ${all_keys.len} total keys') assert all_keys.len == 500 - //console.print_debug('test_list_performance completed successfully') + // console.print_debug('test_list_performance completed successfully') } diff --git a/lib/data/radixtree/radixtree.v b/lib/data/radixtree/radixtree.v index 3c3a6a46..08300e84 100644 --- a/lib/data/radixtree/radixtree.v +++ b/lib/data/radixtree/radixtree.v @@ -43,9 +43,9 @@ pub fn new(args NewArgs) !RadixTree { )! mut root_id := u32(1) // First ID in ourdb is now 1 instead of 0 - //console.print_debug('Debug: Initializing root node') + // console.print_debug('Debug: Initializing root node') if db.get_next_id()! == 1 { - //console.print_debug('Debug: Creating new root node') + // console.print_debug('Debug: Creating new root node') root := Node{ key_segment: '' value: []u8{} @@ -53,14 +53,14 @@ pub fn new(args NewArgs) !RadixTree { is_leaf: false } root_id = db.set(data: serialize_node(root))! - //console.print_debug('Debug: Created root node with ID ${root_id}') + // console.print_debug('Debug: Created root node with ID ${root_id}') assert root_id == 1 // First ID is now 1 } else { - //console.print_debug('Debug: Using existing root node') + // console.print_debug('Debug: Using existing root node') root_data := db.get(1)! // Get root node with ID 1 - // root_node := + // root_node := deserialize_node(root_data)! - //console.print_debug('Debug: Root node has ${root_node.children.len} children') + // console.print_debug('Debug: Root node has ${root_node.children.len} children') } return RadixTree{ @@ -104,56 +104,56 @@ pub fn (mut rt RadixTree) set(key string, value []u8) ! { children: []NodeRef{} is_leaf: true } - //console.print_debug('Debug: Creating new leaf node with key_part "${key_part}"') + // console.print_debug('Debug: Creating new leaf node with key_part "${key_part}"') new_id := rt.db.set(data: serialize_node(new_node))! - //console.print_debug('Debug: Created node ID ${new_id}') + // console.print_debug('Debug: Created node ID ${new_id}') // Create new child reference and update parent node - //console.print_debug('Debug: Updating parent node ${current_id} to add child reference') + // console.print_debug('Debug: Updating parent node ${current_id} to add child reference') // Get fresh copy of parent node mut parent_node := deserialize_node(rt.db.get(current_id)!)! - //console.print_debug('Debug: Parent node initially has ${parent_node.children.len} children') + // console.print_debug('Debug: Parent node initially has ${parent_node.children.len} children') // Add new child reference parent_node.children << NodeRef{ key_part: key_part node_id: new_id } - //console.print_debug('Debug: Added child reference, now has ${parent_node.children.len} children') + // console.print_debug('Debug: Added child reference, now has ${parent_node.children.len} children') // Update parent node in DB - //console.print_debug('Debug: Serializing parent node with ${parent_node.children.len} children') + // console.print_debug('Debug: Serializing parent node with ${parent_node.children.len} children') parent_data := serialize_node(parent_node) - //console.print_debug('Debug: Parent data size: ${parent_data.len} bytes') + // console.print_debug('Debug: Parent data size: ${parent_data.len} bytes') // First verify we can deserialize the data correctly - //console.print_debug('Debug: Verifying serialization...') + // console.print_debug('Debug: Verifying serialization...') if _ := deserialize_node(parent_data) { - //console.print_debug('Debug: Serialization test successful - node has ${test_node.children.len} children') + // console.print_debug('Debug: Serialization test successful - node has ${test_node.children.len} children') } else { - //console.print_debug('Debug: ERROR - Failed to deserialize test data') + // console.print_debug('Debug: ERROR - Failed to deserialize test data') return error('Serialization verification failed') } // Set with explicit ID to update existing node - //console.print_debug('Debug: Writing to DB...') + // console.print_debug('Debug: Writing to DB...') rt.db.set(id: current_id, data: parent_data)! // Verify by reading back and comparing - //console.print_debug('Debug: Reading back for verification...') + // console.print_debug('Debug: Reading back for verification...') verify_data := rt.db.get(current_id)! verify_node := deserialize_node(verify_data)! - //console.print_debug('Debug: Verification - node has ${verify_node.children.len} children') + // console.print_debug('Debug: Verification - node has ${verify_node.children.len} children') if verify_node.children.len == 0 { - //console.print_debug('Debug: ERROR - Node update verification failed!') - //console.print_debug('Debug: Original node children: ${node.children.len}') - //console.print_debug('Debug: Parent node children: ${parent_node.children.len}') - //console.print_debug('Debug: Verified node children: ${verify_node.children.len}') - //console.print_debug('Debug: Original data size: ${parent_data.len}') - //console.print_debug('Debug: Verified data size: ${verify_data.len}') - //console.print_debug('Debug: Data equal: ${verify_data == parent_data}') + // console.print_debug('Debug: ERROR - Node update verification failed!') + // console.print_debug('Debug: Original node children: ${node.children.len}') + // console.print_debug('Debug: Parent node children: ${parent_node.children.len}') + // console.print_debug('Debug: Verified node children: ${verify_node.children.len}') + // console.print_debug('Debug: Original data size: ${parent_data.len}') + // console.print_debug('Debug: Verified data size: ${verify_data.len}') + // console.print_debug('Debug: Data equal: ${verify_data == parent_data}') return error('Node update failed - children array is empty') } return @@ -339,7 +339,7 @@ pub fn (mut rt RadixTree) delete(key string) ! { } } rt.db.set(id: path[path.len - 2].node_id, data: serialize_node(parent_node))! - + // Delete the node from the database rt.db.delete(path.last().node_id)! } else { @@ -368,7 +368,7 @@ pub fn (mut rt RadixTree) list(prefix string) ![]string { // Helper function to find all keys with a given prefix fn (mut rt RadixTree) find_keys_with_prefix(node_id u32, current_path string, prefix string, mut result []string) ! { node := deserialize_node(rt.db.get(node_id)!)! - + // If the current path already matches or exceeds the prefix length if current_path.len >= prefix.len { // Check if the current path starts with the prefix @@ -377,7 +377,7 @@ fn (mut rt RadixTree) find_keys_with_prefix(node_id u32, current_path string, pr if node.is_leaf { result << current_path } - + // Collect all keys from this subtree for child in node.children { child_path := current_path + child.key_part @@ -386,20 +386,21 @@ fn (mut rt RadixTree) find_keys_with_prefix(node_id u32, current_path string, pr } return } - + // Current path is shorter than the prefix, continue searching for child in node.children { child_path := current_path + child.key_part - + // Check if this child's path could potentially match the prefix if prefix.starts_with(current_path) { // The prefix starts with the current path, so we need to check if // the child's key_part matches the next part of the prefix prefix_remainder := prefix[current_path.len..] - + // If the prefix remainder starts with the child's key_part or vice versa - if prefix_remainder.starts_with(child.key_part) || - (child.key_part.starts_with(prefix_remainder) && child.key_part.len >= prefix_remainder.len) { + if prefix_remainder.starts_with(child.key_part) + || (child.key_part.starts_with(prefix_remainder) + && child.key_part.len >= prefix_remainder.len) { rt.find_keys_with_prefix(child.node_id, child_path, prefix, mut result)! } } @@ -409,12 +410,12 @@ fn (mut rt RadixTree) find_keys_with_prefix(node_id u32, current_path string, pr // Helper function to recursively collect all keys under a node fn (mut rt RadixTree) collect_all_keys(node_id u32, current_path string, mut result []string) ! { node := deserialize_node(rt.db.get(node_id)!)! - + // If this node is a leaf, add its path to the result if node.is_leaf { result << current_path } - + // Recursively collect keys from all children for child in node.children { child_path := current_path + child.key_part @@ -427,7 +428,7 @@ fn (mut rt RadixTree) collect_all_keys(node_id u32, current_path string, mut res pub fn (mut rt RadixTree) getall(prefix string) ![][]u8 { // Get all matching keys keys := rt.list(prefix)! - + // Get values for each key mut values := [][]u8{} for key in keys { @@ -435,7 +436,7 @@ pub fn (mut rt RadixTree) getall(prefix string) ![][]u8 { values << value } } - + return values } diff --git a/lib/dav/webdav/errors.v b/lib/dav/webdav/errors.v index 755bc94f..56833c8c 100644 --- a/lib/dav/webdav/errors.v +++ b/lib/dav/webdav/errors.v @@ -6,14 +6,18 @@ import log struct WebDAVError { pub: - status http.Status + status http.Status message string - tag string + tag string } pub fn (mut ctx Context) error(err WebDAVError) veb.Result { - message := if err.message != '' {err.message } else {err.status.str().replace('_', ' ').title()} + message := if err.message != '' { + err.message + } else { + err.status.str().replace('_', ' ').title() + } log.error('[WebDAV] ${message}') ctx.res.set_status(err.status) return ctx.send_response_to_client('application/xml', $tmpl('./templates/error_response.xml')) -} \ No newline at end of file +} diff --git a/lib/dav/webdav/factory_test.v b/lib/dav/webdav/factory_test.v index 2cd2df7b..2145b7f1 100644 --- a/lib/dav/webdav/factory_test.v +++ b/lib/dav/webdav/factory_test.v @@ -9,14 +9,17 @@ import rand import os import freeflowuniverse.herolib.vfs.vfs_db -const testdata_path := os.join_path(os.dir(@FILE), 'testdata') -const database_path := os.join_path(testdata_path, 'database') +const testdata_path = os.join_path(os.dir(@FILE), 'testdata') +const database_path = os.join_path(testdata_path, 'database') fn test_new_server() { - mut metadata_db := ourdb.new(path:os.join_path(database_path, 'metadata'))! - mut data_db := ourdb.new(path:os.join_path(database_path, 'data'))! + mut metadata_db := ourdb.new(path: os.join_path(database_path, 'metadata'))! + mut data_db := ourdb.new(path: os.join_path(database_path, 'data'))! mut vfs := vfs_db.new(mut metadata_db, mut data_db)! - server := new_server(vfs: vfs, user_db: { - 'admin': '123' - })! -} \ No newline at end of file + server := new_server( + vfs: vfs + user_db: { + 'admin': '123' + } + )! +} diff --git a/lib/dav/webdav/locker.v b/lib/dav/webdav/locker.v index f03f6eba..e66a9655 100644 --- a/lib/dav/webdav/locker.v +++ b/lib/dav/webdav/locker.v @@ -26,7 +26,8 @@ pub fn (mut lm Locker) lock(l Lock) !Lock { // Resource is already locked if existing_lock.owner == l.owner { // Same owner, refresh the lock - refreshed_lock := Lock {...existing_lock, + refreshed_lock := Lock{ + ...existing_lock resource: l.resource owner: l.owner depth: l.depth @@ -46,7 +47,7 @@ pub fn (mut lm Locker) lock(l Lock) !Lock { // Generate a new lock token new_lock := Lock{ - ...l, + ...l token: rand.uuid_v4() created_at: time.now() } diff --git a/lib/dav/webdav/locker_test.v b/lib/dav/webdav/locker_test.v index 8fba9cfd..554e3342 100644 --- a/lib/dav/webdav/locker_test.v +++ b/lib/dav/webdav/locker_test.v @@ -4,30 +4,34 @@ import time import rand fn test_lock() { - mut locker := Locker{locks: map[string]Lock{}} + mut locker := Locker{ + locks: map[string]Lock{} + } // Lock the resource result := locker.lock( - resource: 'test-resource', - owner: 'test-owner', - depth: 0, - timeout: 3600, + resource: 'test-resource' + owner: 'test-owner' + depth: 0 + timeout: 3600 ) or { panic(err) } assert result.token != '' assert locker.is_locked('test-resource') } fn test_unlock() { - mut locker := Locker{locks: map[string]Lock{}} + mut locker := Locker{ + locks: map[string]Lock{} + } // Lock the resource locker.lock( - resource: 'test-resource', - owner: 'test-owner', - depth: 0, - timeout: 3600, + resource: 'test-resource' + owner: 'test-owner' + depth: 0 + timeout: 3600 ) or { panic(err) } - + // Unlock the resource is_unlocked := locker.unlock('test-resource') assert is_unlocked @@ -35,23 +39,25 @@ fn test_unlock() { } fn test_lock_with_different_owner() { - mut locker := Locker{locks: map[string]Lock{}} + mut locker := Locker{ + locks: map[string]Lock{} + } lock1 := Lock{ - resource: 'test-resource', - owner: 'owner1', - depth: 0, - timeout: 3600, + resource: 'test-resource' + owner: 'owner1' + depth: 0 + timeout: 3600 } lock2 := Lock{ - resource: 'test-resource', - owner: 'owner2', - depth: 0, - timeout: 3600, + resource: 'test-resource' + owner: 'owner2' + depth: 0 + timeout: 3600 } // Lock the resource with the first owner locker.lock(lock1) or { panic(err) } - + // Attempt to lock the resource with a different owner if result := locker.lock(lock2) { assert false, 'locking should fail' @@ -61,19 +67,21 @@ fn test_lock_with_different_owner() { } fn test_cleanup_expired_locks() { - mut locker := Locker{locks: map[string]Lock{}} + mut locker := Locker{ + locks: map[string]Lock{} + } // Lock the resource locker.lock( - resource: 'test-resource', - owner: 'test-owner', - depth: 0, - timeout: 1, + resource: 'test-resource' + owner: 'test-owner' + depth: 0 + timeout: 1 ) or { panic(err) } - + // Wait for the lock to expire time.sleep(2 * time.second) - + // Cleanup expired locks locker.cleanup_expired_locks() assert !locker.is_locked('test-resource') diff --git a/lib/dav/webdav/middleware_headers.v b/lib/dav/webdav/middleware_headers.v index 9ceeeb8b..b25cb762 100644 --- a/lib/dav/webdav/middleware_headers.v +++ b/lib/dav/webdav/middleware_headers.v @@ -8,4 +8,4 @@ import log // ctx.set_header(.allow, 'OPTIONS, PROPFIND, MKCOL, GET, HEAD, POST, PUT, DELETE, COPY, MOVE') // ctx.set_custom_header('MS-Author-Via', 'DAV') or { return ctx.server_error(err.msg()) } // return true -// } \ No newline at end of file +// } diff --git a/lib/dav/webdav/middleware_log.v b/lib/dav/webdav/middleware_log.v index 668ec0ea..523a2f45 100644 --- a/lib/dav/webdav/middleware_log.v +++ b/lib/dav/webdav/middleware_log.v @@ -12,4 +12,3 @@ fn middleware_log_response(mut ctx Context) bool { log.debug('[WebDAV] Response: ${ctx.req.url} ${ctx.res.status()}\n') return true } - \ No newline at end of file diff --git a/lib/dav/webdav/model_lock.v b/lib/dav/webdav/model_lock.v index 23758e37..761132eb 100644 --- a/lib/dav/webdav/model_lock.v +++ b/lib/dav/webdav/model_lock.v @@ -11,8 +11,8 @@ pub mut: depth int // 0 for a single resource, 1 for recursive timeout int // in seconds created_at time.Time - lock_type string // typically 'write' - scope string // 'exclusive' or 'shared' + lock_type string // typically 'write' + scope string // 'exclusive' or 'shared' } fn (l Lock) xml() string { @@ -23,27 +23,25 @@ fn (l Lock) xml() string { // and extracts the lock parameters (scope, type, owner) fn parse_lock_xml(xml_data string) !Lock { mut lock_info := Lock{ - scope: 'exclusive' // default values + scope: 'exclusive' // default values lock_type: 'write' - owner: '' + owner: '' } - + // Parse the XML document - doc := xml.XMLDocument.from_string(xml_data) or { - return error('Failed to parse XML: ${err}') - } - + doc := xml.XMLDocument.from_string(xml_data) or { return error('Failed to parse XML: ${err}') } + // Get the root element (lockinfo) root := doc.root - + // Handle namespace prefixes (D:) in element names // WebDAV uses namespaces, so we need to check for both prefixed and non-prefixed names - + // Extract lockscope for child in root.children { if child is xml.XMLNode { node := child as xml.XMLNode - + // Check for lockscope (with or without namespace prefix) if node.name == 'lockscope' || node.name == 'D:lockscope' { for scope_child in node.children { @@ -57,7 +55,7 @@ fn parse_lock_xml(xml_data string) !Lock { } } } - + // Check for locktype (with or without namespace prefix) if node.name == 'locktype' || node.name == 'D:locktype' { for type_child in node.children { @@ -69,7 +67,7 @@ fn parse_lock_xml(xml_data string) !Lock { } } } - + // Check for owner (with or without namespace prefix) if node.name == 'owner' || node.name == 'D:owner' { for owner_child in node.children { @@ -91,7 +89,7 @@ fn parse_lock_xml(xml_data string) !Lock { } } } - + // If owner is still empty, try to extract it from any text content in the owner node if lock_info.owner.len == 0 { for child in root.children { @@ -108,15 +106,14 @@ fn parse_lock_xml(xml_data string) !Lock { } } } - + // Use a default owner if none was found if lock_info.owner.len == 0 { lock_info.owner = 'unknown-client' } - + // Debug output // println('Parsed lock info: scope=${lock_info.scope}, type=${lock_info.lock_type}, owner=${lock_info.owner}') - + return lock_info } - diff --git a/lib/dav/webdav/model_property.v b/lib/dav/webdav/model_property.v index 616025b2..c0db49c7 100644 --- a/lib/dav/webdav/model_property.v +++ b/lib/dav/webdav/model_property.v @@ -11,9 +11,9 @@ import veb // Property represents a WebDAV property pub interface Property { xml() xml.XMLNodeContents -// xml_name() string -// to_xml_node() xml.XMLNode -// } + // xml_name() string + // to_xml_node() xml.XMLNode + // } } type DisplayName = string @@ -39,79 +39,79 @@ type LockDiscovery = string fn (p []Property) xml() xml.XMLNode { return xml.XMLNode{ - name: 'D:propstat' + name: 'D:propstat' children: [ xml.XMLNode{ - name: 'D:prop' + name: 'D:prop' children: p.map(it.xml()) }, xml.XMLNode{ - name: 'D:status' + name: 'D:status' children: [xml.XMLNodeContents('HTTP/1.1 200 OK')] - } + }, ] } } fn (p DisplayName) xml() xml.XMLNodeContents { return xml.XMLNode{ - name: 'D:displayname' + name: 'D:displayname' children: [xml.XMLNodeContents(p)] } } fn (p GetETag) xml() xml.XMLNodeContents { return xml.XMLNode{ - name: 'D:getetag' + name: 'D:getetag' children: [xml.XMLNodeContents(p)] } } fn (p GetLastModified) xml() xml.XMLNodeContents { return xml.XMLNode{ - name: 'D:getlastmodified' + name: 'D:getlastmodified' children: [xml.XMLNodeContents(p)] } } fn (p GetContentType) xml() xml.XMLNodeContents { return xml.XMLNode{ - name: 'D:getcontenttype' + name: 'D:getcontenttype' children: [xml.XMLNodeContents(p)] } } fn (p GetContentLength) xml() xml.XMLNodeContents { return xml.XMLNode{ - name: 'D:getcontentlength' + name: 'D:getcontentlength' children: [xml.XMLNodeContents(p)] } } fn (p QuotaAvailableBytes) xml() xml.XMLNodeContents { return xml.XMLNode{ - name: 'D:quota-available-bytes' + name: 'D:quota-available-bytes' children: [xml.XMLNodeContents(p.str())] } } fn (p QuotaUsedBytes) xml() xml.XMLNodeContents { return xml.XMLNode{ - name: 'D:quota-used-bytes' + name: 'D:quota-used-bytes' children: [xml.XMLNodeContents(p.str())] } } fn (p Quota) xml() xml.XMLNodeContents { return xml.XMLNode{ - name: 'D:quota' + name: 'D:quota' children: [xml.XMLNodeContents(p.str())] } } fn (p QuotaUsed) xml() xml.XMLNodeContents { return xml.XMLNode{ - name: 'D:quotaused' + name: 'D:quotaused' children: [xml.XMLNodeContents(p.str())] } } @@ -123,15 +123,15 @@ fn (p ResourceType) xml() xml.XMLNodeContents { children << xml.XMLNode{ name: 'D:collection' } - + return xml.XMLNode{ - name: 'D:resourcetype' + name: 'D:resourcetype' children: children } } else { // If it's not a collection, return an empty resourcetype element return xml.XMLNode{ - name: 'D:resourcetype' + name: 'D:resourcetype' children: []xml.XMLNodeContents{} } } @@ -139,7 +139,7 @@ fn (p ResourceType) xml() xml.XMLNodeContents { fn (p CreationDate) xml() xml.XMLNodeContents { return xml.XMLNode{ - name: 'D:creationdate' + name: 'D:creationdate' children: [xml.XMLNodeContents(p)] } } @@ -147,85 +147,85 @@ fn (p CreationDate) xml() xml.XMLNodeContents { fn (p SupportedLock) xml() xml.XMLNodeContents { // Create children for the supportedlock node mut children := []xml.XMLNodeContents{} - + // First lockentry - exclusive mut lockscope1_children := []xml.XMLNodeContents{} lockscope1_children << xml.XMLNode{ name: 'D:exclusive' } - + lockscope1 := xml.XMLNode{ - name: 'D:lockscope' + name: 'D:lockscope' children: lockscope1_children } - + mut locktype1_children := []xml.XMLNodeContents{} locktype1_children << xml.XMLNode{ name: 'D:write' } - + locktype1 := xml.XMLNode{ - name: 'D:locktype' + name: 'D:locktype' children: locktype1_children } - + mut lockentry1_children := []xml.XMLNodeContents{} lockentry1_children << lockscope1 lockentry1_children << locktype1 - + lockentry1 := xml.XMLNode{ - name: 'D:lockentry' + name: 'D:lockentry' children: lockentry1_children } - + // Second lockentry - shared mut lockscope2_children := []xml.XMLNodeContents{} lockscope2_children << xml.XMLNode{ name: 'D:shared' } - + lockscope2 := xml.XMLNode{ - name: 'D:lockscope' + name: 'D:lockscope' children: lockscope2_children } - + mut locktype2_children := []xml.XMLNodeContents{} locktype2_children << xml.XMLNode{ name: 'D:write' } - + locktype2 := xml.XMLNode{ - name: 'D:locktype' + name: 'D:locktype' children: locktype2_children } - + mut lockentry2_children := []xml.XMLNodeContents{} lockentry2_children << lockscope2 lockentry2_children << locktype2 - + lockentry2 := xml.XMLNode{ - name: 'D:lockentry' + name: 'D:lockentry' children: lockentry2_children } - + // Add both lockentries to children children << lockentry1 children << lockentry2 - + // Return the supportedlock node return xml.XMLNode{ - name: 'D:supportedlock' + name: 'D:supportedlock' children: children } } fn (p LockDiscovery) xml() xml.XMLNodeContents { return xml.XMLNode{ - name: 'D:lockdiscovery' + name: 'D:lockdiscovery' children: [xml.XMLNodeContents(p)] } } fn format_iso8601(t time.Time) string { return '${t.year:04d}-${t.month:02d}-${t.day:02d}T${t.hour:02d}:${t.minute:02d}:${t.second:02d}Z' -} \ No newline at end of file +} diff --git a/lib/dav/webdav/model_property_test.v b/lib/dav/webdav/model_property_test.v index 06286863..d5d2ab34 100644 --- a/lib/dav/webdav/model_property_test.v +++ b/lib/dav/webdav/model_property_test.v @@ -56,15 +56,15 @@ fn test_property_xml() { fn test_property_array_xml() { // Create an array of properties mut properties := []Property{} - + // Add different property types to the array properties << DisplayName('test-file.txt') properties << GetContentType('text/plain') properties << ResourceType(false) - + // Test the xml() function for the array of properties xml_output := properties.xml() - + // Verify the XML output contains the expected structure assert xml_output.contains('') assert xml_output.contains('') @@ -77,17 +77,17 @@ fn test_property_array_xml() { fn test_format_iso8601() { // Create a test time test_time := time.Time{ - year: 2024 - month: 1 - day: 1 - hour: 12 + year: 2024 + month: 1 + day: 1 + hour: 12 minute: 30 second: 45 } - + // Format the time using the format_iso8601 function formatted_time := format_iso8601(test_time) - + // Verify the formatted time matches the expected ISO8601 format assert formatted_time == '2024-01-01T12:30:45Z' } diff --git a/lib/dav/webdav/model_propfind.v b/lib/dav/webdav/model_propfind.v index 71e64272..a399b52c 100644 --- a/lib/dav/webdav/model_propfind.v +++ b/lib/dav/webdav/model_propfind.v @@ -14,15 +14,15 @@ import veb pub struct PropfindRequest { pub: typ PropfindType - props []string // Property names if typ is prop - depth Depth // Depth of the request (0, 1, or -1 for infinity) - xml_content string // Original XML content + props []string // Property names if typ is prop + depth Depth // Depth of the request (0, 1, or -1 for infinity) + xml_content string // Original XML content } pub enum Depth { infinity = -1 - zero = 0 - one = 1 + zero = 0 + one = 1 } // PropfindType represents the type of PROPFIND request @@ -35,25 +35,21 @@ pub enum PropfindType { // parse_propfind_xml parses the XML body of a PROPFIND request pub fn parse_propfind_xml(req http.Request) !PropfindRequest { - data := req.data // Parse Depth header depth_str := req.header.get_custom('Depth') or { '0' } depth := parse_depth(depth_str) - if data.len == 0 { // If no body is provided, default to allprop return PropfindRequest{ - typ: .allprop - depth: depth + typ: .allprop + depth: depth xml_content: '' } } - doc := xml.XMLDocument.from_string(data) or { - return error('Failed to parse XML: ${err}') - } + doc := xml.XMLDocument.from_string(data) or { return error('Failed to parse XML: ${err}') } root := doc.root if root.name.to_lower() != 'propfind' && !root.name.ends_with(':propfind') { @@ -62,28 +58,28 @@ pub fn parse_propfind_xml(req http.Request) !PropfindRequest { mut typ := PropfindType.allprop mut props := []string{} - + // Check for allprop, propname, or prop elements for child in root.children { if child is xml.XMLNode { node := child as xml.XMLNode - + // Check for allprop if node.name == 'allprop' || node.name == 'D:allprop' { typ = .allprop break } - + // Check for propname if node.name == 'propname' || node.name == 'D:propname' { typ = .propname break } - + // Check for prop if node.name == 'prop' || node.name == 'D:prop' { typ = .prop - + // Extract property names for prop_child in node.children { if prop_child is xml.XMLNode { @@ -95,25 +91,28 @@ pub fn parse_propfind_xml(req http.Request) !PropfindRequest { } } } - + if typ == .invalid { return error('Invalid PROPFIND request: missing prop, allprop, or propname element') } return PropfindRequest{ - typ: typ - props: props - depth: depth + typ: typ + props: props + depth: depth xml_content: data } } // parse_depth parses the Depth header value pub fn parse_depth(depth_str string) Depth { - if depth_str == 'infinity' { return .infinity} - else if depth_str == '0' { return .zero} - else if depth_str == '1' { return .one} - else { + if depth_str == 'infinity' { + return .infinity + } else if depth_str == '0' { + return .zero + } else if depth_str == '1' { + return .one + } else { log.warn('[WebDAV] Invalid Depth header value: ${depth_str}, defaulting to infinity') return .infinity } @@ -122,32 +121,29 @@ pub fn parse_depth(depth_str string) Depth { // Response represents a WebDAV response for a resource pub struct PropfindResponse { pub: - href string - found_props []Property + href string + found_props []Property not_found_props []Property } fn (r PropfindResponse) xml() xml.XMLNodeContents { return xml.XMLNode{ - name: 'D:response' + name: 'D:response' children: [ xml.XMLNode{ - name: 'D:href' + name: 'D:href' children: [xml.XMLNodeContents(r.href)] }, xml.XMLNode{ - name: 'D:propstat' - children: [ - xml.XMLNode{ - name: 'D:prop' - children: r.found_props.map(it.xml()) - }, - xml.XMLNode{ - name: 'D:status' - children: [xml.XMLNodeContents('HTTP/1.1 200 OK')] - } - ] - } + name: 'D:propstat' + children: [xml.XMLNode{ + name: 'D:prop' + children: r.found_props.map(it.xml()) + }, xml.XMLNode{ + name: 'D:status' + children: [xml.XMLNodeContents('HTTP/1.1 200 OK')] + }] + }, ] } } @@ -156,21 +152,21 @@ fn (r PropfindResponse) xml() xml.XMLNodeContents { pub fn (r []PropfindResponse) xml() string { // Create multistatus root node multistatus_node := xml.XMLNode{ - name: 'D:multistatus' + name: 'D:multistatus' attributes: { 'xmlns:D': 'DAV:' } - children: r.map(it.xml()) + children: r.map(it.xml()) } - + // Create a new XML document with the root node doc := xml.XMLDocument{ version: '1.0' - root: multistatus_node + root: multistatus_node } - + // Generate XML string - doc.validate() or {panic('this should never happen ${err}')} + doc.validate() or { panic('this should never happen ${err}') } return format_xml(doc.str()) } @@ -191,11 +187,11 @@ pub fn format_xml(xml_str string) string { mut i := 0 mut in_tag := false mut content_start := 0 - + // Process the string character by character for i < xml_str.len { ch := xml_str[i] - + // Start of a tag if ch == `<` { // If we were collecting content between tags, process it @@ -204,7 +200,7 @@ pub fn format_xml(xml_str string) string { content := xml_str[content_start..i].trim_space() result += content } - + in_tag = true result += '<' } @@ -223,15 +219,15 @@ pub fn format_xml(xml_str string) string { // We'll collect and process this content when we reach the next tag // or at the end of the string } - + i++ } - + // Handle any remaining content at the end of the string if !in_tag && content_start < xml_str.len { content := xml_str[content_start..].trim_space() result += content } - + return result } diff --git a/lib/dav/webdav/server.v b/lib/dav/webdav/server.v index 57f67d22..3fd17dfb 100644 --- a/lib/dav/webdav/server.v +++ b/lib/dav/webdav/server.v @@ -15,10 +15,16 @@ import strings pub fn (server &Server) index(mut ctx Context) veb.Result { ctx.set_header(.content_length, '0') ctx.set_custom_header('DAV', '1,2') or { return ctx.server_error(err.msg()) } - ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { return ctx.server_error(err.msg()) } - ctx.set_custom_header('Allow', 'OPTIONS, HEAD, GET, PROPFIND, DELETE, COPY, MOVE, PROPPATCH, LOCK, UNLOCK') or { return ctx.server_error(err.msg()) } + ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { + return ctx.server_error(err.msg()) + } + ctx.set_custom_header('Allow', 'OPTIONS, HEAD, GET, PROPFIND, DELETE, COPY, MOVE, PROPPATCH, LOCK, UNLOCK') or { + return ctx.server_error(err.msg()) + } ctx.set_custom_header('MS-Author-Via', 'DAV') or { return ctx.server_error(err.msg()) } - ctx.set_custom_header('Server', 'WsgiDAV-compatible WebDAV Server') or { return ctx.server_error(err.msg()) } + ctx.set_custom_header('Server', 'WsgiDAV-compatible WebDAV Server') or { + return ctx.server_error(err.msg()) + } return ctx.ok('') } @@ -26,17 +32,23 @@ pub fn (server &Server) index(mut ctx Context) veb.Result { pub fn (server &Server) options(mut ctx Context, path string) veb.Result { ctx.set_header(.content_length, '0') ctx.set_custom_header('DAV', '1,2') or { return ctx.server_error(err.msg()) } - ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { return ctx.server_error(err.msg()) } - ctx.set_custom_header('Allow', 'OPTIONS, HEAD, GET, PROPFIND, DELETE, COPY, MOVE, PROPPATCH, LOCK, UNLOCK') or { return ctx.server_error(err.msg()) } + ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { + return ctx.server_error(err.msg()) + } + ctx.set_custom_header('Allow', 'OPTIONS, HEAD, GET, PROPFIND, DELETE, COPY, MOVE, PROPPATCH, LOCK, UNLOCK') or { + return ctx.server_error(err.msg()) + } ctx.set_custom_header('MS-Author-Via', 'DAV') or { return ctx.server_error(err.msg()) } - ctx.set_custom_header('Server', 'WsgiDAV-compatible WebDAV Server') or { return ctx.server_error(err.msg()) } + ctx.set_custom_header('Server', 'WsgiDAV-compatible WebDAV Server') or { + return ctx.server_error(err.msg()) + } return ctx.ok('') } @['/:path...'; lock] pub fn (mut server Server) lock(mut ctx Context, path string) veb.Result { resource := ctx.req.url - + // Parse lock information from XML body instead of headers lock_info := parse_lock_xml(ctx.req.data) or { console.print_stderr('Failed to parse lock XML: ${err}') @@ -48,7 +60,7 @@ pub fn (mut server Server) lock(mut ctx Context, path string) veb.Result { // Parse timeout header which can be in format "Second-600" timeout_str := ctx.get_custom_header('Timeout') or { 'Second-3600' } mut timeout := 3600 // Default 1 hour - + if timeout_str.to_lower().starts_with('second-') { timeout_val := timeout_str.all_after('Second-') if timeout_val.int() > 0 { @@ -56,13 +68,13 @@ pub fn (mut server Server) lock(mut ctx Context, path string) veb.Result { } } - new_lock := Lock { - ...lock_info, + new_lock := Lock{ + ...lock_info resource: ctx.req.url - depth: ctx.get_custom_header('Depth') or { '0' }.int() - timeout: timeout + depth: ctx.get_custom_header('Depth') or { '0' }.int() + timeout: timeout } - + // Try to acquire the lock lock_result := server.lock_manager.lock(new_lock) or { // If we get here, the resource is locked by a different owner @@ -72,10 +84,14 @@ pub fn (mut server Server) lock(mut ctx Context, path string) veb.Result { // Set WsgiDAV-like headers ctx.res.set_status(.ok) - ctx.set_custom_header('Lock-Token', 'opaquelocktoken:${lock_result.token}') or { return ctx.server_error(err.msg()) } - ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { return ctx.server_error(err.msg()) } + ctx.set_custom_header('Lock-Token', 'opaquelocktoken:${lock_result.token}') or { + return ctx.server_error(err.msg()) + } + ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { + return ctx.server_error(err.msg()) + } ctx.set_custom_header('Server', 'veb WebDAV Server') or { return ctx.server_error(err.msg()) } - + // Create a proper WebDAV lock response return ctx.send_response_to_client('application/xml', lock_result.xml()) } @@ -86,7 +102,7 @@ pub fn (mut server Server) unlock(mut ctx Context, path string) veb.Result { token_ := ctx.get_custom_header('Lock-Token') or { return ctx.server_error(err.msg()) } // Handle the opaquelocktoken: prefix that WsgiDAV uses token := token_.trim_string_left('<').trim_string_right('>') - .trim_string_left('opaquelocktoken:') + .trim_string_left('opaquelocktoken:') if token.len == 0 { console.print_stderr('Unlock failed: `Lock-Token` header required.') ctx.res.set_status(.bad_request) @@ -95,8 +111,12 @@ pub fn (mut server Server) unlock(mut ctx Context, path string) veb.Result { if server.lock_manager.unlock_with_token(resource, token) { // Add WsgiDAV-like headers - ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { return ctx.server_error(err.msg()) } - ctx.set_custom_header('Server', 'veb WebDAV Server') or { return ctx.server_error(err.msg()) } + ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { + return ctx.server_error(err.msg()) + } + ctx.set_custom_header('Server', 'veb WebDAV Server') or { + return ctx.server_error(err.msg()) + } ctx.res.set_status(.no_content) return ctx.text('') } @@ -109,20 +129,26 @@ pub fn (mut server Server) unlock(mut ctx Context, path string) veb.Result { @['/:path...'; get] pub fn (mut server Server) get_file(mut ctx Context, path string) veb.Result { log.info('[WebDAV] Getting file ${path}') - file_data := server.vfs.file_read(path) or { + file_data := server.vfs.file_read(path) or { log.error('[WebDAV] ${err.msg()}') - return ctx.server_error(err.msg()) + return ctx.server_error(err.msg()) } ext := path.all_after_last('.') content_type := veb.mime_types['.${ext}'] or { 'text/plain; charset=utf-8' } - + // Add WsgiDAV-like headers ctx.set_header(.content_length, file_data.len.str()) - ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { return ctx.server_error(err.msg()) } - ctx.set_header(.accept_ranges, 'bytes') - ctx.set_custom_header('ETag', '"${path}-${time.now().unix()}"') or { return ctx.server_error(err.msg()) } - ctx.set_custom_header('Last-Modified', texttools.format_rfc1123(time.utc())) or { return ctx.server_error(err.msg()) } - + ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { + return ctx.server_error(err.msg()) + } + ctx.set_header(.accept_ranges, 'bytes') + ctx.set_custom_header('ETag', '"${path}-${time.now().unix()}"') or { + return ctx.server_error(err.msg()) + } + ctx.set_custom_header('Last-Modified', texttools.format_rfc1123(time.utc())) or { + return ctx.server_error(err.msg()) + } + return ctx.send_response_to_client(content_type, file_data.bytestr()) } @@ -158,15 +184,15 @@ pub fn (mut server Server) exists(mut ctx Context, path string) veb.Result { @['/:path...'; delete] pub fn (mut server Server) delete(mut ctx Context, path string) veb.Result { - server.vfs.delete(path) or { + server.vfs.delete(path) or { return ctx.server_error(err.msg()) } + + // Add WsgiDAV-like headers + ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { return ctx.server_error(err.msg()) } - - // Add WsgiDAV-like headers - ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { return ctx.server_error(err.msg()) } ctx.set_custom_header('Server', 'veb WebDAV Server') or { return ctx.server_error(err.msg()) } - - server.vfs.print() or {panic(err)} + + server.vfs.print() or { panic(err) } // Return success response return ctx.no_content() } @@ -195,9 +221,11 @@ pub fn (mut server Server) copy(mut ctx Context, path string) veb.Result { } // Add WsgiDAV-like headers - ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { return ctx.server_error(err.msg()) } + ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { + return ctx.server_error(err.msg()) + } ctx.set_custom_header('Server', 'veb WebDAV Server') or { return ctx.server_error(err.msg()) } - + // Return 201 Created if the destination was created, 204 No Content if it was overwritten if destination_exists { return ctx.no_content() @@ -232,9 +260,11 @@ pub fn (mut server Server) move(mut ctx Context, path string) veb.Result { } // Add WsgiDAV-like headers - ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { return ctx.server_error(err.msg()) } + ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { + return ctx.server_error(err.msg()) + } ctx.set_custom_header('Server', 'veb WebDAV Server') or { return ctx.server_error(err.msg()) } - + // Return 204 No Content for successful move operations (WsgiDAV behavior) ctx.res.set_status(.no_content) return ctx.text('') @@ -256,7 +286,9 @@ pub fn (mut server Server) mkcol(mut ctx Context, path string) veb.Result { // Add WsgiDAV-like headers ctx.set_header(.content_type, 'text/html; charset=utf-8') ctx.set_header(.content_length, '0') - ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { return ctx.server_error(err.msg()) } + ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { + return ctx.server_error(err.msg()) + } ctx.set_custom_header('Server', 'veb WebDAV Server') or { return ctx.server_error(err.msg()) } ctx.res.set_status(.created) @@ -335,7 +367,7 @@ fn (mut server Server) create_or_update(mut ctx Context, path string) veb.Result if is_chunked { // For chunked encoding, we need to read until we get a zero-length chunk log.info('[WebDAV] Reading chunked data for ${path}') - + // Write initial data to the file if all_data.len > 0 { server.vfs.file_write(path, all_data) or { @@ -368,11 +400,10 @@ fn (mut server Server) create_or_update(mut ctx Context, path string) veb.Result break } - // Process the chunk using the chunked module chunk := buffer[..n].clone() chunk_str := chunk.bytestr() - + // Try to decode the chunk if it looks like a valid chunked format if chunk_str.contains('\r\n') { log.debug('[WebDAV] Attempting to decode chunked data') @@ -391,7 +422,7 @@ fn (mut server Server) create_or_update(mut ctx Context, path string) veb.Result return veb.no_result() } } - + // If decoding succeeds, write the decoded data if decoded.len > 0 { log.debug('[WebDAV] Successfully decoded chunked data: ${decoded.len} bytes') @@ -449,7 +480,7 @@ fn (mut server Server) create_or_update(mut ctx Context, path string) veb.Result for remaining > 0 { // Adjust buffer size for the last chunk if needed read_size := if remaining < buffer.len { remaining } else { buffer.len } - + // Read a chunk from the connection n := ctx.conn.read(mut buffer[..read_size]) or { if err.code() == net.err_timed_out_code { @@ -511,13 +542,17 @@ fn (mut server Server) create_or_update(mut ctx Context, path string) veb.Result return ctx.server_error('Failed to write file: ${err.msg()}') } log.info('[WebDAV] Created empty file at ${path}') - + // Add WsgiDAV-like headers ctx.set_header(.content_type, 'text/html; charset=utf-8') ctx.set_header(.content_length, '0') - ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { return ctx.server_error(err.msg()) } - ctx.set_custom_header('Server', 'veb WebDAV Server') or { return ctx.server_error(err.msg()) } - + ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { + return ctx.server_error(err.msg()) + } + ctx.set_custom_header('Server', 'veb WebDAV Server') or { + return ctx.server_error(err.msg()) + } + // Set appropriate status code based on whether this was a create or update if is_update { return ctx.no_content() diff --git a/lib/dav/webdav/server_propfind.v b/lib/dav/webdav/server_propfind.v index d0309277..f155ce5e 100644 --- a/lib/dav/webdav/server_propfind.v +++ b/lib/dav/webdav/server_propfind.v @@ -12,18 +12,18 @@ import net.http import veb @['/:path...'; propfind] -fn (mut server Server) propfind(mut ctx Context, path string) veb.Result { +fn (mut server Server) propfind(mut ctx Context, path string) veb.Result { // Parse PROPFIND request propfind_req := parse_propfind_xml(ctx.req) or { return ctx.error(WebDAVError{ - status: .bad_request + status: .bad_request message: 'Failed to parse PROPFIND XML: ${err}' - tag: 'propfind-parse-error' + tag: 'propfind-parse-error' }) } log.debug('[WebDAV] Propfind Request: ${propfind_req.typ}') - + // Check if resource is locked if server.lock_manager.is_locked(ctx.req.url) { // If the resource is locked, we should still return properties @@ -31,12 +31,12 @@ fn (mut server Server) propfind(mut ctx Context, path string) veb.Result { // This is handled in the property generation log.info('[WebDAV] Resource is locked: ${ctx.req.url}') } - - entry := server.vfs.get(path) or { + + entry := server.vfs.get(path) or { return ctx.error( - status: .not_found + status: .not_found message: 'Path ${path} does not exist' - tag: 'resource-must-be-null' + tag: 'resource-must-be-null' ) } @@ -44,11 +44,14 @@ fn (mut server Server) propfind(mut ctx Context, path string) veb.Result { return ctx.server_error('Failed to get entry properties ${err}') } - // Add WsgiDAV-like headers ctx.set_header(.content_type, 'application/xml; charset=utf-8') - ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { return ctx.server_error(err.msg()) } - ctx.set_custom_header('Server', 'WsgiDAV-compatible WebDAV Server') or { return ctx.server_error(err.msg()) } + ctx.set_custom_header('Date', texttools.format_rfc1123(time.utc())) or { + return ctx.server_error(err.msg()) + } + ctx.set_custom_header('Server', 'WsgiDAV-compatible WebDAV Server') or { + return ctx.server_error(err.msg()) + } // Create multistatus response using the responses ctx.res.set_status(.multi_status) @@ -67,14 +70,14 @@ fn (mut server Server) get_entry_property(entry &vfs.FSEntry, name string) !Prop 'quota-used-bytes' { Property(QuotaUsedBytes(16184098816)) } 'quotaused' { Property(QuotaUsed(16184098816)) } 'quota' { Property(Quota(16184098816)) } - else { panic('implement ${name}')} + else { panic('implement ${name}') } } } // get_responses returns all properties for the given path and depth fn (mut server Server) get_responses(entry vfs.FSEntry, req PropfindRequest, path string) ![]PropfindResponse { mut responses := []PropfindResponse{} - + if req.typ == .prop { mut properties := []Property{} mut erronous_properties := map[int][]Property{} // properties that have errors indexed by error code @@ -86,31 +89,32 @@ fn (mut server Server) get_responses(entry vfs.FSEntry, req PropfindRequest, pat } } // main entry response - responses << PropfindResponse { - href: if entry.is_dir() {'${path.trim_string_right("/")}/'} else {path} + responses << PropfindResponse{ + href: if entry.is_dir() { '${path.trim_string_right('/')}/' } else { path } // not_found: entry.get_unfound_properties(req) found_props: properties } } else { - responses << PropfindResponse { - href: if entry.is_dir() {'${path.trim_string_right("/")}/'} else {path} + responses << PropfindResponse{ + href: if entry.is_dir() { '${path.trim_string_right('/')}/' } else { path } // not_found: entry.get_unfound_properties(req) found_props: server.get_properties(entry) } } - - if !entry.is_dir() || req.depth == .zero { + + if !entry.is_dir() || req.depth == .zero { return responses } - entries := server.vfs.dir_list(path) or { + entries := server.vfs.dir_list(path) or { log.error('Failed to list directory for ${path} ${err}') - return responses } + return responses + } for e in entries { - responses << server.get_responses(e, PropfindRequest { - ...req, + responses << server.get_responses(e, PropfindRequest{ + ...req depth: if req.depth == .one { .zero } else { .infinity } - }, '${path.trim_string_right("/")}/${e.get_metadata().name}')! + }, '${path.trim_string_right('/')}/${e.get_metadata().name}')! } return responses } @@ -128,12 +132,16 @@ fn (mut server Server) get_properties(entry &vfs.FSEntry) []Property { props << QuotaAvailableBytes(16184098816) props << QuotaUsedBytes(16184098816) } else { - props << GetContentType(if entry.is_dir() {'httpd/unix-directory'} else {get_file_content_type(entry.get_metadata().name)}) + props << GetContentType(if entry.is_dir() { + 'httpd/unix-directory' + } else { + get_file_content_type(entry.get_metadata().name) + }) } props << ResourceType(entry.is_dir()) // props << SupportedLock('') // props << LockDiscovery('') - + // Content length (only for files) if !entry.is_dir() { props << GetContentLength(metadata.size.str()) @@ -142,4 +150,4 @@ fn (mut server Server) get_properties(entry &vfs.FSEntry) []Property { // Creation date props << CreationDate(format_iso8601(metadata.created_time())) return props -} \ No newline at end of file +} diff --git a/lib/dav/webdav/server_test.v b/lib/dav/webdav/server_test.v index 16bdf6ab..dfca5cdb 100644 --- a/lib/dav/webdav/server_test.v +++ b/lib/dav/webdav/server_test.v @@ -13,27 +13,34 @@ fn testsuite_begin() { log.set_level(.debug) } -const testdata_path := os.join_path(os.dir(@FILE), 'testdata') -const database_path := os.join_path(testdata_path, 'database') +const testdata_path = os.join_path(os.dir(@FILE), 'testdata') +const database_path = os.join_path(testdata_path, 'database') // Helper function to create a test server and DatabaseVFS fn setup_test_server(function string) !(&vfs_db.DatabaseVFS, &Server) { if !os.exists(testdata_path) { - os.mkdir_all(testdata_path) or { return error('Failed to create testdata directory: ${err}') } + os.mkdir_all(testdata_path) or { + return error('Failed to create testdata directory: ${err}') + } } if !os.exists(database_path) { - os.mkdir_all(database_path) or { return error('Failed to create database directory: ${err}') } + os.mkdir_all(database_path) or { + return error('Failed to create database directory: ${err}') + } } - + mut metadata_db := ourdb.new(path: os.join_path(database_path, '${function}/metadata'))! mut data_db := ourdb.new(path: os.join_path(database_path, '${function}/data'))! mut vfs := vfs_db.new(mut metadata_db, mut data_db)! - + // Create a test server - mut server := new_server(vfs: vfs, user_db: { - 'admin': '123' - })! - + mut server := new_server( + vfs: vfs + user_db: { + 'admin': '123' + } + )! + return vfs, server } @@ -55,17 +62,17 @@ fn test_server_run() ! { fn test_server_index() ! { _, mut server := setup_test_server(@FILE)! - + mut ctx := Context{ req: http.Request{ method: http.Method.head - url: '/' + url: '/' } res: http.Response{} } - + server.index(mut ctx) - + assert ctx.res.status() == http.Status.ok assert ctx.res.header.get_custom('DAV')! == '1,2' assert ctx.res.header.get(.allow)! == 'OPTIONS, PROPFIND, MKCOL, GET, HEAD, POST, PUT, DELETE, COPY, MOVE' @@ -78,17 +85,17 @@ fn test_server_index() ! { fn test_server_options() ! { _, mut server := setup_test_server(@FILE)! - + mut ctx := Context{ req: http.Request{ method: http.Method.options - url: '/test_path' + url: '/test_path' } res: http.Response{} } - + server.options(mut ctx, 'test_path') - + assert ctx.res.status() == http.Status.ok assert ctx.res.header.get_custom('DAV')! == '1,2' assert ctx.res.header.get(.allow)! == 'OPTIONS, PROPFIND, MKCOL, GET, HEAD, POST, PUT, DELETE, COPY, MOVE' @@ -101,10 +108,10 @@ fn test_server_options() ! { fn test_server_lock() ! { _, mut server := setup_test_server(@FILE)! - + // Create a test file to lock test_path := 'test_lock_file.txt' - + // Prepare lock XML request body lock_xml := ' @@ -114,28 +121,28 @@ fn test_server_lock() ! { test-user ' - + mut ctx := Context{ req: http.Request{ method: http.Method.lock - url: '/${test_path}' - data: lock_xml + url: '/${test_path}' + data: lock_xml header: http.Header{} } res: http.Response{} } - + // Set headers ctx.req.header.add_custom('Depth', '0')! ctx.req.header.add_custom('Timeout', 'Second-3600')! - + server.lock(mut ctx, test_path) - + // Check response assert ctx.res.status() == http.Status.ok assert ctx.res.header.get_custom('Lock-Token')! != '' assert ctx.res.header.get(.content_type)! == 'application/xml' - + // Verify response contains proper lock XML assert ctx.res.body.len > 0 assert ctx.res.body.contains('${root_dir}') // Should only include the requested resource assert !ctx.res.body.contains('${file_in_root}') - + // Test PROPFIND with depth=1 (resource and immediate children) mut ctx2 := Context{ req: http.Request{ method: http.Method.propfind - url: '/${root_dir}' - data: propfind_xml + url: '/${root_dir}' + data: propfind_xml header: http.Header{} } res: http.Response{} } - + // Set Depth header to 1 ctx2.req.header.add_custom('Depth', '1')! - + server.propfind(mut ctx2, root_dir) - + // Check response assert ctx2.res.status() == http.Status.multi_status assert ctx2.res.body.contains('${subdir}') // But not grandchildren assert !ctx2.res.body.contains('${file_in_subdir}') - + // Test PROPFIND with depth=infinity (all descendants) mut ctx3 := Context{ req: http.Request{ method: http.Method.propfind - url: '/${root_dir}' - data: propfind_xml + url: '/${root_dir}' + data: propfind_xml header: http.Header{} } res: http.Response{} } - + // Set Depth header to infinity ctx3.req.header.add_custom('Depth', 'infinity')! - + server.propfind(mut ctx3, root_dir) - + // Check response assert ctx3.res.status() == http.Status.multi_status // Should include all descendants @@ -533,22 +540,22 @@ fn test_server_propfind() ! { assert ctx3.res.body.contains('${file_in_root}') assert ctx3.res.body.contains('${subdir}') assert ctx3.res.body.contains('${file_in_subdir}') - + // Test PROPFIND for non-existent resource mut ctx4 := Context{ req: http.Request{ method: http.Method.propfind - url: '/nonexistent' - data: propfind_xml + url: '/nonexistent' + data: propfind_xml header: http.Header{} } res: http.Response{} } - + ctx4.req.header.add_custom('Depth', '0')! - + server.propfind(mut ctx4, 'nonexistent') - + // Should return not found assert ctx4.res.status() == http.Status.not_found } diff --git a/lib/develop/performance/cmd/imports.vsh b/lib/develop/performance/cmd/imports.vsh index d2f837b4..a5d069c7 100755 --- a/lib/develop/performance/cmd/imports.vsh +++ b/lib/develop/performance/cmd/imports.vsh @@ -27,7 +27,7 @@ fn walk_v_files(dir string) []string { // Function to extract imports from a .v file fn extract_imports(file_path string) []string { content := os.read_file(file_path) or { - println('Failed to read file: $file_path') + println('Failed to read file: ${file_path}') return [] } mut imports := []string{} @@ -59,7 +59,10 @@ fn find_module_dir(module_name string) string { // Function to build a tree of imports, including .vmodules fn build_import_tree(file_path string, mut visited map[string]bool) ImportNode { if file_path in visited { - return ImportNode{name: os.base(file_path), children: []} + return ImportNode{ + name: os.base(file_path) + children: [] + } } visited[file_path] = true @@ -76,13 +79,22 @@ fn build_import_tree(file_path string, mut visited map[string]bool) ImportNode { child_node := build_import_tree(module_file, mut visited) module_children << child_node } - children << ImportNode{name: import_path, children: module_children} + children << ImportNode{ + name: import_path + children: module_children + } } else { - children << ImportNode{name: import_path, children: []} + children << ImportNode{ + name: import_path + children: [] + } } } - return ImportNode{name: os.base(file_path), children: children} + return ImportNode{ + name: os.base(file_path) + children: children + } } // Function to print the tree of imports @@ -102,4 +114,4 @@ fn main() { root_node := build_import_tree(v_file, mut visited) print_import_tree(root_node, 0) } -} \ No newline at end of file +} diff --git a/lib/develop/vscode_extensions/ourdb/factory.v b/lib/develop/vscode_extensions/ourdb/factory.v index 91f3c70d..7267b953 100644 --- a/lib/develop/vscode_extensions/ourdb/factory.v +++ b/lib/develop/vscode_extensions/ourdb/factory.v @@ -17,7 +17,7 @@ pub mut: pub fn new() !VSCodeExtension { // Determine the extension directory based on OS extension_dir := get_extension_dir() - + return VSCodeExtension{ extension_dir: extension_dir } @@ -26,7 +26,7 @@ pub fn new() !VSCodeExtension { // get_extension_dir determines the VSCode extension directory based on OS fn get_extension_dir() string { home_dir := os.home_dir() - + // Extension directory path based on OS return os.join_path(home_dir, '.vscode', 'extensions', 'local-herolib.ourdb-viewer-0.0.1') } @@ -44,27 +44,27 @@ pub fn (mut ext VSCodeExtension) install() ! { os.mkdir_all(ext.extension_dir) or { return error('Failed to create extension directory: ${err}') } - + // Write embedded files to the extension directory // extension.js os.write_file(os.join_path(ext.extension_dir, 'extension.js'), extension_js_content.to_string()) or { return error('Failed to write extension.js: ${err}') } - + // package.json os.write_file(os.join_path(ext.extension_dir, 'package.json'), package_json_content.to_string()) or { return error('Failed to write package.json: ${err}') } - + // README.md os.write_file(os.join_path(ext.extension_dir, 'README.md'), readme_content.to_string()) or { return error('Failed to write README.md: ${err}') } - + println('OurDB Viewer extension installed to: ${ext.extension_dir}') println('Please restart VSCode for the changes to take effect.') println('After restarting, you should be able to open .ourdb files.') - + return } @@ -74,41 +74,33 @@ pub fn (mut ext VSCodeExtension) uninstall() ! { os.rmdir_all(ext.extension_dir) or { return error('Failed to remove extension directory: ${err}') } - + println('OurDB Viewer extension uninstalled from: ${ext.extension_dir}') println('Please restart VSCode for the changes to take effect.') } else { println('Extension not found at: ${ext.extension_dir}') } - + return } // is_installed checks if the extension is installed pub fn (ext VSCodeExtension) is_installed() bool { - return os.exists(ext.extension_dir) && - os.exists(os.join_path(ext.extension_dir, 'extension.js')) && - os.exists(os.join_path(ext.extension_dir, 'package.json')) + return os.exists(ext.extension_dir) + && os.exists(os.join_path(ext.extension_dir, 'extension.js')) + && os.exists(os.join_path(ext.extension_dir, 'package.json')) } // install_extension is a convenience function to install the extension pub fn install_extension() ! { - mut ext := new() or { - return error('Failed to initialize extension: ${err}') - } - - ext.install() or { - return error('Failed to install extension: ${err}') - } + mut ext := new() or { return error('Failed to initialize extension: ${err}') } + + ext.install() or { return error('Failed to install extension: ${err}') } } // uninstall_extension is a convenience function to uninstall the extension pub fn uninstall_extension() ! { - mut ext := new() or { - return error('Failed to initialize extension: ${err}') - } - - ext.uninstall() or { - return error('Failed to uninstall extension: ${err}') - } + mut ext := new() or { return error('Failed to initialize extension: ${err}') } + + ext.uninstall() or { return error('Failed to uninstall extension: ${err}') } } diff --git a/lib/installers/db/cometbft/cometbft_actions.v b/lib/installers/db/cometbft/cometbft_actions.v index 2b1fa3d1..8255c907 100644 --- a/lib/installers/db/cometbft/cometbft_actions.v +++ b/lib/installers/db/cometbft/cometbft_actions.v @@ -95,30 +95,30 @@ fn upload() ! { fn install() ! { console.print_header('install cometbft') mut url := '' - if core.is_linux_arm() { - url = 'https://github.com/cometbft/cometbft/releases/download/v${version}/cometbft_${version}_linux_arm64.tar.gz' + if core.is_linux_arm() { + url = 'https://github.com/cometbft/cometbft/releases/download/v${version}/cometbft_${version}_linux_arm64.tar.gz' } else if core.is_linux_intel() { - url = 'https://github.com/cometbft/cometbft/releases/download/v${version}/cometbft_${version}_linux_amd64.tar.gz' - } else if core.is_osx_arm() { - url = 'https://github.com/cometbft/cometbft/releases/download/v${version}/cometbft_${version}_darwin_arm64.tar.gz' + url = 'https://github.com/cometbft/cometbft/releases/download/v${version}/cometbft_${version}_linux_amd64.tar.gz' + } else if core.is_osx_arm() { + url = 'https://github.com/cometbft/cometbft/releases/download/v${version}/cometbft_${version}_darwin_arm64.tar.gz' } else if osal.is_osx_intel() { - url = 'https://github.com/cometbft/cometbft/releases/download/v${version}/cometbft_${version}_darwin_amd64.tar.gz' + url = 'https://github.com/cometbft/cometbft/releases/download/v${version}/cometbft_${version}_darwin_amd64.tar.gz' } else { - return error('unsported platform') + return error('unsported platform') } mut dest := osal.download( - url: url - minsize_kb: 9000 - expand_dir: '/tmp/cometbft' + url: url + minsize_kb: 9000 + expand_dir: '/tmp/cometbft' )! - //dest.moveup_single_subdir()! + // dest.moveup_single_subdir()! mut binpath := dest.file_get('cometbft')! osal.cmd_add( - cmdname: 'cometbft' - source: binpath.path + cmdname: 'cometbft' + source: binpath.path )! } diff --git a/lib/installers/db/cometbft/cometbft_model.v b/lib/installers/db/cometbft/cometbft_model.v index 6090af48..be068409 100644 --- a/lib/installers/db/cometbft/cometbft_model.v +++ b/lib/installers/db/cometbft/cometbft_model.v @@ -12,7 +12,7 @@ const default = true @[heap] pub struct CometBFT { pub mut: - name string = 'default' + name string = 'default' // homedir string // configpath string // username string diff --git a/lib/installers/db/qdrant/qdrant_actions.v b/lib/installers/db/qdrant/qdrant_actions.v index a74832b4..e76a9eca 100644 --- a/lib/installers/db/qdrant/qdrant_actions.v +++ b/lib/installers/db/qdrant/qdrant_actions.v @@ -17,18 +17,18 @@ import os fn startupcmd() ![]zinit.ZProcessNewArgs { mut res := []zinit.ZProcessNewArgs{} res << zinit.ZProcessNewArgs{ - name: 'qdrant' - cmd: 'qdrant --config-path ${os.home_dir()}/hero/var/qdrant/config.yaml' + name: 'qdrant' + cmd: 'qdrant --config-path ${os.home_dir()}/hero/var/qdrant/config.yaml' } return res } fn running() !bool { - println("running") + println('running') mut installer := get()! - url:='curl http://localhost:6333' + url := 'curl http://localhost:6333' mut conn := httpconnection.new(name: 'qdrant', url: url)! - r := conn.get(prefix: 'healthz', debug: false) or {return false} + r := conn.get(prefix: 'healthz', debug: false) or { return false } println(r) return false } @@ -51,15 +51,15 @@ fn stop_post() ! { fn installed() !bool { res := os.execute('${osal.profile_path_source_and()!} qdrant -V') if res.exit_code != 0 { - println("Error to call qdrant: ${res}") - return false + println('Error to call qdrant: ${res}') + return false } - r := res.output.split_into_lines().filter(it.contains("qdrant")) + r := res.output.split_into_lines().filter(it.contains('qdrant')) if r.len != 1 { - return error("couldn't parse qdrant version.\n${res.output}") + return error("couldn't parse qdrant version.\n${res.output}") } - if texttools.version(version) == texttools.version(r[0].all_after("qdrant")) { - return true + if texttools.version(version) == texttools.version(r[0].all_after('qdrant')) { + return true } return false } @@ -81,26 +81,26 @@ fn install() ! { console.print_header('install qdrant') mut url := '' if core.is_linux_arm()! { - url = 'https://github.com/qdrant/qdrant/releases/download/v${version}/qdrant-aarch64-unknown-linux-musl.tar.gz' + url = 'https://github.com/qdrant/qdrant/releases/download/v${version}/qdrant-aarch64-unknown-linux-musl.tar.gz' } else if core.is_linux_intel()! { - url = 'https://github.com/qdrant/qdrant/releases/download/v${version}/qdrant-x86_64-unknown-linux-musl.tar.gz' + url = 'https://github.com/qdrant/qdrant/releases/download/v${version}/qdrant-x86_64-unknown-linux-musl.tar.gz' } else if core.is_osx_arm()! { - url = 'https://github.com/qdrant/qdrant/releases/download/v${version}/qdrant-aarch64-apple-darwin.tar.gz' + url = 'https://github.com/qdrant/qdrant/releases/download/v${version}/qdrant-aarch64-apple-darwin.tar.gz' } else if core.is_osx_intel()! { - url = 'https://github.com/qdrant/qdrant/releases/download/v${version}/qdrant-x86_64-apple-darwin.tar.gz' + url = 'https://github.com/qdrant/qdrant/releases/download/v${version}/qdrant-x86_64-apple-darwin.tar.gz' } else { - return error('unsported platform') + return error('unsported platform') } mut dest := osal.download( - url: url - minsize_kb: 18000 - expand_dir: '/tmp/qdrant' + url: url + minsize_kb: 18000 + expand_dir: '/tmp/qdrant' )! mut binpath := dest.file_get('qdrant')! osal.cmd_add( - cmdname: 'qdrant' - source: binpath.path + cmdname: 'qdrant' + source: binpath.path )! } @@ -134,16 +134,15 @@ fn build() ! { } fn destroy() ! { - - osal.process_kill_recursive(name:'qdrant')! + osal.process_kill_recursive(name: 'qdrant')! osal.cmd_delete('qdrant')! osal.package_remove(' qdrant ')! - osal.rm(" + osal.rm(' qdrant ${os.home_dir()}/hero/var/qdrant - ")! + ')! } diff --git a/lib/installers/threefold/griddriver/griddriver_actions.v b/lib/installers/threefold/griddriver/griddriver_actions.v index a9b2f6a7..952b7abb 100644 --- a/lib/installers/threefold/griddriver/griddriver_actions.v +++ b/lib/installers/threefold/griddriver/griddriver_actions.v @@ -9,7 +9,7 @@ import os // checks if a certain version or above is installed fn installed() !bool { - res := os.execute("griddriver --version") + res := os.execute('griddriver --version') if res.exit_code != 0 { return false } diff --git a/lib/installers/web/bun/bun_actions.v b/lib/installers/web/bun/bun_actions.v index 6c7c49ec..747c1c6a 100644 --- a/lib/installers/web/bun/bun_actions.v +++ b/lib/installers/web/bun/bun_actions.v @@ -45,7 +45,7 @@ fn upload() ! { fn install() ! { console.print_header('install bun') - destroy()! + destroy()! osal.exec(cmd: 'unset BUN_INSTALL && curl -fsSL https://bun.sh/install | bash')! } diff --git a/lib/installers/web/tailwind/tailwind_actions.v b/lib/installers/web/tailwind/tailwind_actions.v index b46fbd3c..27205708 100644 --- a/lib/installers/web/tailwind/tailwind_actions.v +++ b/lib/installers/web/tailwind/tailwind_actions.v @@ -22,8 +22,8 @@ fn installed() !bool { return false } return true - }else{ - println("error in executing tailwindcss") + } else { + println('error in executing tailwindcss') println(res) } return false diff --git a/lib/installers/web/tailwind4/tailwind_actions.v b/lib/installers/web/tailwind4/tailwind_actions.v index a4c6c256..b9b991fd 100644 --- a/lib/installers/web/tailwind4/tailwind_actions.v +++ b/lib/installers/web/tailwind4/tailwind_actions.v @@ -22,8 +22,8 @@ fn installed() !bool { return false } return true - }else{ - println("error in executing tailwindcss") + } else { + println('error in executing tailwindcss') println(res) } return false diff --git a/lib/installers/web/tailwind4/tailwind_model.v b/lib/installers/web/tailwind4/tailwind_model.v index 0076155b..ebd6858d 100644 --- a/lib/installers/web/tailwind4/tailwind_model.v +++ b/lib/installers/web/tailwind4/tailwind_model.v @@ -2,7 +2,6 @@ module tailwind4 import freeflowuniverse.herolib.data.encoderhero - pub const version = '4.0.8' const singleton = false const default = true diff --git a/lib/mcp/backend_interface.v b/lib/mcp/backend_interface.v index 70d9af74..1cd79e29 100644 --- a/lib/mcp/backend_interface.v +++ b/lib/mcp/backend_interface.v @@ -10,13 +10,13 @@ interface Backend { resource_subscribed(uri string) !bool resource_contents_get(uri string) ![]ResourceContent resource_templates_list() ![]ResourceTemplate - + // Prompt methods prompt_exists(name string) !bool prompt_get(name string) !Prompt prompt_list() ![]Prompt prompt_messages_get(name string, arguments map[string]string) ![]PromptMessage - + // Tool methods tool_exists(name string) !bool tool_get(name string) !Tool @@ -25,4 +25,4 @@ interface Backend { mut: resource_subscribe(uri string) ! resource_unsubscribe(uri string) ! -} \ No newline at end of file +} diff --git a/lib/mcp/backend_memory.v b/lib/mcp/backend_memory.v index 669959ce..61d47da5 100644 --- a/lib/mcp/backend_memory.v +++ b/lib/mcp/backend_memory.v @@ -5,17 +5,17 @@ import x.json2 pub struct MemoryBackend { pub mut: // Resource related fields - resources map[string]Resource - subscriptions []string // list of subscribed resource uri's - resource_contents map[string][]ResourceContent + resources map[string]Resource + subscriptions []string // list of subscribed resource uri's + resource_contents map[string][]ResourceContent resource_templates map[string]ResourceTemplate - + // Prompt related fields - prompts map[string]Prompt + prompts map[string]Prompt prompt_messages map[string][]PromptMessage - + // Tool related fields - tools map[string]Tool + tools map[string]Tool tool_handlers map[string]ToolHandler } @@ -24,7 +24,7 @@ fn (b &MemoryBackend) resource_exists(uri string) !bool { } fn (b &MemoryBackend) resource_get(uri string) !Resource { - return b.resources[uri] or { return error("resource not found") } + return b.resources[uri] or { return error('resource not found') } } fn (b &MemoryBackend) resource_list() ![]Resource { @@ -46,7 +46,7 @@ fn (mut b MemoryBackend) resource_unsubscribe(uri string) ! { } fn (b &MemoryBackend) resource_contents_get(uri string) ![]ResourceContent { - return b.resource_contents[uri] or { return error("resource contents not found") } + return b.resource_contents[uri] or { return error('resource contents not found') } } fn (b &MemoryBackend) resource_templates_list() ![]ResourceTemplate { @@ -60,7 +60,7 @@ fn (b &MemoryBackend) prompt_exists(name string) !bool { } fn (b &MemoryBackend) prompt_get(name string) !Prompt { - return b.prompts[name] or { return error("prompt not found") } + return b.prompts[name] or { return error('prompt not found') } } fn (b &MemoryBackend) prompt_list() ![]Prompt { @@ -69,38 +69,38 @@ fn (b &MemoryBackend) prompt_list() ![]Prompt { fn (b &MemoryBackend) prompt_messages_get(name string, arguments map[string]string) ![]PromptMessage { // Get the base messages for this prompt - base_messages := b.prompt_messages[name] or { return error("prompt messages not found") } - + base_messages := b.prompt_messages[name] or { return error('prompt messages not found') } + // Apply arguments to the messages mut messages := []PromptMessage{} - + for msg in base_messages { mut content := msg.content - + // If the content is text, replace argument placeholders if content.typ == 'text' { mut text := content.text - + // Replace each argument in the text for arg_name, arg_value in arguments { text = text.replace('{{${arg_name}}}', arg_value) } - + content = PromptContent{ - typ: content.typ - text: text - data: content.data + typ: content.typ + text: text + data: content.data mimetype: content.mimetype resource: content.resource } } - + messages << PromptMessage{ - role: msg.role + role: msg.role content: content } } - + return messages } @@ -111,7 +111,7 @@ fn (b &MemoryBackend) tool_exists(name string) !bool { } fn (b &MemoryBackend) tool_get(name string) !Tool { - return b.tools[name] or { return error("tool not found") } + return b.tools[name] or { return error('tool not found') } } fn (b &MemoryBackend) tool_list() ![]Tool { @@ -120,19 +120,19 @@ fn (b &MemoryBackend) tool_list() ![]Tool { fn (b &MemoryBackend) tool_call(name string, arguments map[string]json2.Any) !ToolCallResult { // Get the tool handler - handler := b.tool_handlers[name] or { return error("tool handler not found") } - + handler := b.tool_handlers[name] or { return error('tool handler not found') } + // Call the handler with the provided arguments - return handler(arguments) or { + return handler(arguments) or { // If the handler throws an error, return it as a tool error return ToolCallResult{ is_error: true - content: [ + content: [ ToolContent{ - typ: 'text' + typ: 'text' text: 'Error: ${err.msg}' - } + }, ] } } -} \ No newline at end of file +} diff --git a/lib/mcp/baobab/baobab_tools.v b/lib/mcp/baobab/baobab_tools.v index 7ab34b30..9497eb4e 100644 --- a/lib/mcp/baobab/baobab_tools.v +++ b/lib/mcp/baobab/baobab_tools.v @@ -1,39 +1,40 @@ module baobab import freeflowuniverse.herolib.mcp -import x.json2 as json {Any} +import x.json2 as json { Any } import freeflowuniverse.herolib.mcp.logger import freeflowuniverse.herolib.baobab.generator const generate_module_from_openapi_tool = mcp.Tool{ - name: 'generate_module_from_openapi' - description: '' - input_schema: mcp.ToolInputSchema{ - typ: 'object' - properties: {'openapi_path': mcp.ToolProperty{ - typ: 'string' - items: mcp.ToolItems{ - typ: '' - enum: [] - } - enum: [] - }} - required: ['openapi_path'] - } + name: 'generate_module_from_openapi' + description: '' + input_schema: mcp.ToolInputSchema{ + typ: 'object' + properties: { + 'openapi_path': mcp.ToolProperty{ + typ: 'string' + items: mcp.ToolItems{ + typ: '' + enum: [] + } + enum: [] + } + } + required: ['openapi_path'] + } } pub fn generate_module_from_openapi_tool_handler(arguments map[string]Any) !mcp.ToolCallResult { println('debugzo31') - openapi_path := arguments["openapi_path"].str() + openapi_path := arguments['openapi_path'].str() println('debugzo32') - result := generator.generate_module_from_openapi(openapi_path) - or { + result := generator.generate_module_from_openapi(openapi_path) or { println('debugzo33') return mcp.error_tool_call_result(err) } println('debugzo34') return mcp.ToolCallResult{ is_error: false - content: result_to_mcp_tool_contents[string](result) + content: result_to_mcp_tool_contents[string](result) } -} \ No newline at end of file +} diff --git a/lib/mcp/baobab/developer.v b/lib/mcp/baobab/developer.v index 14c08ce7..db77935a 100644 --- a/lib/mcp/baobab/developer.v +++ b/lib/mcp/baobab/developer.v @@ -5,8 +5,6 @@ import freeflowuniverse.herolib.mcp @[heap] pub struct Baobab {} - - pub fn result_to_mcp_tool_contents[T](result T) []mcp.ToolContent { return [result_to_mcp_tool_content(result)] } @@ -14,17 +12,17 @@ pub fn result_to_mcp_tool_contents[T](result T) []mcp.ToolContent { pub fn result_to_mcp_tool_content[T](result T) mcp.ToolContent { return $if T is string { mcp.ToolContent{ - typ: 'text' + typ: 'text' text: result.str() } } $else $if T is int { mcp.ToolContent{ - typ: 'number' + typ: 'number' number: result.int() } } $else $if T is bool { mcp.ToolContent{ - typ: 'boolean' + typ: 'boolean' boolean: result.bool() } } $else $if result is $array { @@ -33,7 +31,7 @@ pub fn result_to_mcp_tool_content[T](result T) mcp.ToolContent { items << result_to_mcp_tool_content(item) } return mcp.ToolContent{ - typ: 'array' + typ: 'array' items: items } } $else $if T is $struct { @@ -42,7 +40,7 @@ pub fn result_to_mcp_tool_content[T](result T) mcp.ToolContent { properties[field.name] = result_to_mcp_tool_content(result.$(field.name)) } return mcp.ToolContent{ - typ: 'object' + typ: 'object' properties: properties } } $else { @@ -56,4 +54,4 @@ pub fn array_to_mcp_tool_contents[U](array []U) []mcp.ToolContent { contents << result_to_mcp_tool_content(item) } return contents -} \ No newline at end of file +} diff --git a/lib/mcp/baobab/mcp.v b/lib/mcp/baobab/mcp.v index 0b2005b5..9c400607 100644 --- a/lib/mcp/baobab/mcp.v +++ b/lib/mcp/baobab/mcp.v @@ -4,26 +4,24 @@ import freeflowuniverse.herolib.mcp import freeflowuniverse.herolib.mcp.logger import freeflowuniverse.herolib.schemas.jsonrpc -pub fn new_mcp_server() ! &mcp.Server { +pub fn new_mcp_server() !&mcp.Server { logger.info('Creating new Developer MCP server') // Initialize the server with the empty handlers map - mut server := mcp.new_server( - mcp.MemoryBackend{ - tools: { - 'generate_module_from_openapi': generate_module_from_openapi_tool, - }, - tool_handlers: { - 'generate_module_from_openapi': generate_module_from_openapi_tool_handler - }, - }, - mcp.ServerParams{ - config:mcp.ServerConfiguration{ + mut server := mcp.new_server(mcp.MemoryBackend{ + tools: { + 'generate_module_from_openapi': generate_module_from_openapi_tool + } + tool_handlers: { + 'generate_module_from_openapi': generate_module_from_openapi_tool_handler + } + }, mcp.ServerParams{ + config: mcp.ServerConfiguration{ server_info: mcp.ServerInfo{ - name: 'developer' + name: 'developer' version: '1.0.0' } - }} - )! + } + })! return server } diff --git a/lib/mcp/baobab/scripts/run b/lib/mcp/baobab/scripts/run deleted file mode 100755 index d89d7a086d1005b3415ee76079911947dc2c64c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11698400 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ℜ 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%0Ao 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%0A4-Z`2s#Z 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

Qr(f<$SMHYT<=U4yz=z-)9gJan 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 z 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 z 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®$NZeW7_i?;JZ=pJ)!AuTYohE#D%BsTP4wWx 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 z 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

mb>-jVv|veVf3REn#GH9b`*h(A1sTiuYswyax3t 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%0DX_#6S}^jJnyi_y1X49){ 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 z∾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

Iw&SRi<7kxQ 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