refac: is_user_active
This commit is contained in:
@@ -762,6 +762,14 @@ class UsersTable:
|
|||||||
)
|
)
|
||||||
return count
|
return count
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def is_active(user: UserModel) -> bool:
|
||||||
|
"""Compute active status from an already-loaded UserModel (no DB hit)."""
|
||||||
|
if user.last_active_at:
|
||||||
|
three_minutes_ago = int(time.time()) - 180
|
||||||
|
return user.last_active_at >= three_minutes_ago
|
||||||
|
return False
|
||||||
|
|
||||||
def is_user_active(self, user_id: str, db: Optional[Session] = None) -> bool:
|
def is_user_active(self, user_id: str, db: Optional[Session] = None) -> bool:
|
||||||
with get_db_context(db) as db:
|
with get_db_context(db) as db:
|
||||||
user = db.query(User).filter_by(id=user_id).first()
|
user = db.query(User).filter_by(id=user_id).first()
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ async def get_channels(
|
|||||||
UserIdNameStatusResponse(
|
UserIdNameStatusResponse(
|
||||||
**{
|
**{
|
||||||
**user.model_dump(),
|
**user.model_dump(),
|
||||||
"is_active": Users.is_user_active(user.id, db=db),
|
"is_active": Users.is_active(user),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
for user in Users.get_users_by_user_ids(user_ids, db=db)
|
for user in Users.get_users_by_user_ids(user_ids, db=db)
|
||||||
@@ -424,7 +424,7 @@ async def get_channel_by_id(
|
|||||||
UserIdNameStatusResponse(
|
UserIdNameStatusResponse(
|
||||||
**{
|
**{
|
||||||
**user.model_dump(),
|
**user.model_dump(),
|
||||||
"is_active": Users.is_user_active(user.id, db=db),
|
"is_active": Users.is_active(user),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
for user in Users.get_users_by_user_ids(user_ids, db=db)
|
for user in Users.get_users_by_user_ids(user_ids, db=db)
|
||||||
@@ -541,7 +541,7 @@ async def get_channel_members_by_id(
|
|||||||
return {
|
return {
|
||||||
"users": [
|
"users": [
|
||||||
UserModelResponse(
|
UserModelResponse(
|
||||||
**user.model_dump(), is_active=Users.is_user_active(user.id, db=db)
|
**user.model_dump(), is_active=Users.is_active(user)
|
||||||
)
|
)
|
||||||
for user in users
|
for user in users
|
||||||
],
|
],
|
||||||
@@ -576,7 +576,7 @@ async def get_channel_members_by_id(
|
|||||||
return {
|
return {
|
||||||
"users": [
|
"users": [
|
||||||
UserModelResponse(
|
UserModelResponse(
|
||||||
**user.model_dump(), is_active=Users.is_user_active(user.id, db=db)
|
**user.model_dump(), is_active=Users.is_active(user)
|
||||||
)
|
)
|
||||||
for user in users
|
for user in users
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user