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);