201 előtti mentés
This commit is contained in:
@@ -15,6 +15,7 @@ from .service import (
|
||||
ServiceProfile,
|
||||
ExpertiseTag,
|
||||
ServiceExpertise,
|
||||
Cost,
|
||||
)
|
||||
|
||||
from .logistics import Location, LocationType
|
||||
@@ -44,6 +45,7 @@ __all__ = [
|
||||
"ServiceProfile",
|
||||
"ExpertiseTag",
|
||||
"ServiceExpertise",
|
||||
"Cost",
|
||||
"ServiceStaging",
|
||||
"DiscoveryParameter",
|
||||
"Location",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
import enum
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
from typing import Any, List, Optional
|
||||
from typing import Any, List, Optional, TYPE_CHECKING
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy import Column, Integer, String, Boolean, DateTime, ForeignKey, JSON, text, Numeric, BigInteger, Float
|
||||
from sqlalchemy.dialects.postgresql import ENUM as PG_ENUM, UUID as PG_UUID, JSONB
|
||||
@@ -13,6 +13,9 @@ from geoalchemy2 import Geometry
|
||||
# MB 2.0: A központi aszinkron adatbázis motorból húzzuk be a Base-t
|
||||
from app.database import Base
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .service_request import ServiceRequest
|
||||
|
||||
class OrgType(str, enum.Enum):
|
||||
individual = "individual"
|
||||
service = "service"
|
||||
@@ -222,6 +225,13 @@ class Branch(Base):
|
||||
|
||||
# Kapcsolatok (Primaryjoin tartva a rating rendszerhez)
|
||||
reviews: Mapped[List["Rating"]] = relationship(
|
||||
"Rating",
|
||||
"Rating",
|
||||
primaryjoin="and_(Branch.id==foreign(Rating.target_branch_id))"
|
||||
)
|
||||
|
||||
# Kapcsolat a ServiceRequest modellel
|
||||
service_requests: Mapped[List["ServiceRequest"]] = relationship(
|
||||
"ServiceRequest",
|
||||
back_populates="branch",
|
||||
cascade="all, delete-orphan"
|
||||
)
|
||||
@@ -156,4 +156,21 @@ class DiscoveryParameter(Base):
|
||||
city: Mapped[str] = mapped_column(String(100))
|
||||
keyword: Mapped[str] = mapped_column(String(100))
|
||||
is_active: Mapped[bool] = mapped_column(Boolean, default=True)
|
||||
last_run_at: Mapped[Optional[datetime]] = mapped_column(DateTime(timezone=True))
|
||||
last_run_at: Mapped[Optional[datetime]] = mapped_column(DateTime(timezone=True))
|
||||
|
||||
|
||||
class Cost(Base):
|
||||
""" Költségnapló a trust engine számára. """
|
||||
__tablename__ = "costs"
|
||||
__table_args__ = {"schema": "marketplace"}
|
||||
|
||||
id: Mapped[int] = mapped_column(Integer, primary_key=True)
|
||||
vehicle_id: Mapped[int] = mapped_column(Integer, nullable=False, index=True)
|
||||
category: Mapped[str] = mapped_column(String(50), nullable=False, index=True)
|
||||
amount: Mapped[float] = mapped_column(Numeric(12, 2), nullable=False)
|
||||
currency: Mapped[str] = mapped_column(String(3), default="HUF")
|
||||
odometer_km: Mapped[Optional[int]] = mapped_column(Integer, nullable=True)
|
||||
occurrence_date: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False, index=True)
|
||||
is_deleted: Mapped[bool] = mapped_column(Boolean, default=False)
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
|
||||
updated_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), onupdate=func.now(), server_default=func.now())
|
||||
@@ -4,7 +4,7 @@ ServiceRequest - Piactér központi tranzakciós modellje.
|
||||
Epic 7: Marketplace ServiceRequest dedikált modell.
|
||||
"""
|
||||
|
||||
from typing import Optional
|
||||
from typing import Optional, TYPE_CHECKING
|
||||
from datetime import datetime
|
||||
from sqlalchemy import String, ForeignKey, Text, DateTime, Numeric, Integer, Index
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
@@ -12,6 +12,11 @@ from sqlalchemy.sql import func
|
||||
|
||||
from app.database import Base
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from ..identity.identity import User
|
||||
from ..vehicle.asset import Asset
|
||||
from ..marketplace.service import Branch
|
||||
|
||||
|
||||
class ServiceRequest(Base):
|
||||
"""
|
||||
@@ -87,9 +92,9 @@ class ServiceRequest(Base):
|
||||
)
|
||||
|
||||
# Relationships (opcionális, de ajánlott a lazy loading miatt)
|
||||
user = relationship("User", back_populates="service_requests", lazy="selectin")
|
||||
asset = relationship("Asset", back_populates="service_requests", lazy="selectin")
|
||||
branch = relationship("Branch", back_populates="service_requests", lazy="selectin")
|
||||
user: Mapped["User"] = relationship("User", back_populates="service_requests", lazy="selectin")
|
||||
asset: Mapped[Optional["Asset"]] = relationship("Asset", back_populates="service_requests", lazy="selectin")
|
||||
branch: Mapped[Optional["Branch"]] = relationship("Branch", back_populates="service_requests", lazy="selectin")
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"<ServiceRequest(id={self.id}, status='{self.status}', user_id={self.user_id})>"
|
||||
Reference in New Issue
Block a user