Compare commits
No commits in common. "0b285e6ef079605fa1f56f193cd546185c000f16" and "6d6c4ee35d8a89d06528426dc1f947a5b6da283a" have entirely different histories.
0b285e6ef0
...
6d6c4ee35d
@ -101,9 +101,7 @@ class DatabaseInterface(ABC):
|
|||||||
"""Create a new user."""
|
"""Create a new user."""
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
async def update_user_display_name(
|
async def update_user_display_name(self, user_uuid: UUID, display_name: str) -> None:
|
||||||
self, user_uuid: UUID, display_name: str
|
|
||||||
) -> None:
|
|
||||||
"""Update a user's display name."""
|
"""Update a user's display name."""
|
||||||
|
|
||||||
# Role operations
|
# Role operations
|
||||||
@ -337,7 +335,6 @@ class DatabaseInterface(ABC):
|
|||||||
2. Optionally delete old session (e.g. reset token) if provided
|
2. Optionally delete old session (e.g. reset token) if provided
|
||||||
3. Optionally update user's display name
|
3. Optionally update user's display name
|
||||||
4. Insert new session referencing the credential
|
4. Insert new session referencing the credential
|
||||||
5. Update user's last_seen and increment visits (treat as a login)
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
@ -271,9 +271,7 @@ class DB(DatabaseInterface):
|
|||||||
async with self.session() as session:
|
async with self.session() as session:
|
||||||
session.add(UserModel.from_dataclass(user))
|
session.add(UserModel.from_dataclass(user))
|
||||||
|
|
||||||
async def update_user_display_name(
|
async def update_user_display_name(self, user_uuid: UUID, display_name: str) -> None:
|
||||||
self, user_uuid: UUID, display_name: str
|
|
||||||
) -> None:
|
|
||||||
async with self.session() as session:
|
async with self.session() as session:
|
||||||
stmt = (
|
stmt = (
|
||||||
update(UserModel)
|
update(UserModel)
|
||||||
@ -414,11 +412,6 @@ class DB(DatabaseInterface):
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Atomic credential + (optional old session delete) + (optional rename) + new session."""
|
"""Atomic credential + (optional old session delete) + (optional rename) + new session."""
|
||||||
async with self.session() as session:
|
async with self.session() as session:
|
||||||
# Ensure credential has last_used / last_verified for immediate login semantics
|
|
||||||
if credential.last_used is None:
|
|
||||||
credential.last_used = credential.created_at
|
|
||||||
if credential.last_verified is None:
|
|
||||||
credential.last_verified = credential.last_used
|
|
||||||
# Insert credential
|
# Insert credential
|
||||||
session.add(
|
session.add(
|
||||||
CredentialModel(
|
CredentialModel(
|
||||||
@ -455,12 +448,6 @@ class DB(DatabaseInterface):
|
|||||||
info=session_info,
|
info=session_info,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
# Login side-effects: update user analytics (last_seen + visits increment)
|
|
||||||
await session.execute(
|
|
||||||
update(UserModel)
|
|
||||||
.where(UserModel.uuid == user_uuid.bytes)
|
|
||||||
.values(last_seen=credential.last_used, visits=UserModel.visits + 1)
|
|
||||||
)
|
|
||||||
|
|
||||||
async def delete_credential(self, uuid: UUID, user_uuid: UUID) -> None:
|
async def delete_credential(self, uuid: UUID, user_uuid: UUID) -> None:
|
||||||
async with self.session() as session:
|
async with self.session() as session:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user