orchestrator-core 4.7.1__tar.gz → 4.8.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/PKG-INFO +4 -4
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/__init__.py +1 -1
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/search.py +17 -2
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/models.py +42 -12
- orchestrator_core-4.8.0rc1/orchestrator/migrations/versions/schema/2026-01-12_d69e10434a04_convert_unlimited_text_fields_to_.py +32 -0
- orchestrator_core-4.8.0rc1/orchestrator/migrations/versions/schema/2026-01-12_d69e10434a04_convert_unlimited_text_fields_to__downgrade.sql +138 -0
- orchestrator_core-4.8.0rc1/orchestrator/migrations/versions/schema/2026-01-12_d69e10434a04_convert_unlimited_text_fields_to__upgrade.sql +153 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/product.py +4 -2
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/product_block.py +4 -2
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/resource_type.py +4 -2
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/search.py +7 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/workflow.py +3 -2
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/query/engine.py +41 -7
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/query/results.py +22 -2
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/processes.py +9 -4
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/workflows/modify_note.py +6 -1
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/pyproject.toml +3 -3
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/LICENSE +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/README.md +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/agentic_app.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/api.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/agent.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/health.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/processes.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/product_blocks.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/products.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/resource_types.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/schedules.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/settings.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/subscription_customer_descriptions.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/subscriptions.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/translations.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/user.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/workflows.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/ws.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/error_handling.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/models.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/app.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/database.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/domain_gen_helpers/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/domain_gen_helpers/fixed_input_helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/domain_gen_helpers/helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/domain_gen_helpers/product_block_helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/domain_gen_helpers/product_helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/domain_gen_helpers/resource_type_helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/domain_gen_helpers/types.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generate.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/custom_templates/README +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_imports.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_input_fields.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/custom_templates/additional_create_steps.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_imports.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_input_fields.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/custom_templates/additional_modify_steps.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_imports.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_input_fields.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/custom_templates/additional_terminate_steps.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/generator/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/generator/enums.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/generator/helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/generator/migration.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/generator/product.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/generator/product_block.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/generator/settings.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/generator/translations.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/generator/unittest.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/generator/validations.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/generator/workflow.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/products/workshop/circuit.yaml +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/products/workshop/node.yaml +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/products/workshop/user.yaml +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/products/workshop/user_group.yaml +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/additional_create_imports.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/additional_create_steps.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/additional_modify_imports.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/additional_modify_steps.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/additional_terminate_steps.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/constrained_int_definitions.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/create_data_head.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/create_product.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/enums.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/lazy_workflow_instance.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/list_definitions.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/macros.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/modify_product.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/new_product_migration.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/product.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/product_block.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/shared_forms.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/shared_workflows.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/subscription_model_registry.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/terminate_product.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/test_create_workflow.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/test_modify_workflow.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/test_product_type.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/test_terminate_workflow.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/test_validate_workflow.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/generator/templates/validate_product.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/helpers/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/helpers/input_helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/helpers/print_helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/main.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/migrate_domain_models.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/migrate_tasks.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/migrate_workflows.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/migration_helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/scheduler.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/search/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/search/display.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/search/index_llm.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/search/resize_embedding.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/search/search_explore.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/cli/search/speedtest.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/config/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/config/assignee.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/database.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/filters/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/filters/filters.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/filters/process.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/filters/product.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/filters/product_block.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/filters/resource_type.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/filters/search_filters/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/filters/search_filters/inferred_filter.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/filters/subscription.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/filters/workflow.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/listeners.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/loaders.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/queries/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/queries/subscription.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/queries/subscription_instance.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/range/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/range/range.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/sorting/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/sorting/process.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/sorting/product.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/sorting/product_block.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/sorting/resource_type.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/sorting/sorting.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/sorting/subscription.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/db/sorting/workflow.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/devtools/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/devtools/populator.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/devtools/scripts/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/devtools/scripts/migrate_20.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/devtools/scripts/migrate_30.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/devtools/scripts/shared.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/distlock/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/distlock/distlock_manager.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/distlock/managers/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/distlock/managers/memory_distlock_manager.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/distlock/managers/redis_distlock_manager.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/domain/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/domain/base.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/domain/context_cache.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/domain/customer_description.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/domain/helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/domain/lifecycle.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/domain/subscription_instance_transform.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/exception_handlers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/forms/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/forms/validators/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/forms/validators/customer_contact_list.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/forms/validators/customer_id.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/forms/validators/display_subscription.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/forms/validators/network_type_validators.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/forms/validators/product_id.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/autoregistration.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/extensions/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/extensions/model_cache.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/extensions/stats.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/loaders/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/loaders/subscriptions.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/mutations/customer_description.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/mutations/start_process.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/pagination.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/resolvers/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/resolvers/customer.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/resolvers/helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/resolvers/process.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/resolvers/product.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/resolvers/product_block.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/resolvers/resource_type.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/resolvers/scheduled_tasks.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/resolvers/settings.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/resolvers/subscription.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/resolvers/version.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/resolvers/workflow.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schema.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/customer.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/customer_description.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/errors.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/fixed_input.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/process.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/product.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/product_block.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/resource_type.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/scheduled_task.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/settings.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/strawberry_pydantic_patch.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/subscription.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/version.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/schemas/workflow.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/types.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/utils/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/utils/create_resolver_error_handler.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/utils/get_query_loaders.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/utils/get_selected_fields.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/utils/get_selected_paths.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/utils/get_subscription_product_blocks.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/utils/is_query_detailed.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/utils/override_class.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/graphql/utils/to_graphql_result_page.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/llm_settings.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/log_config.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/metrics/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/metrics/engine.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/metrics/init.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/metrics/processes.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/metrics/subscriptions.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/README +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/alembic.ini +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/env.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/script.py.mako +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/templates/alembic.ini.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/templates/env.py.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/templates/helpers.py.j2 +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_3323bcb934e7_fix_tsv_triggers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_a76b9185b334_add_generic_workflows_to_core.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2020-10-19_c112305b07d3_initial_schema_migration.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2021-04-06_3c8b9185c221_add_validate_products_task.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2021-07-01_6896a54e9483_add_product_block_relations.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2021-11-17_19cdd3ab86f6_fix_parse_websearch.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2022-02-16_bed6bc0b197a_rename_parent_and_child_block_relations.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2023-03-06_e05bb1967eff_add_subscriptions_search_view.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2023-05-25_b1970225392d_add_subscription_metadata_workflow.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2023-06-28_a09ac125ea73_add_throttling_to_refresh_subscriptions.sql +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2023-07-17_165303a20fb1_customer_id_to_varchar.sql +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2023-09-25_da5c9f4cce1c_add_subscription_metadata_to_fulltext_.sql +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2023-12-06_048219045729_add_workflow_id_to_processes_table.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2024-09-27_460ec6748e37_add_uuid_search_workaround.sql +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2025-01-08_4c5859620539_add_version_column_to_subscription.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2025-01-19_4fjdn13f83ga_add_validate_product_type_task.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2025-02-12_bac6be6f2b4f_added_input_state_table.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2025-02-20_68d14db1b8da_make_workflow_description_mandatory.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2025-03-06_42b3d076a85b_subscription_instance_as_json_function.sql +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2025-04-09_fc5c993a4b4a_add_cascade_constraint_on_processes_.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2025-05-08_161918133bec_add_is_task_to_workflow.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2025-07-01_93fc5834c7e5_changed_timestamping_fields_in_process_steps.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2025-07-04_4b58e336d1bf_deprecating_workflow_target_in_.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2025-07-28_850dccac3b02_update_description_of_resume_workflows_.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2025-11-18_961eddbd4c13_create_linker_table_workflow_apscheduler.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/migrations/versions/schema/2025-12-10_9736496e3eba_set_is_task_true_on_certain_tasks.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/py.typed +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schedules/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schedules/scheduler.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schedules/scheduling.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schedules/service.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schedules/validate_products.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/base.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/engine_settings.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/fixed_input.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/problem_detail.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/process.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/schedules.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/search_requests.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/subscription.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/subscription_descriptions.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/agent/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/agent/agent.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/agent/handlers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/agent/json_patch.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/agent/prompts.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/agent/state.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/agent/tools.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/agent/validation.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/aggregations/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/aggregations/base.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/core/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/core/embedding.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/core/exceptions.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/core/types.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/core/validators.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/docs/index.md +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/docs/running_local_text_embedding_inference.md +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/filters/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/filters/base.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/filters/date_filters.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/filters/definitions.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/filters/ltree_filters.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/filters/numeric_filter.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/indexing/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/indexing/indexer.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/indexing/registry.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/indexing/tasks.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/indexing/traverse.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/llm_migration.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/query/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/query/builder.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/query/exceptions.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/query/export.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/query/mixins.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/query/queries.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/query/state.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/query/validation.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/retrieval/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/retrieval/pagination.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/retrieval/retrievers/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/retrieval/retrievers/base.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/retrieval/retrievers/fuzzy.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/retrieval/retrievers/hybrid.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/retrieval/retrievers/process.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/retrieval/retrievers/semantic.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/search/retrieval/retrievers/structured.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/security.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/executors/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/executors/celery.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/executors/threadpool.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/fixed_inputs.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/input_state.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/process_broadcast_thread.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/products.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/resource_types.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/settings.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/settings_env_variables.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/subscription_relations.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/subscriptions.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/tasks.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/translations.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/services/workflows.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/settings.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/targets.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/types.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/auth.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/crypt.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/datetime.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/deprecation_logger.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/docs.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/enrich_process.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/errors.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/expose_settings.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/fixed_inputs.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/functional.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/get_subscription_dict.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/get_updated_properties.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/helpers.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/json.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/redis.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/redis_client.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/search_query.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/state.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/strings.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/utils/validate_data_version.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/version.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/websocket/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/websocket/managers/broadcast_websocket_manager.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/websocket/managers/memory_websocket_manager.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/websocket/websocket_manager.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/workflow.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/workflows/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/workflows/removed_workflow.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/workflows/steps.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/workflows/tasks/__init__.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/workflows/tasks/cleanup_tasks_log.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/workflows/tasks/resume_workflows.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/workflows/tasks/validate_product_type.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/workflows/tasks/validate_products.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/workflows/tasks/validate_subscriptions.py +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/workflows/translations/en-GB.json +0 -0
- {orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/workflows/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: orchestrator-core
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.8.0rc1
|
|
4
4
|
Summary: This is the orchestrator workflow engine.
|
|
5
5
|
Author-email: SURF <automation-beheer@surf.nl>
|
|
6
6
|
Requires-Python: >=3.11,<3.15
|
|
@@ -31,7 +31,7 @@ Classifier: Topic :: Software Development :: Libraries
|
|
|
31
31
|
Classifier: Topic :: Software Development
|
|
32
32
|
Classifier: Typing :: Typed
|
|
33
33
|
License-File: LICENSE
|
|
34
|
-
Requires-Dist: alembic==1.18.
|
|
34
|
+
Requires-Dist: alembic==1.18.3
|
|
35
35
|
Requires-Dist: anyio>=3.7.0
|
|
36
36
|
Requires-Dist: apscheduler>=3.11.0
|
|
37
37
|
Requires-Dist: click==8.*
|
|
@@ -44,7 +44,7 @@ Requires-Dist: jinja2==3.1.6
|
|
|
44
44
|
Requires-Dist: more-itertools~=10.8.0
|
|
45
45
|
Requires-Dist: nwa-stdlib~=1.11.0
|
|
46
46
|
Requires-Dist: oauth2-lib>=2.5.0
|
|
47
|
-
Requires-Dist: orjson==3.11.
|
|
47
|
+
Requires-Dist: orjson==3.11.7
|
|
48
48
|
Requires-Dist: pgvector>=0.4.1
|
|
49
49
|
Requires-Dist: prometheus-client==0.24.1
|
|
50
50
|
Requires-Dist: psycopg2-binary==2.9.11
|
|
@@ -57,7 +57,7 @@ Requires-Dist: pytz==2025.2
|
|
|
57
57
|
Requires-Dist: redis==7.1.0
|
|
58
58
|
Requires-Dist: semver==3.0.4
|
|
59
59
|
Requires-Dist: sentry-sdk[fastapi]>=2.29.1
|
|
60
|
-
Requires-Dist: sqlalchemy==2.0.
|
|
60
|
+
Requires-Dist: sqlalchemy==2.0.46
|
|
61
61
|
Requires-Dist: sqlalchemy-utils==0.42.1
|
|
62
62
|
Requires-Dist: strawberry-graphql>=0.281.0,<0.285.0
|
|
63
63
|
Requires-Dist: structlog>=25.4.0
|
{orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/api/api_v1/endpoints/search.py
RENAMED
|
@@ -16,6 +16,7 @@ from fastapi import APIRouter, HTTPException, Query, status
|
|
|
16
16
|
|
|
17
17
|
from orchestrator.db import db
|
|
18
18
|
from orchestrator.schemas.search import (
|
|
19
|
+
CursorInfoSchema,
|
|
19
20
|
ExportResponse,
|
|
20
21
|
PageInfoSchema,
|
|
21
22
|
PathsResponse,
|
|
@@ -81,10 +82,24 @@ async def _perform_search_and_fetch(
|
|
|
81
82
|
|
|
82
83
|
next_page_cursor = encode_next_page_cursor(search_response, page_cursor, query)
|
|
83
84
|
has_next_page = next_page_cursor is not None
|
|
84
|
-
page_info = PageInfoSchema(
|
|
85
|
+
page_info = PageInfoSchema(
|
|
86
|
+
has_next_page=has_next_page,
|
|
87
|
+
next_page_cursor=next_page_cursor,
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
cursor_info = None
|
|
91
|
+
if search_response.total_items:
|
|
92
|
+
cursor_info = CursorInfoSchema(
|
|
93
|
+
total_items=search_response.total_items,
|
|
94
|
+
start_cursor=search_response.start_cursor,
|
|
95
|
+
end_cursor=search_response.end_cursor,
|
|
96
|
+
)
|
|
85
97
|
|
|
86
98
|
return SearchResultsSchema(
|
|
87
|
-
data=search_response.results,
|
|
99
|
+
data=search_response.results,
|
|
100
|
+
page_info=page_info,
|
|
101
|
+
search_metadata=search_response.metadata,
|
|
102
|
+
cursor=cursor_info,
|
|
88
103
|
)
|
|
89
104
|
except (InvalidCursorError, ValueError) as e:
|
|
90
105
|
raise HTTPException(status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, detail=str(e))
|
|
@@ -38,7 +38,6 @@ from sqlalchemy import (
|
|
|
38
38
|
Select,
|
|
39
39
|
String,
|
|
40
40
|
Table,
|
|
41
|
-
Text,
|
|
42
41
|
TypeDecorator,
|
|
43
42
|
UniqueConstraint,
|
|
44
43
|
select,
|
|
@@ -69,6 +68,37 @@ logger = structlog.get_logger(__name__)
|
|
|
69
68
|
TAG_LENGTH = 20
|
|
70
69
|
STATUS_LENGTH = 255
|
|
71
70
|
|
|
71
|
+
# Field length limits chosen based on expected usage patterns
|
|
72
|
+
# These values are intended to be reasonable, but give lots of wiggle room
|
|
73
|
+
# If these values are updated, they also need to be updated in a migration, as in migration d69e10434a04
|
|
74
|
+
NOTE_LENGTH = 5000
|
|
75
|
+
DESCRIPTION_LENGTH = 2000
|
|
76
|
+
FAILED_REASON_LENGTH = 10000
|
|
77
|
+
TRACEBACK_LENGTH = 50000
|
|
78
|
+
RESOURCE_VALUE_LENGTH = 10000
|
|
79
|
+
DOMAIN_MODEL_ATTR_LENGTH = 255
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class StringThatAutoConvertsToNullWhenEmpty(TypeDecorator):
|
|
83
|
+
"""A String type that converts empty strings to NULL on save."""
|
|
84
|
+
|
|
85
|
+
impl = String
|
|
86
|
+
cache_ok = True
|
|
87
|
+
python_type = str
|
|
88
|
+
|
|
89
|
+
def __init__(self, length: int | None = None):
|
|
90
|
+
super().__init__(length)
|
|
91
|
+
|
|
92
|
+
def process_bind_param(self, value: str | None, dialect: Dialect) -> str | None:
|
|
93
|
+
"""Called when saving to DB - convert empty/whitespace to NULL."""
|
|
94
|
+
if value is not None and value.strip() == "":
|
|
95
|
+
return None
|
|
96
|
+
return value
|
|
97
|
+
|
|
98
|
+
def process_result_value(self, value: str | None, dialect: Dialect) -> str | None:
|
|
99
|
+
"""Called when loading from DB - return as-is."""
|
|
100
|
+
return value
|
|
101
|
+
|
|
72
102
|
|
|
73
103
|
class UtcTimestampError(Exception, DontWrapMixin):
|
|
74
104
|
pass
|
|
@@ -122,8 +152,8 @@ class ProcessTable(BaseModel):
|
|
|
122
152
|
last_modified_at = mapped_column(
|
|
123
153
|
UtcTimestamp, server_default=text("current_timestamp()"), onupdate=nowtz, nullable=False
|
|
124
154
|
)
|
|
125
|
-
failed_reason = mapped_column(
|
|
126
|
-
traceback = mapped_column(
|
|
155
|
+
failed_reason = mapped_column(String(FAILED_REASON_LENGTH))
|
|
156
|
+
traceback = mapped_column(String(TRACEBACK_LENGTH))
|
|
127
157
|
created_by = mapped_column(String(255), nullable=True)
|
|
128
158
|
is_task = mapped_column(Boolean, nullable=False, server_default=text("false"), index=True)
|
|
129
159
|
|
|
@@ -223,7 +253,7 @@ class ProductTable(BaseModel):
|
|
|
223
253
|
|
|
224
254
|
product_id = mapped_column(UUIDType, server_default=text("uuid_generate_v4()"), primary_key=True)
|
|
225
255
|
name = mapped_column(String(), nullable=False, unique=True)
|
|
226
|
-
description = mapped_column(
|
|
256
|
+
description = mapped_column(String(DESCRIPTION_LENGTH), nullable=False)
|
|
227
257
|
product_type = mapped_column(String(255), nullable=False)
|
|
228
258
|
tag = mapped_column(String(TAG_LENGTH), nullable=False, index=True)
|
|
229
259
|
status = mapped_column(String(STATUS_LENGTH), nullable=False)
|
|
@@ -302,7 +332,7 @@ class ProductBlockTable(BaseModel):
|
|
|
302
332
|
|
|
303
333
|
product_block_id = mapped_column(UUIDType, server_default=text("uuid_generate_v4()"), primary_key=True)
|
|
304
334
|
name = mapped_column(String(), nullable=False, unique=True)
|
|
305
|
-
description = mapped_column(
|
|
335
|
+
description = mapped_column(String(DESCRIPTION_LENGTH), nullable=False)
|
|
306
336
|
tag = mapped_column(String(TAG_LENGTH))
|
|
307
337
|
status = mapped_column(String(STATUS_LENGTH))
|
|
308
338
|
created_at = mapped_column(UtcTimestamp, nullable=False, server_default=text("current_timestamp()"))
|
|
@@ -401,7 +431,7 @@ class ResourceTypeTable(BaseModel):
|
|
|
401
431
|
|
|
402
432
|
resource_type_id = mapped_column(UUIDType, server_default=text("uuid_generate_v4()"), primary_key=True)
|
|
403
433
|
resource_type = mapped_column(String(510), nullable=False, unique=True)
|
|
404
|
-
description = mapped_column(
|
|
434
|
+
description = mapped_column(String(DESCRIPTION_LENGTH))
|
|
405
435
|
|
|
406
436
|
product_blocks = relationship(
|
|
407
437
|
"ProductBlockTable", secondary=product_block_resource_type_association, back_populates="resource_types"
|
|
@@ -414,7 +444,7 @@ class WorkflowTable(BaseModel):
|
|
|
414
444
|
workflow_id = mapped_column(UUIDType, server_default=text("uuid_generate_v4()"), primary_key=True)
|
|
415
445
|
name = mapped_column(String(), nullable=False, unique=True)
|
|
416
446
|
target = mapped_column(String(), nullable=False)
|
|
417
|
-
description = mapped_column(
|
|
447
|
+
description = mapped_column(String(DESCRIPTION_LENGTH), nullable=False)
|
|
418
448
|
created_at = mapped_column(UtcTimestamp, nullable=False, server_default=text("current_timestamp()"))
|
|
419
449
|
deleted_at = mapped_column(UtcTimestamp, deferred=True)
|
|
420
450
|
|
|
@@ -452,7 +482,7 @@ class SubscriptionInstanceRelationTable(BaseModel):
|
|
|
452
482
|
|
|
453
483
|
# Needed to make sure subscription instance is populated in the right domain model attribute, if more than one
|
|
454
484
|
# attribute uses the same product block model.
|
|
455
|
-
domain_model_attr = Column(
|
|
485
|
+
domain_model_attr = Column(String(DOMAIN_MODEL_ATTR_LENGTH))
|
|
456
486
|
|
|
457
487
|
in_use_by: Mapped[SubscriptionInstanceTable] = relationship(
|
|
458
488
|
"SubscriptionInstanceTable", back_populates="depends_on_block_relations", foreign_keys=[in_use_by_id]
|
|
@@ -559,7 +589,7 @@ class SubscriptionInstanceValueTable(BaseModel):
|
|
|
559
589
|
resource_type_id = mapped_column(
|
|
560
590
|
UUIDType, ForeignKey("resource_types.resource_type_id"), nullable=False, index=True
|
|
561
591
|
)
|
|
562
|
-
value = mapped_column(
|
|
592
|
+
value = mapped_column(String(RESOURCE_VALUE_LENGTH), nullable=False)
|
|
563
593
|
|
|
564
594
|
resource_type = relationship("ResourceTypeTable", lazy="subquery")
|
|
565
595
|
subscription_instance = relationship("SubscriptionInstanceTable", back_populates="values")
|
|
@@ -587,7 +617,7 @@ class SubscriptionCustomerDescriptionTable(BaseModel):
|
|
|
587
617
|
index=True,
|
|
588
618
|
)
|
|
589
619
|
customer_id = mapped_column(String, nullable=False, index=True)
|
|
590
|
-
description = mapped_column(
|
|
620
|
+
description = mapped_column(String(DESCRIPTION_LENGTH), nullable=False)
|
|
591
621
|
created_at = mapped_column(UtcTimestamp, nullable=False, server_default=text("current_timestamp()"))
|
|
592
622
|
version = mapped_column(Integer, nullable=False, server_default="1")
|
|
593
623
|
|
|
@@ -600,14 +630,14 @@ class SubscriptionTable(BaseModel):
|
|
|
600
630
|
subscription_id = mapped_column(
|
|
601
631
|
UUIDType, server_default=text("uuid_generate_v4()"), primary_key=True, nullable=False
|
|
602
632
|
)
|
|
603
|
-
description = mapped_column(
|
|
633
|
+
description = mapped_column(String(DESCRIPTION_LENGTH), nullable=False)
|
|
604
634
|
status = mapped_column(String(STATUS_LENGTH), nullable=False, index=True)
|
|
605
635
|
product_id = mapped_column(UUIDType, ForeignKey("products.product_id"), nullable=False, index=True)
|
|
606
636
|
customer_id = mapped_column(String, index=True, nullable=False)
|
|
607
637
|
insync = mapped_column(Boolean(), nullable=False)
|
|
608
638
|
start_date = mapped_column(UtcTimestamp, nullable=True)
|
|
609
639
|
end_date = mapped_column(UtcTimestamp)
|
|
610
|
-
note = mapped_column(
|
|
640
|
+
note = mapped_column(StringThatAutoConvertsToNullWhenEmpty(NOTE_LENGTH))
|
|
611
641
|
version = mapped_column(Integer, nullable=False, server_default="1")
|
|
612
642
|
|
|
613
643
|
product = relationship("ProductTable", foreign_keys=[product_id])
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""Convert unlimited text fields to limited nullable strings and normalize empty subscription notes.
|
|
2
|
+
|
|
3
|
+
Revision ID: d69e10434a04
|
|
4
|
+
Revises: 9736496e3eba
|
|
5
|
+
Create Date: 2026-01-12 14:17:58.255515
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
import sqlalchemy as sa
|
|
12
|
+
from alembic import op
|
|
13
|
+
|
|
14
|
+
# revision identifiers, used by Alembic.
|
|
15
|
+
revision = "d69e10434a04"
|
|
16
|
+
down_revision = "9736496e3eba"
|
|
17
|
+
branch_labels = None
|
|
18
|
+
depends_on = None
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def upgrade() -> None:
|
|
22
|
+
conn = op.get_bind()
|
|
23
|
+
revision_file_path = Path(__file__.replace(".py", "_upgrade.sql"))
|
|
24
|
+
with open(revision_file_path) as f:
|
|
25
|
+
conn.execute(sa.text(f.read()))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def downgrade() -> None:
|
|
29
|
+
conn = op.get_bind()
|
|
30
|
+
revision_file_path = Path(__file__.replace(".py", "_downgrade.sql"))
|
|
31
|
+
with open(revision_file_path) as f:
|
|
32
|
+
conn.execute(sa.text(f.read()))
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
-- Downgrade: Revert limited nullable strings back to unlimited text fields.
|
|
2
|
+
-- Revision ID: d69e10434a04
|
|
3
|
+
|
|
4
|
+
-- Drop triggers first
|
|
5
|
+
DROP TRIGGER IF EXISTS fi_refresh_search ON fixed_inputs;
|
|
6
|
+
DROP TRIGGER IF EXISTS products_refresh_search ON products;
|
|
7
|
+
DROP TRIGGER IF EXISTS sub_cust_desc_refresh_search ON subscription_customer_descriptions;
|
|
8
|
+
DROP TRIGGER IF EXISTS siv_refresh_search ON subscription_instance_values;
|
|
9
|
+
DROP TRIGGER IF EXISTS sub_refresh_search ON subscriptions;
|
|
10
|
+
|
|
11
|
+
-- Drop the refresh function
|
|
12
|
+
DROP FUNCTION IF EXISTS refresh_subscriptions_search_view();
|
|
13
|
+
|
|
14
|
+
-- Drop the materialized view (CASCADE will drop indexes)
|
|
15
|
+
DROP MATERIALIZED VIEW IF EXISTS subscriptions_search CASCADE;
|
|
16
|
+
|
|
17
|
+
-- Alter column types back from VARCHAR to TEXT
|
|
18
|
+
ALTER TABLE subscriptions ALTER COLUMN note TYPE TEXT;
|
|
19
|
+
ALTER TABLE subscriptions ALTER COLUMN description TYPE TEXT;
|
|
20
|
+
ALTER TABLE processes ALTER COLUMN failed_reason TYPE TEXT;
|
|
21
|
+
ALTER TABLE processes ALTER COLUMN traceback TYPE TEXT;
|
|
22
|
+
ALTER TABLE products ALTER COLUMN description TYPE TEXT;
|
|
23
|
+
ALTER TABLE product_blocks ALTER COLUMN description TYPE TEXT;
|
|
24
|
+
ALTER TABLE resource_types ALTER COLUMN description TYPE TEXT;
|
|
25
|
+
ALTER TABLE workflows ALTER COLUMN description TYPE TEXT;
|
|
26
|
+
ALTER TABLE subscription_customer_descriptions ALTER COLUMN description TYPE TEXT;
|
|
27
|
+
ALTER TABLE subscription_instance_values ALTER COLUMN value TYPE TEXT;
|
|
28
|
+
ALTER TABLE subscription_instance_relations ALTER COLUMN domain_model_attr TYPE TEXT;
|
|
29
|
+
|
|
30
|
+
-- Recreate the materialized view
|
|
31
|
+
CREATE MATERIALIZED VIEW subscriptions_search AS
|
|
32
|
+
WITH rt_info AS (SELECT s.subscription_id,
|
|
33
|
+
concat_ws(
|
|
34
|
+
' ',
|
|
35
|
+
string_agg(rt.resource_type || ' ' || siv.value, ' '),
|
|
36
|
+
string_agg(distinct 'subscription_instance_id' || ':' || si.subscription_instance_id, ' ')
|
|
37
|
+
) AS rt_info
|
|
38
|
+
FROM subscription_instance_values siv
|
|
39
|
+
JOIN resource_types rt ON siv.resource_type_id = rt.resource_type_id
|
|
40
|
+
JOIN subscription_instances si ON siv.subscription_instance_id = si.subscription_instance_id
|
|
41
|
+
JOIN subscriptions s ON si.subscription_id = s.subscription_id
|
|
42
|
+
GROUP BY s.subscription_id),
|
|
43
|
+
sub_prod_info AS (SELECT s.subscription_id,
|
|
44
|
+
array_to_string(
|
|
45
|
+
ARRAY ['subscription_id:' || s.subscription_id,
|
|
46
|
+
'status:' || s.status,
|
|
47
|
+
'insync:' || s.insync,
|
|
48
|
+
'subscription_description:' || s.description,
|
|
49
|
+
'note:' || coalesce(s.note, ''),
|
|
50
|
+
'customer_id:' || s.customer_id,
|
|
51
|
+
'product_id:' || s.product_id],
|
|
52
|
+
' '
|
|
53
|
+
) AS sub_info,
|
|
54
|
+
array_to_string(
|
|
55
|
+
ARRAY ['product_name:' || p.name,
|
|
56
|
+
'product_description:' || p.description,
|
|
57
|
+
'tag:' || p.tag,
|
|
58
|
+
'product_type:', p.product_type],
|
|
59
|
+
' '
|
|
60
|
+
) AS prod_info
|
|
61
|
+
FROM subscriptions s
|
|
62
|
+
JOIN products p ON s.product_id = p.product_id),
|
|
63
|
+
fi_info AS (SELECT s.subscription_id,
|
|
64
|
+
string_agg(fi.name || ':' || fi.value, ' ') AS fi_info
|
|
65
|
+
FROM subscriptions s
|
|
66
|
+
JOIN products p ON s.product_id = p.product_id
|
|
67
|
+
JOIN fixed_inputs fi ON p.product_id = fi.product_id
|
|
68
|
+
GROUP BY s.subscription_id),
|
|
69
|
+
cust_info AS (SELECT s.subscription_id,
|
|
70
|
+
string_agg('customer_description: ' || scd.description, ' ') AS cust_info
|
|
71
|
+
FROM subscriptions s
|
|
72
|
+
JOIN subscription_customer_descriptions scd ON s.subscription_id = scd.subscription_id
|
|
73
|
+
GROUP BY s.subscription_id)
|
|
74
|
+
-- to_tsvector handles parsing of hyphened words in a peculiar way and is inconsistent with how to_tsquery parses it in Postgres <14
|
|
75
|
+
-- Replacing all hyphens with underscores makes the parsing more predictable and removes some issues arising when searching for subscription ids for example
|
|
76
|
+
-- See: https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=0c4f355c6a5fd437f71349f2f3d5d491382572b7
|
|
77
|
+
SELECT s.subscription_id,
|
|
78
|
+
to_tsvector(
|
|
79
|
+
'simple',
|
|
80
|
+
replace(
|
|
81
|
+
concat_ws(
|
|
82
|
+
' ',
|
|
83
|
+
spi.sub_info,
|
|
84
|
+
spi.prod_info,
|
|
85
|
+
fi.fi_info,
|
|
86
|
+
rti.rt_info,
|
|
87
|
+
ci.cust_info,
|
|
88
|
+
md.metadata::text
|
|
89
|
+
),
|
|
90
|
+
'-', '_')
|
|
91
|
+
) as tsv
|
|
92
|
+
FROM subscriptions s
|
|
93
|
+
LEFT JOIN sub_prod_info spi ON s.subscription_id = spi.subscription_id
|
|
94
|
+
LEFT JOIN fi_info fi ON s.subscription_id = fi.subscription_id
|
|
95
|
+
LEFT JOIN rt_info rti ON s.subscription_id = rti.subscription_id
|
|
96
|
+
LEFT JOIN cust_info ci ON s.subscription_id = ci.subscription_id
|
|
97
|
+
LEFT JOIN subscription_metadata md ON s.subscription_id = md.subscription_id;
|
|
98
|
+
|
|
99
|
+
-- Create indexes
|
|
100
|
+
CREATE INDEX subscriptions_search_tsv_idx ON subscriptions_search USING GIN (tsv);
|
|
101
|
+
CREATE UNIQUE INDEX subscriptions_search_subscription_id_idx ON subscriptions_search (subscription_id);
|
|
102
|
+
|
|
103
|
+
-- Create refresh function with epoch-based throttling
|
|
104
|
+
CREATE OR REPLACE FUNCTION refresh_subscriptions_search_view()
|
|
105
|
+
RETURNS TRIGGER
|
|
106
|
+
LANGUAGE plpgsql
|
|
107
|
+
AS
|
|
108
|
+
$$
|
|
109
|
+
DECLARE
|
|
110
|
+
should_refresh bool;
|
|
111
|
+
current_epoch int;
|
|
112
|
+
last_refresh_epoch int;
|
|
113
|
+
comment_sql text;
|
|
114
|
+
BEGIN
|
|
115
|
+
SELECT extract(epoch from now())::int INTO current_epoch;
|
|
116
|
+
SELECT coalesce(pg_catalog.obj_description('subscriptions_search'::regclass)::int, 0) INTO last_refresh_epoch;
|
|
117
|
+
|
|
118
|
+
SELECT (current_epoch - last_refresh_epoch) > 120 INTO should_refresh;
|
|
119
|
+
|
|
120
|
+
IF should_refresh THEN
|
|
121
|
+
REFRESH MATERIALIZED VIEW CONCURRENTLY subscriptions_search;
|
|
122
|
+
|
|
123
|
+
comment_sql := 'COMMENT ON MATERIALIZED VIEW subscriptions_search IS ' || quote_literal(current_epoch);
|
|
124
|
+
EXECUTE comment_sql;
|
|
125
|
+
END IF;
|
|
126
|
+
RETURN NULL;
|
|
127
|
+
END;
|
|
128
|
+
$$;
|
|
129
|
+
|
|
130
|
+
-- Create triggers
|
|
131
|
+
CREATE CONSTRAINT TRIGGER fi_refresh_search AFTER UPDATE ON fixed_inputs DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION refresh_subscriptions_search_view();
|
|
132
|
+
CREATE CONSTRAINT TRIGGER products_refresh_search AFTER UPDATE ON products DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION refresh_subscriptions_search_view();
|
|
133
|
+
CREATE CONSTRAINT TRIGGER sub_cust_desc_refresh_search AFTER INSERT OR UPDATE OR DELETE ON subscription_customer_descriptions DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION refresh_subscriptions_search_view();
|
|
134
|
+
CREATE CONSTRAINT TRIGGER siv_refresh_search AFTER INSERT OR UPDATE OR DELETE ON subscription_instance_values DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION refresh_subscriptions_search_view();
|
|
135
|
+
CREATE CONSTRAINT TRIGGER sub_refresh_search AFTER INSERT OR UPDATE OR DELETE ON subscriptions DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION refresh_subscriptions_search_view();
|
|
136
|
+
|
|
137
|
+
-- Refresh the materialized view
|
|
138
|
+
REFRESH MATERIALIZED VIEW subscriptions_search;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
-- Convert unlimited text fields to limited nullable strings and normalize empty subscription notes.
|
|
2
|
+
-- Revision ID: d69e10434a04
|
|
3
|
+
|
|
4
|
+
-- Field length limits chosen based on expected usage patterns
|
|
5
|
+
-- These values are intended to be reasonable, but give lots of wiggle room
|
|
6
|
+
-- If these values are updated, they also need to be updated in orchestrator-core/orchestrator/db/models.py
|
|
7
|
+
-- NOTE_LENGTH = 5000
|
|
8
|
+
-- DESCRIPTION_LENGTH = 2000
|
|
9
|
+
-- FAILED_REASON_LENGTH = 10000
|
|
10
|
+
-- TRACEBACK_LENGTH = 50000
|
|
11
|
+
-- RESOURCE_VALUE_LENGTH = 10000
|
|
12
|
+
-- DOMAIN_MODEL_ATTR_LENGTH = 255
|
|
13
|
+
|
|
14
|
+
-- Drop triggers first
|
|
15
|
+
DROP TRIGGER IF EXISTS fi_refresh_search ON fixed_inputs;
|
|
16
|
+
DROP TRIGGER IF EXISTS products_refresh_search ON products;
|
|
17
|
+
DROP TRIGGER IF EXISTS sub_cust_desc_refresh_search ON subscription_customer_descriptions;
|
|
18
|
+
DROP TRIGGER IF EXISTS siv_refresh_search ON subscription_instance_values;
|
|
19
|
+
DROP TRIGGER IF EXISTS sub_refresh_search ON subscriptions;
|
|
20
|
+
|
|
21
|
+
-- Drop the refresh function
|
|
22
|
+
DROP FUNCTION IF EXISTS refresh_subscriptions_search_view();
|
|
23
|
+
|
|
24
|
+
-- Drop the materialized view (CASCADE will drop indexes)
|
|
25
|
+
DROP MATERIALIZED VIEW IF EXISTS subscriptions_search CASCADE;
|
|
26
|
+
|
|
27
|
+
-- Normalize empty strings to NULL before altering column types
|
|
28
|
+
UPDATE subscriptions
|
|
29
|
+
SET note = NULL
|
|
30
|
+
WHERE note IS NOT NULL AND TRIM(note) = '';
|
|
31
|
+
|
|
32
|
+
-- Alter column types from TEXT to VARCHAR with limits
|
|
33
|
+
ALTER TABLE subscriptions ALTER COLUMN note TYPE VARCHAR(5000);
|
|
34
|
+
ALTER TABLE subscriptions ALTER COLUMN description TYPE VARCHAR(2000);
|
|
35
|
+
ALTER TABLE processes ALTER COLUMN failed_reason TYPE VARCHAR(10000);
|
|
36
|
+
ALTER TABLE processes ALTER COLUMN traceback TYPE VARCHAR(50000);
|
|
37
|
+
ALTER TABLE products ALTER COLUMN description TYPE VARCHAR(2000);
|
|
38
|
+
ALTER TABLE product_blocks ALTER COLUMN description TYPE VARCHAR(2000);
|
|
39
|
+
ALTER TABLE resource_types ALTER COLUMN description TYPE VARCHAR(2000);
|
|
40
|
+
ALTER TABLE workflows ALTER COLUMN description TYPE VARCHAR(2000);
|
|
41
|
+
ALTER TABLE subscription_customer_descriptions ALTER COLUMN description TYPE VARCHAR(2000);
|
|
42
|
+
ALTER TABLE subscription_instance_values ALTER COLUMN value TYPE VARCHAR(10000);
|
|
43
|
+
ALTER TABLE subscription_instance_relations ALTER COLUMN domain_model_attr TYPE VARCHAR(255);
|
|
44
|
+
|
|
45
|
+
-- Recreate the materialized view
|
|
46
|
+
CREATE MATERIALIZED VIEW subscriptions_search AS
|
|
47
|
+
WITH rt_info AS (SELECT s.subscription_id,
|
|
48
|
+
concat_ws(
|
|
49
|
+
' ',
|
|
50
|
+
string_agg(rt.resource_type || ' ' || siv.value, ' '),
|
|
51
|
+
string_agg(distinct 'subscription_instance_id' || ':' || si.subscription_instance_id, ' ')
|
|
52
|
+
) AS rt_info
|
|
53
|
+
FROM subscription_instance_values siv
|
|
54
|
+
JOIN resource_types rt ON siv.resource_type_id = rt.resource_type_id
|
|
55
|
+
JOIN subscription_instances si ON siv.subscription_instance_id = si.subscription_instance_id
|
|
56
|
+
JOIN subscriptions s ON si.subscription_id = s.subscription_id
|
|
57
|
+
GROUP BY s.subscription_id),
|
|
58
|
+
sub_prod_info AS (SELECT s.subscription_id,
|
|
59
|
+
array_to_string(
|
|
60
|
+
ARRAY ['subscription_id:' || s.subscription_id,
|
|
61
|
+
'status:' || s.status,
|
|
62
|
+
'insync:' || s.insync,
|
|
63
|
+
'subscription_description:' || s.description,
|
|
64
|
+
'note:' || coalesce(s.note, ''),
|
|
65
|
+
'customer_id:' || s.customer_id,
|
|
66
|
+
'product_id:' || s.product_id],
|
|
67
|
+
' '
|
|
68
|
+
) AS sub_info,
|
|
69
|
+
array_to_string(
|
|
70
|
+
ARRAY ['product_name:' || p.name,
|
|
71
|
+
'product_description:' || p.description,
|
|
72
|
+
'tag:' || p.tag,
|
|
73
|
+
'product_type:', p.product_type],
|
|
74
|
+
' '
|
|
75
|
+
) AS prod_info
|
|
76
|
+
FROM subscriptions s
|
|
77
|
+
JOIN products p ON s.product_id = p.product_id),
|
|
78
|
+
fi_info AS (SELECT s.subscription_id,
|
|
79
|
+
string_agg(fi.name || ':' || fi.value, ' ') AS fi_info
|
|
80
|
+
FROM subscriptions s
|
|
81
|
+
JOIN products p ON s.product_id = p.product_id
|
|
82
|
+
JOIN fixed_inputs fi ON p.product_id = fi.product_id
|
|
83
|
+
GROUP BY s.subscription_id),
|
|
84
|
+
cust_info AS (SELECT s.subscription_id,
|
|
85
|
+
string_agg('customer_description: ' || scd.description, ' ') AS cust_info
|
|
86
|
+
FROM subscriptions s
|
|
87
|
+
JOIN subscription_customer_descriptions scd ON s.subscription_id = scd.subscription_id
|
|
88
|
+
GROUP BY s.subscription_id)
|
|
89
|
+
-- to_tsvector handles parsing of hyphened words in a peculiar way and is inconsistent with how to_tsquery parses it in Postgres <14
|
|
90
|
+
-- Replacing all hyphens with underscores makes the parsing more predictable and removes some issues arising when searching for subscription ids for example
|
|
91
|
+
-- See: https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=0c4f355c6a5fd437f71349f2f3d5d491382572b7
|
|
92
|
+
SELECT s.subscription_id,
|
|
93
|
+
to_tsvector(
|
|
94
|
+
'simple',
|
|
95
|
+
replace(
|
|
96
|
+
concat_ws(
|
|
97
|
+
' ',
|
|
98
|
+
spi.sub_info,
|
|
99
|
+
spi.prod_info,
|
|
100
|
+
fi.fi_info,
|
|
101
|
+
rti.rt_info,
|
|
102
|
+
ci.cust_info,
|
|
103
|
+
md.metadata::text
|
|
104
|
+
),
|
|
105
|
+
'-', '_')
|
|
106
|
+
) as tsv
|
|
107
|
+
FROM subscriptions s
|
|
108
|
+
LEFT JOIN sub_prod_info spi ON s.subscription_id = spi.subscription_id
|
|
109
|
+
LEFT JOIN fi_info fi ON s.subscription_id = fi.subscription_id
|
|
110
|
+
LEFT JOIN rt_info rti ON s.subscription_id = rti.subscription_id
|
|
111
|
+
LEFT JOIN cust_info ci ON s.subscription_id = ci.subscription_id
|
|
112
|
+
LEFT JOIN subscription_metadata md ON s.subscription_id = md.subscription_id;
|
|
113
|
+
|
|
114
|
+
-- Create indexes
|
|
115
|
+
CREATE INDEX subscriptions_search_tsv_idx ON subscriptions_search USING GIN (tsv);
|
|
116
|
+
CREATE UNIQUE INDEX subscriptions_search_subscription_id_idx ON subscriptions_search (subscription_id);
|
|
117
|
+
|
|
118
|
+
-- Create refresh function with epoch-based throttling
|
|
119
|
+
CREATE OR REPLACE FUNCTION refresh_subscriptions_search_view()
|
|
120
|
+
RETURNS TRIGGER
|
|
121
|
+
LANGUAGE plpgsql
|
|
122
|
+
AS
|
|
123
|
+
$$
|
|
124
|
+
DECLARE
|
|
125
|
+
should_refresh bool;
|
|
126
|
+
current_epoch int;
|
|
127
|
+
last_refresh_epoch int;
|
|
128
|
+
comment_sql text;
|
|
129
|
+
BEGIN
|
|
130
|
+
SELECT extract(epoch from now())::int INTO current_epoch;
|
|
131
|
+
SELECT coalesce(pg_catalog.obj_description('subscriptions_search'::regclass)::int, 0) INTO last_refresh_epoch;
|
|
132
|
+
|
|
133
|
+
SELECT (current_epoch - last_refresh_epoch) > 120 INTO should_refresh;
|
|
134
|
+
|
|
135
|
+
IF should_refresh THEN
|
|
136
|
+
REFRESH MATERIALIZED VIEW CONCURRENTLY subscriptions_search;
|
|
137
|
+
|
|
138
|
+
comment_sql := 'COMMENT ON MATERIALIZED VIEW subscriptions_search IS ' || quote_literal(current_epoch);
|
|
139
|
+
EXECUTE comment_sql;
|
|
140
|
+
END IF;
|
|
141
|
+
RETURN NULL;
|
|
142
|
+
END;
|
|
143
|
+
$$;
|
|
144
|
+
|
|
145
|
+
-- Create triggers
|
|
146
|
+
CREATE CONSTRAINT TRIGGER fi_refresh_search AFTER UPDATE ON fixed_inputs DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION refresh_subscriptions_search_view();
|
|
147
|
+
CREATE CONSTRAINT TRIGGER products_refresh_search AFTER UPDATE ON products DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION refresh_subscriptions_search_view();
|
|
148
|
+
CREATE CONSTRAINT TRIGGER sub_cust_desc_refresh_search AFTER INSERT OR UPDATE OR DELETE ON subscription_customer_descriptions DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION refresh_subscriptions_search_view();
|
|
149
|
+
CREATE CONSTRAINT TRIGGER siv_refresh_search AFTER INSERT OR UPDATE OR DELETE ON subscription_instance_values DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION refresh_subscriptions_search_view();
|
|
150
|
+
CREATE CONSTRAINT TRIGGER sub_refresh_search AFTER INSERT OR UPDATE OR DELETE ON subscriptions DEFERRABLE INITIALLY DEFERRED FOR EACH ROW EXECUTE FUNCTION refresh_subscriptions_search_view();
|
|
151
|
+
|
|
152
|
+
-- Refresh the materialized view
|
|
153
|
+
REFRESH MATERIALIZED VIEW subscriptions_search;
|
|
@@ -12,10 +12,12 @@
|
|
|
12
12
|
# limitations under the License.
|
|
13
13
|
|
|
14
14
|
from datetime import datetime
|
|
15
|
+
from typing import Annotated
|
|
15
16
|
from uuid import UUID
|
|
16
17
|
|
|
17
|
-
from pydantic import ConfigDict
|
|
18
|
+
from pydantic import ConfigDict, Field
|
|
18
19
|
|
|
20
|
+
from orchestrator.db.models import DESCRIPTION_LENGTH
|
|
19
21
|
from orchestrator.domain.lifecycle import ProductLifecycle
|
|
20
22
|
from orchestrator.schemas.base import OrchestratorBaseModel
|
|
21
23
|
from orchestrator.schemas.fixed_input import FixedInputSchema
|
|
@@ -44,4 +46,4 @@ class ProductSchema(ProductBaseSchema):
|
|
|
44
46
|
|
|
45
47
|
|
|
46
48
|
class ProductPatchSchema(OrchestratorBaseModel):
|
|
47
|
-
description: str | None = None
|
|
49
|
+
description: Annotated[str, Field(max_length=DESCRIPTION_LENGTH)] | None = None
|
{orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/product_block.py
RENAMED
|
@@ -12,10 +12,12 @@
|
|
|
12
12
|
# limitations under the License.
|
|
13
13
|
|
|
14
14
|
from datetime import datetime
|
|
15
|
+
from typing import Annotated
|
|
15
16
|
from uuid import UUID
|
|
16
17
|
|
|
17
|
-
from pydantic import ConfigDict
|
|
18
|
+
from pydantic import ConfigDict, Field
|
|
18
19
|
|
|
20
|
+
from orchestrator.db.models import DESCRIPTION_LENGTH
|
|
19
21
|
from orchestrator.domain.lifecycle import ProductLifecycle
|
|
20
22
|
from orchestrator.schemas.base import OrchestratorBaseModel
|
|
21
23
|
from orchestrator.schemas.resource_type import ResourceTypeBaseSchema, ResourceTypeSchema
|
|
@@ -40,4 +42,4 @@ class ProductBlockSchema(ProductBlockBaseSchema):
|
|
|
40
42
|
|
|
41
43
|
|
|
42
44
|
class ProductBlockPatchSchema(OrchestratorBaseModel):
|
|
43
|
-
description: str | None = None
|
|
45
|
+
description: Annotated[str, Field(max_length=DESCRIPTION_LENGTH)] | None = None
|
{orchestrator_core-4.7.1 → orchestrator_core-4.8.0rc1}/orchestrator/schemas/resource_type.py
RENAMED
|
@@ -11,10 +11,12 @@
|
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
13
|
|
|
14
|
+
from typing import Annotated
|
|
14
15
|
from uuid import UUID
|
|
15
16
|
|
|
16
|
-
from pydantic import ConfigDict
|
|
17
|
+
from pydantic import ConfigDict, Field
|
|
17
18
|
|
|
19
|
+
from orchestrator.db.models import DESCRIPTION_LENGTH
|
|
18
20
|
from orchestrator.schemas.base import OrchestratorBaseModel
|
|
19
21
|
|
|
20
22
|
|
|
@@ -30,4 +32,4 @@ class ResourceTypeSchema(ResourceTypeBaseSchema):
|
|
|
30
32
|
|
|
31
33
|
|
|
32
34
|
class ResourceTypePatchSchema(OrchestratorBaseModel):
|
|
33
|
-
description: str | None = None
|
|
35
|
+
description: Annotated[str, Field(max_length=DESCRIPTION_LENGTH)] | None = None
|
|
@@ -34,10 +34,17 @@ class ProductSchema(BaseModel):
|
|
|
34
34
|
product_type: str
|
|
35
35
|
|
|
36
36
|
|
|
37
|
+
class CursorInfoSchema(BaseModel):
|
|
38
|
+
total_items: int | None = None
|
|
39
|
+
start_cursor: int | None = None
|
|
40
|
+
end_cursor: int | None = None
|
|
41
|
+
|
|
42
|
+
|
|
37
43
|
class SearchResultsSchema(BaseModel, Generic[T]):
|
|
38
44
|
data: list[T] = Field(default_factory=list)
|
|
39
45
|
page_info: PageInfoSchema = Field(default_factory=PageInfoSchema)
|
|
40
46
|
search_metadata: SearchMetadata | None = None
|
|
47
|
+
cursor: CursorInfoSchema | None = None
|
|
41
48
|
|
|
42
49
|
|
|
43
50
|
class PathsResponse(BaseModel):
|
|
@@ -12,11 +12,12 @@
|
|
|
12
12
|
# limitations under the License.
|
|
13
13
|
|
|
14
14
|
from datetime import datetime
|
|
15
|
-
from typing import Any
|
|
15
|
+
from typing import Annotated, Any
|
|
16
16
|
from uuid import UUID
|
|
17
17
|
|
|
18
18
|
from pydantic import ConfigDict, Field
|
|
19
19
|
|
|
20
|
+
from orchestrator.db.models import DESCRIPTION_LENGTH
|
|
20
21
|
from orchestrator.schemas.base import OrchestratorBaseModel
|
|
21
22
|
from orchestrator.targets import Target
|
|
22
23
|
|
|
@@ -65,4 +66,4 @@ class SubscriptionWorkflowListsSchema(OrchestratorBaseModel):
|
|
|
65
66
|
|
|
66
67
|
|
|
67
68
|
class WorkflowPatchSchema(OrchestratorBaseModel):
|
|
68
|
-
description: str | None = None
|
|
69
|
+
description: Annotated[str, Field(max_length=DESCRIPTION_LENGTH)] | None = None
|