(
self, query: str, parameters: dict
)
| 73 | |
| 74 | ###### SQL Helpers ###### |
| 75 | async def execute_sql( |
| 76 | self, query: str, parameters: dict |
| 77 | ) -> Union[List[Dict[str, Any]], int, None]: |
| 78 | parameterized_query = text(query) |
| 79 | async with self.async_session() as session: |
| 80 | try: |
| 81 | await session.begin() |
| 82 | result = await session.execute(parameterized_query, parameters) |
| 83 | await session.commit() |
| 84 | if result.returns_rows: |
| 85 | json_result = [dict(row._mapping) for row in result.fetchall()] |
| 86 | clean_json_result = self.clean_result(json_result) |
| 87 | return clean_json_result |
| 88 | else: |
| 89 | return result.rowcount |
| 90 | except SQLAlchemyError as e: |
| 91 | await session.rollback() |
| 92 | logger.warn(f"An error occurred: {e}") |
| 93 | return None |
| 94 | except Exception as e: |
| 95 | await session.rollback() |
| 96 | logger.warn(f"An unexpected error occurred: {e}") |
| 97 | return None |
| 98 | |
| 99 | async def get_current_timestamp(self) -> str: |
| 100 | return datetime.now().isoformat() + "Z" |
no test coverage detected