diff --git a/services/city-service/repo_city.py b/services/city-service/repo_city.py index c8ad7c9f..a2682b13 100644 --- a/services/city-service/repo_city.py +++ b/services/city-service/repo_city.py @@ -2004,6 +2004,7 @@ async def get_microdao_primary_room(microdao_id: str) -> Optional[dict]: async def get_microdao_rooms(microdao_id: str) -> List[dict]: """ Отримати всі кімнати MicroDAO, впорядковані за sort_order. + Шукає по microdao_id АБО owner_id (для нових кімнат з owner_type='microdao'). """ pool = await get_pool() @@ -2013,7 +2014,7 @@ async def get_microdao_rooms(microdao_id: str) -> List[dict]: cr.slug, cr.name, cr.matrix_room_id, - cr.microdao_id, + COALESCE(cr.microdao_id, cr.owner_id) AS microdao_id, cr.room_role, cr.is_public, cr.sort_order, @@ -2021,8 +2022,9 @@ async def get_microdao_rooms(microdao_id: str) -> List[dict]: cr.banner_url, m.slug AS microdao_slug FROM city_rooms cr - LEFT JOIN microdaos m ON cr.microdao_id = m.id - WHERE cr.microdao_id = $1 + LEFT JOIN microdaos m ON COALESCE(cr.microdao_id, cr.owner_id) = m.id + WHERE cr.microdao_id = $1 + OR (cr.owner_type = 'microdao' AND cr.owner_id = $1) ORDER BY CASE WHEN cr.room_role = 'primary' THEN 0 ELSE 1 END, cr.sort_order ASC,