mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
import datetime
|
|
import pytz
|
|
from enum import Enum as PyEnum
|
|
from sqlalchemy import Column, Integer, Float, DateTime, JSON, BigInteger, ForeignKey, Enum, Boolean
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
|
|
Base = declarative_base()
|
|
|
|
|
|
class Solar(Base):
|
|
__tablename__ = 'solar'
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
|
longitude = Column(Float, nullable=False)
|
|
latitude = Column(Float, nullable=False)
|
|
uprn = Column(Integer, nullable=False)
|
|
created_at = Column(
|
|
DateTime, nullable=False, default=datetime.datetime.now(pytz.utc)
|
|
)
|
|
updated_at = Column(
|
|
DateTime, nullable=False, default=datetime.datetime.now(pytz.utc), onupdate=datetime.datetime.now(pytz.utc)
|
|
)
|
|
google_api_response = Column(JSON, nullable=False)
|
|
|
|
|
|
class ScenarioType(PyEnum):
|
|
unit = "unit"
|
|
building = "building"
|
|
|
|
|
|
class SolarScenario(Base):
|
|
__tablename__ = 'solar_scenario'
|
|
|
|
id = Column(BigInteger, primary_key=True, autoincrement=True)
|
|
solar_id = Column(BigInteger, ForeignKey('solar.id'), nullable=False)
|
|
scenario_type = Column(Enum(ScenarioType), nullable=False)
|
|
number_panels = Column(Integer, nullable=False)
|
|
array_kwhp = Column(Integer, nullable=False)
|
|
lifetime_dc_kwh = Column(Float, nullable=False)
|
|
yearly_dc_kwh = Column(Float, nullable=False)
|
|
lifetime_ac_kwh = Column(Float)
|
|
yearly_ac_kwh = Column(Float)
|
|
cost = Column(Float, nullable=False)
|
|
expected_payback_years = Column(Float)
|
|
panelled_roof_area = Column(Float, nullable=False)
|
|
is_default = Column(Boolean, nullable=False)
|