File size: 923 Bytes
680fa2b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from sqlalchemy import Column, String, Integer, ForeignKey
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from backend.app.models.base import BaseDBModel

class WalletTransaction(BaseDBModel):
    __tablename__ = "wallet_transactions"
    
    user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), index=True, nullable=False)
    booking_id = Column(UUID(as_uuid=True), ForeignKey("bookings.id", ondelete="SET NULL"), nullable=True)
    label = Column(String, nullable=False) # e.g. "Wallet top-up via UPI", "Escrow hold for B-2401"
    amount = Column(Integer, nullable=False) # positive for credits/refunds, negative for debits/holds
    type = Column(String, nullable=False, index=True) # credit, hold, release, refund
    
    # Relationships
    user = relationship("User", back_populates="wallet_transactions")
    booking = relationship("Booking")