from __future__ import annotations

from sqlalchemy import ForeignKey, String
from sqlalchemy.orm import Mapped, mapped_column, relationship

from app.db.base import Base, TimestampMixin, UUIDMixin


class Location(Base, UUIDMixin, TimestampMixin):
    __tablename__ = "locations"

    customer_id: Mapped[str] = mapped_column(ForeignKey("customers.id", ondelete="CASCADE"), index=True)
    name: Mapped[str] = mapped_column(String(160))
    street: Mapped[str | None] = mapped_column(String(220))
    postal_code: Mapped[str | None] = mapped_column(String(20))
    city: Mapped[str | None] = mapped_column(String(120))
    room: Mapped[str | None] = mapped_column(String(120))

    customer: Mapped["Customer"] = relationship(back_populates="locations")
    devices: Mapped[list["Device"]] = relationship(back_populates="location")

