"""BankAccount model — multiple bank accounts per tenant.""" from __future__ import annotations import uuid from sqlalchemy import Boolean, String from sqlalchemy.dialects.postgresql import UUID as PGUUID from sqlalchemy.orm import Mapped, mapped_column from app.core.db import Base, TenantMixin from app.models.owned_mixin import OwnedMixin class BankAccount(Base, TenantMixin, OwnedMixin): """Bank account entity — multiple accounts per tenant. is_default: one default bank account per tenant. """ __tablename__ = "bank_accounts" id: Mapped[uuid.UUID] = mapped_column( PGUUID(as_uuid=True), primary_key=True, default=uuid.uuid4 ) bank_name: Mapped[str] = mapped_column(String(100), nullable=False) iban: Mapped[str] = mapped_column(String(34), nullable=False) bic: Mapped[str | None] = mapped_column(String(11), nullable=True) account_holder: Mapped[str | None] = mapped_column(String(200), nullable=True) default_tax: Mapped[str | None] = mapped_column(String(50), nullable=True) is_default: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False)