|
@@ -143,6 +143,14 @@ class LoginTokenLookupResult:
|
|
|
"""The session ID advertised by the SSO Identity Provider."""
|
|
|
|
|
|
|
|
|
+@attr.s(frozen=True, slots=True, auto_attribs=True)
|
|
|
+class ThreepidResult:
|
|
|
+ medium: str
|
|
|
+ address: str
|
|
|
+ validated_at: int
|
|
|
+ added_at: int
|
|
|
+
|
|
|
+
|
|
|
class RegistrationWorkerStore(CacheInvalidationWorkerStore):
|
|
|
def __init__(
|
|
|
self,
|
|
@@ -988,13 +996,14 @@ class RegistrationWorkerStore(CacheInvalidationWorkerStore):
|
|
|
{"user_id": user_id, "validated_at": validated_at, "added_at": added_at},
|
|
|
)
|
|
|
|
|
|
- async def user_get_threepids(self, user_id: str) -> List[Dict[str, Any]]:
|
|
|
- return await self.db_pool.simple_select_list(
|
|
|
+ async def user_get_threepids(self, user_id: str) -> List[ThreepidResult]:
|
|
|
+ results = await self.db_pool.simple_select_list(
|
|
|
"user_threepids",
|
|
|
- {"user_id": user_id},
|
|
|
- ["medium", "address", "validated_at", "added_at"],
|
|
|
- "user_get_threepids",
|
|
|
+ keyvalues={"user_id": user_id},
|
|
|
+ retcols=["medium", "address", "validated_at", "added_at"],
|
|
|
+ desc="user_get_threepids",
|
|
|
)
|
|
|
+ return [ThreepidResult(**r) for r in results]
|
|
|
|
|
|
async def user_delete_threepid(
|
|
|
self, user_id: str, medium: str, address: str
|