add drugs db index
This commit is contained in:
parent
126dcf78c7
commit
ba9e90cd60
7 changed files with 78 additions and 12 deletions
24
src/cache/drug_cache.py
vendored
24
src/cache/drug_cache.py
vendored
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue