From 37ae73ef1f5fd27112e308f51945baa392025412 Mon Sep 17 00:00:00 2001 From: jableader Date: Sat, 4 May 2024 14:22:19 +1000 Subject: [PATCH] Search persons by name --- main.py | 5 +++-- persons/db.py | 10 ++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index 9ffffa0..a6427d8 100644 --- a/main.py +++ b/main.py @@ -195,9 +195,10 @@ async def delete_meal(meal_id: int, conn: sqlite3.Connection = Depends(get_db)) return meal @app.get("/persons/") -async def get_persons(conn: sqlite3.Connection = Depends(get_db)) -> List[meals.Person]: +async def get_persons(q: str = None, conn: sqlite3.Connection = Depends(get_db)) -> List[meals.Person]: + query = persons.search_by_name(conn, q) if q else persons.get_all(conn) result = [] - async for person in persons.get_all(conn): + async for person in query: result.append(person) return result diff --git a/persons/db.py b/persons/db.py index 675370a..f69fa06 100644 --- a/persons/db.py +++ b/persons/db.py @@ -12,6 +12,16 @@ async def create(conn): name TEXT UNIQUE );''') +async def search_by_name(conn, name: str) -> List[Person]: + async with conn.execute(''' + SELECT id, name + FROM Person + WHERE name LIKE ? + ''', (f'%{name}%',)) as cursor: + async for row in cursor: + yield Person(id=row[0], name=row[1]) + + async def get_by_name(conn, name: str) -> Person: cursor = await conn.execute(''' SELECT id, name