Batch update sort_order for personas and/or folders. Args: items: List of dicts with keys: - id: The persona_id or folder_id - type: Either "persona" or "folder" - sort_order: The new sort_order value
(
self,
items: list[dict],
)
| 1167 | return list(result.scalars().all()) |
| 1168 | |
| 1169 | async def batch_update_sort_order( |
| 1170 | self, |
| 1171 | items: list[dict], |
| 1172 | ) -> None: |
| 1173 | """Batch update sort_order for personas and/or folders. |
| 1174 | |
| 1175 | Args: |
| 1176 | items: List of dicts with keys: |
| 1177 | - id: The persona_id or folder_id |
| 1178 | - type: Either "persona" or "folder" |
| 1179 | - sort_order: The new sort_order value |
| 1180 | """ |
| 1181 | if not items: |
| 1182 | return |
| 1183 | |
| 1184 | async with self.get_db() as session: |
| 1185 | session: AsyncSession |
| 1186 | async with session.begin(): |
| 1187 | for item in items: |
| 1188 | item_id = item.get("id") |
| 1189 | item_type = item.get("type") |
| 1190 | sort_order = item.get("sort_order") |
| 1191 | |
| 1192 | if item_id is None or item_type is None or sort_order is None: |
| 1193 | continue |
| 1194 | |
| 1195 | if item_type == "persona": |
| 1196 | await session.execute( |
| 1197 | update(Persona) |
| 1198 | .where(col(Persona.persona_id) == item_id) |
| 1199 | .values(sort_order=sort_order) |
| 1200 | ) |
| 1201 | elif item_type == "folder": |
| 1202 | await session.execute( |
| 1203 | update(PersonaFolder) |
| 1204 | .where(col(PersonaFolder.folder_id) == item_id) |
| 1205 | .values(sort_order=sort_order) |
| 1206 | ) |
| 1207 | |
| 1208 | async def insert_preference_or_update(self, scope, scope_id, key, value): |
| 1209 | """Insert a new preference record or update if it exists.""" |