HomeRealty / src /rag /searcher.py
jaydeb2023
Moved project files to root for Hugging Face Space
4ab8820
Raw
History Blame Contribute Delete
2.91 kB
import sqlite3
import pandas as pd
from datetime import date, timedelta
from src.database.queries import get_conn
def search_properties(
min_price: float = None,
max_price: float = None,
bhk: int = None,
property_type: str = None,
location: str = None,
furnishing: str = None,
min_area: int = None,
parking: bool = None,
) -> list[dict]:
conn = get_conn()
query = "SELECT * FROM properties WHERE available = 'Yes'"
params = []
if min_price is not None:
query += " AND price_inr >= ?"
params.append(min_price)
if max_price is not None:
query += " AND price_inr <= ?"
params.append(max_price)
if bhk is not None:
query += " AND bhk = ?"
params.append(bhk)
if property_type:
query += " AND LOWER(property_type) = ?"
params.append(property_type.lower())
if location:
query += " AND LOWER(location) LIKE ?"
params.append(f"%{location.lower()}%")
if furnishing:
query += " AND LOWER(furnishing) = ?"
params.append(furnishing.lower())
if min_area is not None:
query += " AND area_sqft >= ?"
params.append(min_area)
if parking:
query += " AND parking >= 1"
query += " ORDER BY price_inr ASC LIMIT 10"
df = pd.read_sql_query(query, conn, params=params)
conn.close()
return df.to_dict(orient="records")
def get_leases_expiring(days: int = 30) -> list[dict]:
conn = get_conn()
today = date.today().isoformat()
future = (date.today() + timedelta(days=days)).isoformat()
query = """
SELECT p.property_id, p.title, p.bhk, p.location, p.price_inr, p.registration_no,
l.lease_status, l.lease_end, l.monthly_rent,
l.tenant_name, l.followup_person, l.followup_contact, l.notes
FROM properties p
JOIN leases l ON p.property_id = l.property_id
WHERE l.lease_end BETWEEN ? AND ?
ORDER BY l.lease_end ASC
"""
df = pd.read_sql_query(query, conn, params=[today, future])
conn.close()
return df.to_dict(orient="records")
def get_leases_vacant_or_pending() -> list[dict]:
conn = get_conn()
query = """
SELECT p.property_id, p.title, p.bhk, p.location, p.price_inr, p.registration_no,
l.lease_status, l.lease_end, l.monthly_rent,
l.tenant_name, l.followup_person, l.followup_contact, l.notes
FROM properties p
JOIN leases l ON p.property_id = l.property_id
WHERE l.lease_status IN ('PENDING', 'EXPIRED')
ORDER BY l.lease_end ASC
"""
df = pd.read_sql_query(query, conn)
conn.close()
return df.to_dict(orient="records")
def get_all_properties() -> list[dict]:
conn = get_conn()
df = pd.read_sql_query("SELECT * FROM properties ORDER BY price_inr ASC", conn)
conn.close()
return df.to_dict(orient="records")