@@ -202,7 +202,7 @@ async def __aexit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None:
202202 self .cursor .close ()
203203
204204
205- class OracleSyncExceptionHandler :
205+ class OracleExceptionHandler :
206206 """Context manager for handling Oracle database exceptions.
207207
208208 Maps Oracle ORA-XXXXX error codes to specific SQLSpec exceptions
@@ -211,16 +211,6 @@ class OracleSyncExceptionHandler:
211211
212212 __slots__ = ()
213213
214- def __enter__ (self ) -> None :
215- return None
216-
217- def __exit__ (self , exc_type : Any , exc_val : Any , exc_tb : Any ) -> None :
218- _ = exc_tb
219- if exc_type is None :
220- return
221- if issubclass (exc_type , oracledb .DatabaseError ):
222- self ._map_oracle_exception (exc_val )
223-
224214 def _map_oracle_exception (self , e : Any ) -> None :
225215 """Map Oracle exception to SQLSpec exception.
226216
@@ -304,106 +294,40 @@ def _raise_generic_error(self, e: Any, code: "int | None") -> None:
304294 raise SQLSpecError (msg ) from e
305295
306296
307- class OracleAsyncExceptionHandler :
308- """Async context manager for handling Oracle database exceptions.
297+ class OracleSyncExceptionHandler ( OracleExceptionHandler ) :
298+ """Sync Context manager for handling Oracle database exceptions.
309299
310300 Maps Oracle ORA-XXXXX error codes to specific SQLSpec exceptions
311301 for better error handling in application code.
312302 """
313303
314- __slots__ = ()
315-
316- async def __aenter__ (self ) -> None :
304+ def __enter__ (self ) -> None :
317305 return None
318306
319- async def __aexit__ (self , exc_type : Any , exc_val : Any , exc_tb : Any ) -> None :
307+ def __exit__ (self , exc_type : Any , exc_val : Any , exc_tb : Any ) -> None :
320308 _ = exc_tb
321309 if exc_type is None :
322310 return
323311 if issubclass (exc_type , oracledb .DatabaseError ):
324312 self ._map_oracle_exception (exc_val )
325313
326- def _map_oracle_exception (self , e : Any ) -> None :
327- """Map Oracle exception to SQLSpec exception.
328-
329- Args:
330- e: oracledb.DatabaseError instance
331- """
332- error_obj = e .args [0 ] if e .args else None
333- if not error_obj :
334- self ._raise_generic_error (e , None )
335-
336- error_code = getattr (error_obj , "code" , None )
337-
338- if not error_code :
339- self ._raise_generic_error (e , None )
340-
341- if error_code == 1 :
342- self ._raise_unique_violation (e , error_code )
343- elif error_code in {2291 , 2292 }:
344- self ._raise_foreign_key_violation (e , error_code )
345- elif error_code == ORA_CHECK_CONSTRAINT :
346- self ._raise_check_violation (e , error_code )
347- elif error_code in {1400 , 1407 }:
348- self ._raise_not_null_violation (e , error_code )
349- elif error_code and ORA_INTEGRITY_RANGE_START <= error_code < ORA_INTEGRITY_RANGE_END :
350- self ._raise_integrity_error (e , error_code )
351- elif error_code in {1017 , 12154 , 12541 , 12545 , 12514 , 12505 }:
352- self ._raise_connection_error (e , error_code )
353- elif error_code in {60 , 8176 }:
354- self ._raise_transaction_error (e , error_code )
355- elif error_code in {1722 , 1858 , 1840 }:
356- self ._raise_data_error (e , error_code )
357- elif error_code and ORA_PARSING_RANGE_START <= error_code < ORA_PARSING_RANGE_END :
358- self ._raise_parsing_error (e , error_code )
359- elif error_code == ORA_TABLESPACE_FULL :
360- self ._raise_operational_error (e , error_code )
361- else :
362- self ._raise_generic_error (e , error_code )
363-
364- def _raise_unique_violation (self , e : Any , code : int ) -> None :
365- msg = f"Oracle unique constraint violation [ORA-{ code :05d} ]: { e } "
366- raise UniqueViolationError (msg ) from e
367-
368- def _raise_foreign_key_violation (self , e : Any , code : int ) -> None :
369- msg = f"Oracle foreign key constraint violation [ORA-{ code :05d} ]: { e } "
370- raise ForeignKeyViolationError (msg ) from e
371-
372- def _raise_check_violation (self , e : Any , code : int ) -> None :
373- msg = f"Oracle check constraint violation [ORA-{ code :05d} ]: { e } "
374- raise CheckViolationError (msg ) from e
375314
376- def _raise_not_null_violation (self , e : Any , code : int ) -> None :
377- msg = f"Oracle not-null constraint violation [ORA-{ code :05d} ]: { e } "
378- raise NotNullViolationError (msg ) from e
379-
380- def _raise_integrity_error (self , e : Any , code : int ) -> None :
381- msg = f"Oracle integrity constraint violation [ORA-{ code :05d} ]: { e } "
382- raise IntegrityError (msg ) from e
383-
384- def _raise_parsing_error (self , e : Any , code : int ) -> None :
385- msg = f"Oracle SQL syntax error [ORA-{ code :05d} ]: { e } "
386- raise SQLParsingError (msg ) from e
387-
388- def _raise_connection_error (self , e : Any , code : int ) -> None :
389- msg = f"Oracle connection error [ORA-{ code :05d} ]: { e } "
390- raise DatabaseConnectionError (msg ) from e
391-
392- def _raise_transaction_error (self , e : Any , code : int ) -> None :
393- msg = f"Oracle transaction error [ORA-{ code :05d} ]: { e } "
394- raise TransactionError (msg ) from e
315+ class OracleAsyncExceptionHandler (OracleExceptionHandler ):
316+ """Async context manager for handling Oracle database exceptions.
395317
396- def _raise_data_error ( self , e : Any , code : int ) -> None :
397- msg = f"Oracle data error [ORA- { code :05d } ]: { e } "
398- raise DataError ( msg ) from e
318+ Maps Oracle ORA-XXXXX error codes to specific SQLSpec exceptions
319+ for better error handling in application code.
320+ """
399321
400- def _raise_operational_error (self , e : Any , code : int ) -> None :
401- msg = f"Oracle operational error [ORA-{ code :05d} ]: { e } "
402- raise OperationalError (msg ) from e
322+ async def __aenter__ (self ) -> None :
323+ return None
403324
404- def _raise_generic_error (self , e : Any , code : "int | None" ) -> None :
405- msg = f"Oracle database error [ORA-{ code :05d} ]: { e } " if code else f"Oracle database error: { e } "
406- raise SQLSpecError (msg ) from e
325+ async def __aexit__ (self , exc_type : Any , exc_val : Any , exc_tb : Any ) -> None :
326+ _ = exc_tb
327+ if exc_type is None :
328+ return
329+ if issubclass (exc_type , oracledb .DatabaseError ):
330+ self ._map_oracle_exception (exc_val )
407331
408332
409333class OracleSyncDriver (SyncDriverAdapterBase ):
0 commit comments