set up epc model and already installed model

This commit is contained in:
Khalim Conn-Kowlessar 2025-11-25 13:43:36 +00:00
parent caeb776428
commit 7fde580b37
2 changed files with 45 additions and 0 deletions

View file

@ -0,0 +1,29 @@
from sqlalchemy import (
Column,
Integer,
String,
JSON,
TIMESTAMP,
UniqueConstraint,
)
from sqlalchemy.orm import declarative_base
Base = declarative_base()
class EpcStore(Base):
"""
Stores EPC data retrieved from the EPC API and EPC web pages.
"""
__tablename__ = "epc_store"
id = Column(Integer, primary_key=True, autoincrement=True)
uprn = Column(Integer)
epc_api_created_at = Column(TIMESTAMP(timezone=False))
epc_api = Column(JSON, nullable=False)
epc_page_created_at = Column(TIMESTAMP(timezone=False))
epc_page = Column(String)
epc_page_rrn = Column(String)
def __repr__(self):
return f"<EpcStore(id={self.id}, uprn='{self.uprn}')>"

View file

@ -4,6 +4,7 @@ import datetime
from sqlalchemy import Column, Integer, Text, Boolean, Float, DateTime, Enum, ForeignKey, CheckConstraint from sqlalchemy import Column, Integer, Text, Boolean, Float, DateTime, Enum, ForeignKey, CheckConstraint
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from backend.app.db.models.users import UserModel # noqa from backend.app.db.models.users import UserModel # noqa
from backend.app.db.models.materials import MaterialType
Base = declarative_base() Base = declarative_base()
@ -225,3 +226,18 @@ class PortfolioUsers(Base):
role = Column(Text, nullable=False) role = Column(Text, nullable=False)
created_at = Column(DateTime, nullable=False, default=datetime.datetime.now(pytz.utc)) created_at = Column(DateTime, nullable=False, default=datetime.datetime.now(pytz.utc))
updated_at = Column(DateTime, nullable=False, default=datetime.datetime.now(pytz.utc)) updated_at = Column(DateTime, nullable=False, default=datetime.datetime.now(pytz.utc))
class PropertyInstalledMeasures(Base):
"""
This model keeps a record of the installed measures for each property, at the UPRN level
"""
__tablename__ = 'property_installed_measures'
id = Column(Integer, primary_key=True, autoincrement=True)
uprn = Column(Integer, nullable=False)
measure_type = Column(
Enum(MaterialType, values_callable=lambda x: [e.value for e in x], create_constraint=False),
nullable=False
)
created_at = Column(DateTime, nullable=False, default=datetime.datetime.now(pytz.utc))
installed_at = Column(DateTime, nullable=False, default=datetime.datetime.now(pytz.utc))