aboutsummaryrefslogtreecommitdiff
path: root/gn3/auth/authentication/users.py
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2023-03-07 05:49:21 +0300
committerFrederick Muriuki Muriithi2023-03-07 05:49:21 +0300
commit09c2330e9e8279f6c9fd391a736435ceb4705873 (patch)
tree38f3f2835cf608d89994da00bf060734de0baa65 /gn3/auth/authentication/users.py
parent361a934d1c0d75da01bd19d8ac78bf15aa7e2cad (diff)
downloadgenenetwork3-09c2330e9e8279f6c9fd391a736435ceb4705873.tar.gz
auth: user_by_id: Return a user or raise an exception
Fetching the user by id should return the user, or raise an exception. We get rid of the Maybe monad here since it is leading to some weird code flows - probably the wrong monad to use here.
Diffstat (limited to 'gn3/auth/authentication/users.py')
-rw-r--r--gn3/auth/authentication/users.py7
1 files changed, 3 insertions, 4 deletions
diff --git a/gn3/auth/authentication/users.py b/gn3/auth/authentication/users.py
index e65938e..54838a3 100644
--- a/gn3/auth/authentication/users.py
+++ b/gn3/auth/authentication/users.py
@@ -3,7 +3,6 @@ from uuid import UUID, uuid4
from typing import Any, Tuple, NamedTuple
import bcrypt
-from pymonad.maybe import Just, Maybe, Nothing
from gn3.auth import db
from gn3.auth.authorisation.errors import NotFoundError
@@ -37,16 +36,16 @@ def user_by_email(conn: db.DbConnection, email: str) -> User:
raise NotFoundError(f"Could not find user with email {email}")
-def user_by_id(conn: db.DbConnection, user_id: UUID) -> Maybe:
+def user_by_id(conn: db.DbConnection, user_id: UUID) -> User:
"""Retrieve user from database by their user id"""
with db.cursor(conn) as cursor:
cursor.execute("SELECT * FROM users WHERE user_id=?", (str(user_id),))
row = cursor.fetchone()
if row:
- return Just(User(UUID(row["user_id"]), row["email"], row["name"]))
+ return User(UUID(row["user_id"]), row["email"], row["name"])
- return Nothing
+ raise NotFoundError(f"Could not find user with ID {user_id}")
def valid_login(conn: db.DbConnection, user: User, password: str) -> bool:
"""Check the validity of the provided credentials for login."""