52 lines
1.2 KiB
Python
Executable File
52 lines
1.2 KiB
Python
Executable File
"""
|
|
Custom Database Exceptions
|
|
Provides consistent error handling across all microservices
|
|
"""
|
|
|
|
class DatabaseError(Exception):
|
|
"""Base exception for database-related errors"""
|
|
|
|
def __init__(self, message: str, details: dict = None):
|
|
self.message = message
|
|
self.details = details or {}
|
|
super().__init__(self.message)
|
|
|
|
|
|
class ConnectionError(DatabaseError):
|
|
"""Raised when database connection fails"""
|
|
pass
|
|
|
|
|
|
class RecordNotFoundError(DatabaseError):
|
|
"""Raised when a requested record is not found"""
|
|
pass
|
|
|
|
|
|
class DuplicateRecordError(DatabaseError):
|
|
"""Raised when trying to create a duplicate record"""
|
|
pass
|
|
|
|
|
|
class ConstraintViolationError(DatabaseError):
|
|
"""Raised when database constraints are violated"""
|
|
pass
|
|
|
|
|
|
class TransactionError(DatabaseError):
|
|
"""Raised when transaction operations fail"""
|
|
pass
|
|
|
|
|
|
class ValidationError(DatabaseError):
|
|
"""Raised when data validation fails before database operations"""
|
|
pass
|
|
|
|
|
|
class MigrationError(DatabaseError):
|
|
"""Raised when database migration operations fail"""
|
|
pass
|
|
|
|
|
|
class HealthCheckError(DatabaseError):
|
|
"""Raised when database health checks fail"""
|
|
pass |