feat(api): select member by id + tests

This commit is contained in:
minhtrannhat 2024-03-02 15:41:29 -05:00
parent 49c83fa287
commit 6bd9657737
Signed by: minhtrannhat
GPG Key ID: E13CFA85C53F8062
2 changed files with 28 additions and 3 deletions

View File

@ -31,7 +31,26 @@ async def select_member_by_email(db: AsyncConnectionPool, email: str) -> Member
await curr.execute(query, (email,)) 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() member = await curr.fetchone()

View File

@ -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") member = await select_member_by_email(db_pool, "member@todo.test")
assert member is not None assert member is not None
assert member.email == "member@todo.test" 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