mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
import enum
|
|
|
|
from sqlalchemy import Column, Integer, String, Float, Enum, TIMESTAMP, BigInteger, ForeignKey
|
|
from sqlalchemy.orm import declarative_base
|
|
from sqlalchemy.sql import func
|
|
from backend.app.db.models.recommendations import Plan
|
|
from backend.app.db.models.materials import MaterialType, Material
|
|
|
|
Base = declarative_base()
|
|
|
|
|
|
class SchemeEnum(enum.Enum):
|
|
eco4 = "eco4"
|
|
gbis = "gbis"
|
|
whlg = "whlg"
|
|
none = "none"
|
|
|
|
|
|
class FundingPackage(Base):
|
|
__tablename__ = 'funding_package'
|
|
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
|
plan_id = Column(BigInteger, ForeignKey(Plan.id), nullable=False)
|
|
scheme = Column(
|
|
Enum(SchemeEnum, values_callable=lambda x: [e.value for e in x], create_constraint=False),
|
|
nullable=False
|
|
)
|
|
created_at = Column(TIMESTAMP, nullable=False, server_default=func.now())
|
|
project_funding = Column(Float)
|
|
total_uplift = Column(Float)
|
|
full_project_score = Column(Float)
|
|
partial_project_score = Column(Float)
|
|
uplift_project_score = Column(Float)
|
|
|
|
|
|
class FundingPackageMeasures(Base):
|
|
__tablename__ = 'funding_package_measures'
|
|
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
|
funding_package_id = Column(BigInteger, ForeignKey(FundingPackage.id), nullable=False)
|
|
measure = Column(
|
|
Enum(MaterialType, values_callable=lambda x: [e.value for e in x], create_constraint=False),
|
|
nullable=False
|
|
)
|
|
material_id = Column(BigInteger, ForeignKey(Material.id), nullable=False) # Assuming material table exists
|
|
innovation_uplift = Column(Float)
|
|
partial_project_score = Column(Float)
|
|
uplift_project_score = Column(Float)
|