mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
86 lines
3.6 KiB
Python
86 lines
3.6 KiB
Python
from sqlmodel import SQLModel, Field, Column, text
|
|
from datetime import datetime, timezone
|
|
from typing import Optional
|
|
from sqlalchemy import DateTime
|
|
from sqlalchemy.sql import func
|
|
import uuid
|
|
|
|
|
|
class Organisation(SQLModel, table=True):
|
|
__tablename__ = "organisation"
|
|
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
|
|
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
updated_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
hubspot_company_id: Optional[str] = None
|
|
name: Optional[str] = None
|
|
|
|
|
|
class HubspotDealData(SQLModel, table=True):
|
|
__tablename__ = "hubspot_deal_data"
|
|
|
|
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
|
|
|
|
# HubSpot Deal identifiers
|
|
deal_id: str = Field(index=True, nullable=False)
|
|
dealname: Optional[str] = Field(default=None)
|
|
dealstage: Optional[str] = Field(default=None)
|
|
company_id: Optional[str] = Field(default=None)
|
|
project_code: Optional[str] = Field(default=None)
|
|
|
|
# HubSpot custom properties
|
|
landlord_property_id: Optional[str] = Field(default=None)
|
|
uprn: Optional[str] = Field(default=None)
|
|
outcome: Optional[str] = Field(default=None)
|
|
outcome_notes: Optional[str] = Field(default=None)
|
|
|
|
major_condition_issue_description: Optional[str] = Field(default=None)
|
|
major_condition_issue_photos: Optional[str] = Field(default=None)
|
|
major_condition_issue_evidence_s3_url: Optional[str] = Field(default=None)
|
|
|
|
coordination_status: Optional[str] = Field(default=None)
|
|
coordination_comments: Optional[str] = Field(default=None)
|
|
design_status: Optional[str] = Field(default=None)
|
|
|
|
listing_id: Optional[str] = Field(default=None)
|
|
pashub_link: Optional[str] = Field(default=None)
|
|
sharepoint_link: Optional[str] = Field(default=None)
|
|
dampmould_growth: Optional[str] = Field(default=None)
|
|
damp_mould_and_repairs_comments: Optional[str] = Field(default=None)
|
|
pre_sap: Optional[str] = Field(default=None)
|
|
coordinator: Optional[str] = Field(default=None)
|
|
mtp_completion_date: Optional[datetime] = Field(default=None)
|
|
mtp_re_model_completion_date: Optional[datetime] = Field(default=None)
|
|
ioe_v3_completion_date: Optional[datetime] = Field(default=None)
|
|
proposed_measures: Optional[str] = Field(default=None)
|
|
approved_package: Optional[str] = Field(default=None)
|
|
designer: Optional[str] = Field(default=None)
|
|
design_completion_date: Optional[datetime] = Field(default=None)
|
|
actual_measures_installed: Optional[str] = Field(default=None)
|
|
installer: Optional[str] = Field(default=None)
|
|
installer_handover: Optional[str] = Field(default=None)
|
|
lodgement_status: Optional[str] = Field(default=None)
|
|
measures_lodgement_date: Optional[datetime] = Field(default=None)
|
|
lodgement_date: Optional[datetime] = Field(default=None)
|
|
expected_commencement_date: Optional[datetime] = Field(default=None)
|
|
surveyor: Optional[str] = Field(default=None)
|
|
confirmed_survey_date: Optional[datetime] = Field(default=None)
|
|
confirmed_survey_time: Optional[str] = Field(default=None)
|
|
surveyed_date: Optional[datetime] = Field(default=None)
|
|
design_type: Optional[str] = Field(default=None)
|
|
|
|
created_at: datetime = Field(
|
|
sa_column=Column(
|
|
DateTime(timezone=True),
|
|
server_default=text("(NOW() AT TIME ZONE 'utc')"),
|
|
nullable=False,
|
|
)
|
|
)
|
|
|
|
updated_at: datetime = Field(
|
|
sa_column=Column(
|
|
DateTime(timezone=True),
|
|
server_default=text("(NOW() AT TIME ZONE 'utc')"),
|
|
onupdate=func.now(),
|
|
nullable=False,
|
|
)
|
|
)
|