api-foundry-query-engine 0.8.48__tar.gz → 0.8.50__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.
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/PKG-INFO +1 -1
- api_foundry_query_engine-0.8.50/api_foundry_query_engine/__init__.py +1 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/adapters/gateway_adapter.py +2 -2
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/dao/sql_subselect_query_handler.py +6 -1
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/utils/claims_check.py +9 -10
- api_foundry_query_engine-0.8.48/api_foundry_query_engine/__init__.py +0 -1
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/.gitignore +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/LICENSE +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/.pre-commit-config.yaml +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/adapters/adapter.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/adapters/case_change_adapter.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/adapters/security_adapter.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/connectors/connection.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/connectors/connection_factory.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/connectors/oracle_connector.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/connectors/postgres_connection.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/dao/batch_operation_handler.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/dao/dao.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/dao/operation_dao.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/dao/sql_custom_query_handler.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/dao/sql_delete_query_handler.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/dao/sql_insert_query_handler.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/dao/sql_query_handler.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/dao/sql_restore_query_handler.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/dao/sql_select_query_handler.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/dao/sql_update_query_handler.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/lambda_handler.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/operation.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/services/service.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/services/transactional_service.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/utils/api_model.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/utils/app_exception.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/utils/dependency_resolver.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/utils/gateway_operation.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/utils/logger.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/utils/reference_resolver.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/api_foundry_query_engine/utils/token_decoder.py +0 -0
- {api_foundry_query_engine-0.8.48 → api_foundry_query_engine-0.8.50}/pyproject.toml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: api-foundry-query-engine
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.50
|
|
4
4
|
Summary: The AWS lambda service handler use by the `api_foundry` project is a powerful tool designed to automate the deployment of REST APIs on AWS using Lambda services to access and interact with relational databases (RDBMS). This project leverages the OpenAPI specification to define and manage the APIs
|
|
5
5
|
Project-URL: Documentation, https://github.com/DanRepik/api-foundry
|
|
6
6
|
Project-URL: Source, https://github.com/DanRepik/api-foundry
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.8.50"
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import json
|
|
2
|
+
import logging
|
|
2
3
|
from typing import Any, Dict, List, Optional, Tuple
|
|
3
4
|
|
|
4
5
|
from api_foundry_query_engine.adapters.adapter import Adapter
|
|
5
6
|
from api_foundry_query_engine.operation import Operation
|
|
6
7
|
from api_foundry_query_engine.utils.app_exception import ApplicationException
|
|
7
|
-
from api_foundry_query_engine.utils.logger import logger
|
|
8
8
|
|
|
9
|
-
log =
|
|
9
|
+
log = logging.getLogger(__name__)
|
|
10
10
|
|
|
11
11
|
actions_map = {
|
|
12
12
|
"GET": "read",
|
|
@@ -51,11 +51,16 @@ class SQLSubselectSchemaQueryHandler(SQLSelectSchemaQueryHandler):
|
|
|
51
51
|
if len(self.select_list_columns) == 1: # then it only contains the key
|
|
52
52
|
return None
|
|
53
53
|
|
|
54
|
+
# Get the parent table alias to avoid ambiguous column references
|
|
55
|
+
parent_alias = self.parent_generator.prefix_map[
|
|
56
|
+
str(self.parent_generator.schema_object.api_name)
|
|
57
|
+
]
|
|
58
|
+
|
|
54
59
|
sql = (
|
|
55
60
|
f"SELECT {self.select_list} "
|
|
56
61
|
+ f"FROM {self.relation.child_schema_object.qualified_name} "
|
|
57
62
|
+ f"WHERE {self.relation.child_property} "
|
|
58
|
-
+ f"IN ( SELECT {self.relation.parent_property} "
|
|
63
|
+
+ f"IN ( SELECT {parent_alias}.{self.relation.parent_property} "
|
|
59
64
|
+ f"FROM {self.parent_generator.table_expression}"
|
|
60
65
|
+ f"{self.parent_generator.search_condition} "
|
|
61
66
|
# + f"{order_by} {limit} {offset})"
|
|
@@ -418,16 +418,15 @@ def _extract_entity_from_path(event: Dict[str, Any]) -> Optional[str]:
|
|
|
418
418
|
# Remove leading slash and split by slash
|
|
419
419
|
path_parts = path.lstrip("/").split("/")
|
|
420
420
|
|
|
421
|
-
#
|
|
422
|
-
# For paths like "/
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
return part
|
|
421
|
+
# Find the first non-parameter part (entity is typically first)
|
|
422
|
+
# For paths like "/comment/123" or "/comment/123/version/1"
|
|
423
|
+
# Skip common API prefixes like "api", "v1", etc.
|
|
424
|
+
api_prefixes = {"api", "v1", "v2", "v3"}
|
|
425
|
+
for part in path_parts:
|
|
426
|
+
if part and not part.startswith("{") and part not in api_prefixes:
|
|
427
|
+
# Skip numeric IDs and known path keywords
|
|
428
|
+
if not part.isdigit() and part not in {"version", "batch"}:
|
|
429
|
+
return part
|
|
431
430
|
|
|
432
431
|
return None
|
|
433
432
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.8.48"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|