Matching guests works nicely
This commit is contained in:
@@ -187,6 +187,33 @@ class ResilientAsyncSession:
|
||||
raise last_error
|
||||
|
||||
|
||||
class SessionMaker:
|
||||
"""Factory for creating independent AsyncSession instances.
|
||||
|
||||
This class enables concurrent processing by allowing each task to create
|
||||
and manage its own database session. Useful for processing large datasets
|
||||
where concurrent execution is desired but each concurrent task needs its own
|
||||
database transaction context.
|
||||
"""
|
||||
|
||||
def __init__(self, async_sessionmaker_: async_sessionmaker[AsyncSession]):
|
||||
"""Initialize the SessionMaker.
|
||||
|
||||
Args:
|
||||
async_sessionmaker_: SQLAlchemy async_sessionmaker factory
|
||||
"""
|
||||
self.async_sessionmaker = async_sessionmaker_
|
||||
|
||||
async def create_session(self) -> AsyncSession:
|
||||
"""Create a new independent AsyncSession.
|
||||
|
||||
Returns:
|
||||
A new AsyncSession instance ready for use. Caller is responsible
|
||||
for managing the session lifecycle (closing when done).
|
||||
"""
|
||||
return self.async_sessionmaker()
|
||||
|
||||
|
||||
async def get_resilient_session(
|
||||
resilient_session: "ResilientAsyncSession",
|
||||
) -> AsyncGenerator[AsyncSession, None]:
|
||||
@@ -416,9 +443,10 @@ class RoomReservation(Base):
|
||||
Integer, ForeignKey("conversions.id"), nullable=False, index=True
|
||||
)
|
||||
|
||||
# Unique identifier for this room reservation (for upserts)
|
||||
# Identifier for this room reservation (for upserts)
|
||||
# Composite: pms_reservation_id + room_number
|
||||
pms_hotel_reservation_id = Column(String, unique=True, index=True)
|
||||
# Note: Not globally unique - same room number can exist across different hotels
|
||||
pms_hotel_reservation_id = Column(String, index=True)
|
||||
|
||||
# Room reservation details
|
||||
arrival_date = Column(Date, index=True) # arrival attribute
|
||||
|
||||
Reference in New Issue
Block a user