diff --git a/apps/server/src/core/acadenice/graph/services/graph.service.ts b/apps/server/src/core/acadenice/graph/services/graph.service.ts index 06081afd..18b3ec7b 100644 --- a/apps/server/src/core/acadenice/graph/services/graph.service.ts +++ b/apps/server/src/core/acadenice/graph/services/graph.service.ts @@ -424,10 +424,17 @@ export class GraphService { pageIds: string[], spaceId: string | undefined, ): Promise { - if (pageIds.length === 0) return []; + // Filter out undefined / null / empty entries before binding — sql.lit + // throws "invalid immediate value undefined" otherwise. Edges with a + // missing source/target page id would surface here when finalPageIds is + // assembled from raw rows. + const cleanIds = pageIds.filter( + (id): id is string => typeof id === 'string' && id.length > 0, + ); + if (cleanIds.length === 0) return []; try { - const idList = sql.join(pageIds.map((id) => sql.lit(id))); + const idList = sql.join(cleanIds.map((id) => sql.lit(id))); const spaceFilter = spaceId ? sql`AND sp.id = ${spaceId}` : sql``; const rows = await sql`