diff --git a/backend/src/neo_neo_todo/models/member.py b/backend/src/neo_neo_todo/models/member.py index 651d233..9098970 100644 --- a/backend/src/neo_neo_todo/models/member.py +++ b/backend/src/neo_neo_todo/models/member.py @@ -31,7 +31,26 @@ async def select_member_by_email(db: AsyncConnectionPool, email: str) -> Member await curr.execute(query, (email,)) - print(query.as_string(conn)) + member = await curr.fetchone() + + return None if member is None else member + + +async def select_member_by_id(db: AsyncConnectionPool, id: int) -> Member | None: + """ + Find exactly one id match in users list in PostgreSQL database + """ + async with db.connection() as conn: + async with conn.cursor(row_factory=class_row(Member)) as curr: + query = sql.SQL( + """ + SELECT id, email, password_hash, created, email_verified + FROM members + WHERE id = (%s); + """ + ) + + await curr.execute(query, (id,)) member = await curr.fetchone() diff --git a/backend/tests/test_model_member.py b/backend/tests/test_model_member.py index e44d476..d4b54fb 100644 --- a/backend/tests/test_model_member.py +++ b/backend/tests/test_model_member.py @@ -1,7 +1,13 @@ -from src.neo_neo_todo.models.member import select_member_by_email +from src.neo_neo_todo.models.member import select_member_by_email, select_member_by_id -async def test_model_member(db_pool): +async def test_model_member_select_by_email(db_pool): member = await select_member_by_email(db_pool, "member@todo.test") assert member is not None assert member.email == "member@todo.test" + + +async def test_model_member_select_by_id(db_pool): + member = await select_member_by_id(db_pool, 1) + assert member is not None + assert member.id == 1