diff --git a/apps/client/src/features/page-details/components/backlinks-list.tsx b/apps/client/src/features/page-details/components/backlinks-list.tsx index a0e1a4aa..90547f2c 100644 --- a/apps/client/src/features/page-details/components/backlinks-list.tsx +++ b/apps/client/src/features/page-details/components/backlinks-list.tsx @@ -71,9 +71,9 @@ export function BacklinksList({ key={item.id} component={Link} to={ - item.spaceSlug + item.space?.slug ? buildPageUrl( - item.spaceSlug, + item.space.slug, item.slugId, item.title ?? undefined, ) @@ -88,9 +88,9 @@ export function BacklinksList({ {item.title || t("Untitled")} - {item.spaceName && ( + {item.space?.name && ( - {item.spaceName} + {item.space.name} )} diff --git a/apps/client/src/features/page-details/types/backlink.types.ts b/apps/client/src/features/page-details/types/backlink.types.ts index 2fb53218..f45874e5 100644 --- a/apps/client/src/features/page-details/types/backlink.types.ts +++ b/apps/client/src/features/page-details/types/backlink.types.ts @@ -11,8 +11,7 @@ export interface IBacklinkPageItem { title: string | null; icon: string | null; spaceId: string; - spaceSlug: string | null; - spaceName: string | null; + space: { id: string; slug: string; name: string } | null; updatedAt: string; } diff --git a/apps/server/src/database/repos/backlink/backlink.repo.ts b/apps/server/src/database/repos/backlink/backlink.repo.ts index 9c23e554..2071303e 100644 --- a/apps/server/src/database/repos/backlink/backlink.repo.ts +++ b/apps/server/src/database/repos/backlink/backlink.repo.ts @@ -13,6 +13,7 @@ import { emptyCursorPaginationResult, } from '@docmost/db/pagination/cursor-pagination'; import { SpaceMemberRepo } from '@docmost/db/repos/space/space-member.repo'; +import { jsonObjectFrom } from 'kysely/helpers/postgres'; @Injectable() export class BacklinkRepo { @@ -121,23 +122,25 @@ export class BacklinkRepo { icon: string | null; spaceId: string; updatedAt: Date; - spaceSlug: string | null; - spaceName: string | null; + space: { id: string; slug: string; name: string } | null; }>(pagination.limit); } const query = this.db .selectFrom('pages') - .leftJoin('spaces', 'spaces.id', 'pages.spaceId') - .select([ + .select((eb) => [ 'pages.id', 'pages.slugId', 'pages.title', 'pages.icon', 'pages.spaceId', 'pages.updatedAt', - 'spaces.slug as spaceSlug', - 'spaces.name as spaceName', + jsonObjectFrom( + eb + .selectFrom('spaces') + .select(['spaces.id', 'spaces.slug', 'spaces.name']) + .whereRef('spaces.id', '=', 'pages.spaceId'), + ).as('space'), ]) .where('pages.deletedAt', 'is', null) .where('pages.id', 'in', pageIds);