sghorbal
store the ground truth about frauds
60abdf9
raw
history blame
2.29 kB
from sqlalchemy import Integer, String, Float, Boolean, DateTime
from sqlalchemy.orm import relationship, mapped_column, Mapped
from src.entity.fraud_details import FraudDetails
from . import Base
class Transaction(Base):
"""
Transaction table
"""
__tablename__ = "transactions"
# Transaction table columns
id: Mapped[int] = mapped_column(primary_key=True)
transaction_number: Mapped[str] = mapped_column(String, nullable=False)
transaction_amount: Mapped[float] = mapped_column(Float, nullable=False)
transaction_datetime: Mapped[DateTime] = mapped_column(DateTime, nullable=False)
transaction_category: Mapped[str] = mapped_column(String, nullable=True)
customer_firstname: Mapped[str] = mapped_column(String, nullable=True)
customer_lastname: Mapped[str] = mapped_column(String, nullable=True)
customer_gender: Mapped[str] = mapped_column(String, nullable=True)
customer_credit_card_number: Mapped[str] = mapped_column('customer_credit_card_num', String, nullable=True)
customer_address_street: Mapped[str] = mapped_column(String, nullable=True)
customer_address_city: Mapped[str] = mapped_column(String, nullable=True)
customer_address_state: Mapped[str] = mapped_column(String, nullable=True)
customer_address_zip: Mapped[str] = mapped_column(String, nullable=True)
customer_address_latitude: Mapped[float] = mapped_column(Float, nullable=True)
customer_address_longitude: Mapped[float] = mapped_column(Float, nullable=True)
customer_address_city_population: Mapped[int] = mapped_column(Integer, nullable=True)
customer_job: Mapped[str] = mapped_column(String, nullable=True)
customer_dob: Mapped[DateTime] = mapped_column(DateTime, nullable=True)
merchant_name: Mapped[str] = mapped_column(String, nullable=True)
merchant_address_latitude: Mapped[float] = mapped_column(Float, nullable=True)
merchant_address_longitude: Mapped[float] = mapped_column(Float, nullable=True)
is_fraud: Mapped[bool] = mapped_column(Boolean, nullable=True)
is_real_fraud: Mapped[bool] = mapped_column(Boolean, nullable=True)
# Dependent table
fraud_details: Mapped[FraudDetails] = relationship("FraudDetails", back_populates="transaction", cascade="all, delete-orphan", uselist=False)