feat: house price prediction model integration

This commit is contained in:
nasim
2025-04-03 10:14:54 +02:00
parent 72375db5cd
commit 3aa78be3d6
22 changed files with 251 additions and 24 deletions
+5 -1
View File
@@ -8,7 +8,6 @@ from sqlmodel import asc, desc, select
from ..models.house import House
from ..providers.db_provider import get_session
class HouseRepository:
def __init__(self, session: Annotated[AsyncSession, Depends(get_session)]) -> None:
self.session = session
@@ -34,6 +33,11 @@ class HouseRepository:
result = await self.session.execute(statement)
return result.scalar_one_or_none()
async def get_by_user_id(self, user_id: UUID):
statement = select(House).where(House.owner_user_id == user_id)
result = await self.session.execute(statement)
return result.scalars().all()
async def save(self, house: House) -> None:
"""
Save a house to the database. If a house with that ID already exists, do an upsert.
@@ -5,6 +5,9 @@ from fastapi import Depends
from sqlalchemy.ext.asyncio.session import AsyncSession
from sqlmodel import select
from backend.app.models.house import House
from backend.app.models.user import User
from ..models.owner import Owner
from ..providers.db_provider import get_session
@@ -27,7 +30,26 @@ class OwnerRepository:
statement = select(Owner).where(Owner.user_id == user_id)
result = await self.session.execute(statement)
return result.scalar_one_or_none()
async def get_details_by_house_id(self, house_id: UUID):
statement = (
select(Owner, User)
.join(User, Owner.user_id == User.id)
.join(House, House.owner_user_id == Owner.user_id)
.where(House.id == house_id)
)
result = await self.session.execute(statement)
row = result.first()
if row:
owner, user = row
return {
"owner": owner,
"user": user
}
return None
async def save(self, owner: Owner) -> None:
"""
Save a owner to the database. If an owner with that ID already exists, do an upsert.