add drugs db index

This commit is contained in:
ipu 2025-08-07 20:38:50 +03:00
parent 126dcf78c7
commit ba9e90cd60
7 changed files with 78 additions and 12 deletions

View file

@ -6,6 +6,7 @@ from src.database import Drug, Session
from src.drug_price_parser import DrugPriceParser, DrugPriceResponse
from src.config import settings
from src.services.session_service import session_service
from sqlalchemy.exc import IntegrityError
class DrugFull(BaseModel):
@ -36,25 +37,28 @@ async def convert_drug_result(drug: DrugPriceResponse) -> list[DrugFull]:
return [DrugFull.model_validate(r) for r in response_dict["result"]]
async def get_drug(drug_name: str) -> list[Drug]:
async def get_drug(drug_name: str) -> list[DrugFull]:
parser = DrugPriceParser()
result = parser.get_drug_prices(drug_name)
drugs = await convert_drug_result(result)
return drugs
async def store_drug(drugs: list[DrugFull]):
with Session() as session:
for drug in drugs:
session.add(Drug(
name=drug.name,
dosage=drug.dosage,
dosage_unit=drug.dosage_unit,
unit_price=drug.unit_price,
description=drug.description
))
session.commit()
try:
session.add(Drug(
name=drug.name,
dosage=drug.dosage,
dosage_unit=drug.dosage_unit,
unit_price=drug.unit_price,
description=drug.description
))
session.commit()
except IntegrityError as e:
session.rollback()
pass
async def fetch_drug_with_dosage(drug_name: str, dosage: float) -> DrugFull | None: