feat(psa): implement list_members in ConnectWise provider with cache
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -231,7 +231,33 @@ class ConnectWiseProvider(PSAProvider):
|
|||||||
return self._map_ticket(data)
|
return self._map_ticket(data)
|
||||||
|
|
||||||
async def list_members(self) -> list[PSAMember]:
|
async def list_members(self) -> list[PSAMember]:
|
||||||
raise NotImplementedError("Implemented in Slice 5")
|
"""List CW system members (cached 15 minutes)."""
|
||||||
|
cache_key = "members:all"
|
||||||
|
cached = psa_cache.get(cache_key)
|
||||||
|
if cached is not None:
|
||||||
|
return cached
|
||||||
|
|
||||||
|
data = await self.client.get_paginated(
|
||||||
|
"/system/members",
|
||||||
|
params={
|
||||||
|
"fields": "id,identifier,firstName,lastName,officeEmail",
|
||||||
|
"conditions": "inactiveFlag = false",
|
||||||
|
"pageSize": 1000,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
result = [
|
||||||
|
PSAMember(
|
||||||
|
id=str(m["id"]),
|
||||||
|
identifier=m.get("identifier", ""),
|
||||||
|
name=f"{m.get('firstName', '')} {m.get('lastName', '')}".strip(),
|
||||||
|
email=m.get("officeEmail"),
|
||||||
|
)
|
||||||
|
for m in data
|
||||||
|
]
|
||||||
|
|
||||||
|
psa_cache.set(cache_key, result, ttl_seconds=900)
|
||||||
|
return result
|
||||||
|
|
||||||
# ── Private helpers ───────────────────────────────────────────────
|
# ── Private helpers ───────────────────────────────────────────────
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user