From e93006e49ab91fce0727c4ae21b4a02400564b58 Mon Sep 17 00:00:00 2001 From: Leopoldadmin Date: Thu, 4 Jun 2026 00:06:19 +0000 Subject: [PATCH] Upload app/models/org.py --- app/models/org.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 app/models/org.py diff --git a/app/models/org.py b/app/models/org.py new file mode 100644 index 0000000..ac97e67 --- /dev/null +++ b/app/models/org.py @@ -0,0 +1,34 @@ +"""Organization model.""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Optional + +from sqlalchemy import String +from sqlalchemy.orm import Mapped, mapped_column, relationship + +from app.models.base import Base, TimestampMixin + +if TYPE_CHECKING: + from app.models.user import User + + +class Org(Base, TimestampMixin): + __tablename__ = "orgs" + + id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) + name: Mapped[str] = mapped_column(String(255), nullable=False) + logo_url: Mapped[Optional[str]] = mapped_column(String(1024), nullable=True) + default_currency: Mapped[str] = mapped_column( + String(3), nullable=False, default="EUR", server_default="EUR" + ) + + # Relationship to users (defined here to resolve circular import) + users: Mapped[list["User"]] = relationship( + back_populates="org", + lazy="selectin", + cascade="all, delete-orphan", + ) + + def __repr__(self) -> str: + return f""