Files

48 lines
1.6 KiB
Python
Raw Permalink Normal View History

"""Account (Tenant) model."""
import uuid
from datetime import datetime
from sqlalchemy import String, DateTime, func
from sqlalchemy.orm import Mapped, mapped_column, relationship
from app.db.base import Base
class Account(Base):
"""Represents a tenant/company account."""
__tablename__ = "accounts"
id: Mapped[str] = mapped_column(
String(36), primary_key=True, default=lambda: str(uuid.uuid4())
)
name: Mapped[str] = mapped_column(String(255), nullable=False)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True), server_default=func.now(), nullable=False
)
# Relationships
users: Mapped[list["User"]] = relationship("User", back_populates="account")
roles: Mapped[list["Role"]] = relationship("Role", back_populates="account")
contacts: Mapped[list["Contact"]] = relationship(
"Contact", back_populates="account"
)
tags: Mapped[list["Tag"]] = relationship("Tag", back_populates="account")
equipment: Mapped[list["Equipment"]] = relationship(
"Equipment", back_populates="account"
)
stock_locations: Mapped[list["StockLocation"]] = relationship(
"StockLocation", back_populates="account"
)
equipment_groups: Mapped[list["EquipmentGroup"]] = relationship(
"EquipmentGroup", back_populates="account"
)
crew_members: Mapped[list["Crew"]] = relationship("Crew", back_populates="account")
vehicles: Mapped[list["Vehicle"]] = relationship(
"Vehicle", back_populates="account"
)
projects: Mapped[list["Project"]] = relationship(
"Project", back_populates="account"
)