api-foundry-query-engine 0.8.44__tar.gz → 0.8.45__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.
Files changed (38) hide show
  1. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/PKG-INFO +1 -1
  2. api_foundry_query_engine-0.8.45/api_foundry_query_engine/__init__.py +1 -0
  3. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/dao/sql_insert_query_handler.py +30 -11
  4. api_foundry_query_engine-0.8.44/api_foundry_query_engine/__init__.py +0 -1
  5. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/.gitignore +0 -0
  6. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/LICENSE +0 -0
  7. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/.pre-commit-config.yaml +0 -0
  8. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/adapters/adapter.py +0 -0
  9. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/adapters/case_change_adapter.py +0 -0
  10. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/adapters/gateway_adapter.py +0 -0
  11. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/adapters/security_adapter.py +0 -0
  12. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/connectors/connection.py +0 -0
  13. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/connectors/connection_factory.py +0 -0
  14. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/connectors/oracle_connector.py +0 -0
  15. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/connectors/postgres_connection.py +0 -0
  16. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/dao/batch_operation_handler.py +0 -0
  17. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/dao/dao.py +0 -0
  18. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/dao/operation_dao.py +0 -0
  19. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/dao/sql_custom_query_handler.py +0 -0
  20. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/dao/sql_delete_query_handler.py +0 -0
  21. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/dao/sql_query_handler.py +0 -0
  22. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/dao/sql_restore_query_handler.py +0 -0
  23. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/dao/sql_select_query_handler.py +0 -0
  24. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/dao/sql_subselect_query_handler.py +0 -0
  25. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/dao/sql_update_query_handler.py +0 -0
  26. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/lambda_handler.py +0 -0
  27. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/operation.py +0 -0
  28. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/services/service.py +0 -0
  29. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/services/transactional_service.py +0 -0
  30. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/utils/api_model.py +0 -0
  31. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/utils/app_exception.py +0 -0
  32. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/utils/claims_check.py +0 -0
  33. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/utils/dependency_resolver.py +0 -0
  34. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/utils/gateway_operation.py +0 -0
  35. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/utils/logger.py +0 -0
  36. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/utils/reference_resolver.py +0 -0
  37. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/api_foundry_query_engine/utils/token_decoder.py +0 -0
  38. {api_foundry_query_engine-0.8.44 → api_foundry_query_engine-0.8.45}/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.44
3
+ Version: 0.8.45
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.45"
@@ -1,4 +1,4 @@
1
- from typing import Optional
1
+ from typing import Dict, Optional
2
2
  from api_foundry_query_engine.dao.sql_query_handler import SQLSchemaQueryHandler
3
3
  from api_foundry_query_engine.operation import Operation
4
4
  from api_foundry_query_engine.utils.app_exception import ApplicationException
@@ -42,6 +42,28 @@ class SQLInsertSchemaQueryHandler(SQLSchemaQueryHandler):
42
42
  + f"property: {self.concurrency_property.api_name}",
43
43
  )
44
44
 
45
+ @property
46
+ def selection_results(self) -> Dict:
47
+ """
48
+ Override parent to combine read+write permissions for INSERT RETURNING.
49
+ Returns all columns the user can read OR write.
50
+ """
51
+ if not hasattr(self, "_insert_selection_results"):
52
+ # Get both read and write permissions
53
+ write_props = self.check_permissions(
54
+ "write",
55
+ self.schema_object.permissions,
56
+ self.schema_object.properties,
57
+ )
58
+ read_props = self.check_permissions(
59
+ "read",
60
+ self.schema_object.permissions,
61
+ self.schema_object.properties,
62
+ )
63
+ # Combine both (union of read and write)
64
+ self._insert_selection_results = {**read_props, **write_props}
65
+ return self._insert_selection_results
66
+
45
67
  @property
46
68
  def sql(self) -> str:
47
69
  self.concurrency_property = self.schema_object.concurrency_property
@@ -70,24 +92,21 @@ class SQLInsertSchemaQueryHandler(SQLSchemaQueryHandler):
70
92
 
71
93
  def _get_returning_clause(self) -> str:
72
94
  """
73
- Get RETURNING clause based on read permissions.
74
- Returns all fields the user has read access to.
95
+ Get RETURNING clause with combined read+write permissions.
96
+ Returns all fields the user can read OR write.
75
97
  """
76
- # Get properties user has read permissions for
77
- allowed_properties = self.check_permissions(
78
- "read",
79
- self.schema_object.permissions,
80
- self.schema_object.properties,
81
- )
98
+ # Use the combined selection_results (read + write)
99
+ allowed_properties = self.selection_results
82
100
 
83
101
  if allowed_properties:
84
- # Return all readable columns
102
+ # Return all accessible columns
85
103
  columns = [
86
104
  prop.column_name for prop in allowed_properties.values()
87
105
  ]
88
106
  return f"RETURNING {', '.join(columns)}"
89
107
 
90
- # Fallback to primary key if no read permissions
108
+ # Fallback to primary key if no permissions
109
+ # (shouldn't happen if user can INSERT)
91
110
  pk_property = self.schema_object.primary_key
92
111
  if pk_property:
93
112
  return f"RETURNING {pk_property.column_name}"
@@ -1 +0,0 @@
1
- __version__ = "0.8.44"