fix: cast all microdao_id to text in joins and where clauses

This commit is contained in:
Apple
2025-11-30 14:37:29 -08:00
parent ac2de7cdd1
commit 25defcdb36

View File

@@ -118,7 +118,7 @@ async def get_room_by_id(room_id: str) -> Optional[dict]:
cr.matrix_room_id, cr.matrix_room_alias, cr.logo_url, cr.banner_url,
cr.microdao_id, m.name AS microdao_name, m.slug AS microdao_slug, m.logo_url AS microdao_logo_url
FROM city_rooms cr
LEFT JOIN microdaos m ON cr.microdao_id = m.id
LEFT JOIN microdaos m ON cr.microdao_id::text = m.id
WHERE cr.id = $1
"""
@@ -136,7 +136,7 @@ async def get_room_by_slug(slug: str) -> Optional[dict]:
cr.matrix_room_id, cr.matrix_room_alias, cr.logo_url, cr.banner_url,
cr.microdao_id, m.name AS microdao_name, m.slug AS microdao_slug, m.logo_url AS microdao_logo_url
FROM city_rooms cr
LEFT JOIN microdaos m ON cr.microdao_id = m.id
LEFT JOIN microdaos m ON cr.microdao_id::text = m.id
WHERE cr.slug = $1
"""
@@ -154,7 +154,7 @@ async def get_room_by_id(room_id: str) -> Optional[dict]:
cr.matrix_room_id, cr.matrix_room_alias, cr.logo_url, cr.banner_url,
cr.microdao_id, m.name AS microdao_name, m.slug AS microdao_slug, m.logo_url AS microdao_logo_url
FROM city_rooms cr
LEFT JOIN microdaos m ON cr.microdao_id = m.id
LEFT JOIN microdaos m ON cr.microdao_id::text = m.id
WHERE cr.id = $1
"""
@@ -2454,7 +2454,7 @@ async def get_microdao_primary_room(microdao_id: str) -> Optional[dict]:
cr.is_public,
cr.sort_order
FROM city_rooms cr
WHERE cr.microdao_id = $1
WHERE cr.microdao_id::text = $1
ORDER BY
CASE WHEN cr.room_role = 'primary' THEN 0 ELSE 1 END,
cr.sort_order ASC,
@@ -2490,7 +2490,7 @@ async def get_microdao_rooms(microdao_id: str) -> List[dict]:
cr.slug,
cr.name,
cr.matrix_room_id,
COALESCE(cr.microdao_id, cr.owner_id) AS microdao_id,
COALESCE(cr.microdao_id::text, cr.owner_id) AS microdao_id,
cr.room_role,
cr.is_public,
cr.sort_order,
@@ -2498,8 +2498,8 @@ 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 COALESCE(cr.microdao_id, cr.owner_id) = m.id
WHERE cr.microdao_id = $1
LEFT JOIN microdaos m ON COALESCE(cr.microdao_id::text, cr.owner_id) = m.id
WHERE cr.microdao_id::text = $1
OR (cr.owner_type = 'microdao' AND cr.owner_id = $1)
ORDER BY
CASE WHEN cr.room_role = 'primary' THEN 0 ELSE 1 END,
@@ -2737,7 +2737,7 @@ async def get_or_create_orchestrator_team_room(microdao_id: str) -> Optional[dic
SELECT
cr.id, cr.slug, cr.name, cr.matrix_room_id, cr.microdao_id, cr.room_role, cr.is_public, cr.sort_order
FROM city_rooms cr
WHERE cr.microdao_id = $1 AND cr.room_role = 'orchestrator_team'
WHERE cr.microdao_id::text = $1 AND cr.room_role = 'orchestrator_team'
LIMIT 1
"""
room_row = await pool.fetchrow(existing_room_query, microdao_id)