23 lines
782 B
Python
23 lines
782 B
Python
from typing import Optional
|
|
|
|
from sqlalchemy import ForeignKey, Integer, String, Text
|
|
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|
|
|
from .base import Base, TimestampMixin
|
|
|
|
|
|
class Zone(Base, TimestampMixin):
|
|
__tablename__ = "zones"
|
|
|
|
id: Mapped[int] = mapped_column(Integer, primary_key=True)
|
|
object_id: Mapped[int] = mapped_column(
|
|
Integer,
|
|
ForeignKey("objects.id", ondelete="CASCADE"),
|
|
nullable=False,
|
|
index=True,
|
|
)
|
|
name: Mapped[str] = mapped_column(String(100), nullable=False)
|
|
description: Mapped[Optional[str]] = mapped_column(Text, nullable=True)
|
|
|
|
object: Mapped["Object"] = relationship("Object", back_populates="zones")
|
|
racks: Mapped[list["Rack"]] = relationship("Rack", back_populates="zone")
|