(self)
| 840 | return None |
| 841 | |
| 842 | async def _get_admin_activities(self) -> list[dict[str, Any]]: |
| 843 | record = await KeyValue.filter(key=self.ADMIN_ACTIVITY_KEY).first() |
| 844 | raw_activities = record.value if record else [] |
| 845 | if isinstance(raw_activities, dict): |
| 846 | raw_activities = ( |
| 847 | raw_activities.get("activities") or raw_activities.get("items") or [] |
| 848 | ) |
| 849 | if not isinstance(raw_activities, list): |
| 850 | return [] |
| 851 | |
| 852 | activities = [] |
| 853 | seen_ids = set() |
| 854 | for raw_activity in raw_activities: |
| 855 | activity = self._normalize_admin_activity(raw_activity) |
| 856 | if not activity or activity["id"] in seen_ids: |
| 857 | continue |
| 858 | seen_ids.add(activity["id"]) |
| 859 | activities.append(activity) |
| 860 | if len(activities) >= self.MAX_ADMIN_ACTIVITIES: |
| 861 | break |
| 862 | |
| 863 | activities.sort(key=lambda item: item.get("createdAt") or "", reverse=True) |
| 864 | return activities |
| 865 | |
| 866 | async def _save_admin_activities(self, activities: list[dict[str, Any]]) -> None: |
| 867 | await KeyValue.update_or_create( |
no test coverage detected