from sqlalchemy import String, ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship

from src.database import Base


class Zone(Base):
    __tablename__ = "zone"

    zone_id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
    name: Mapped[str] = mapped_column(String(255), nullable=False)

    cities: Mapped[list["City"]] = relationship(back_populates="zone")

class City(Base):
    __tablename__ = "city"

    city_id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
    name: Mapped[str] = mapped_column(String(255), nullable=False)
    area_text: Mapped[str] = mapped_column(String(255), nullable=True)

    zone_id: Mapped[int] = mapped_column(ForeignKey("zone.zone_id"), nullable=False)
    zone: Mapped[Zone] = relationship(back_populates="cities")