fix: exclude content from history listing

This commit is contained in:
Philipinho
2026-02-02 13:54:21 +00:00
parent 9981d15794
commit 02447c1c48
4 changed files with 37 additions and 10 deletions
@@ -32,7 +32,9 @@ export class HistoryListener {
return; return;
} }
const lastHistory = await this.pageHistoryRepo.findPageLastHistory(page.id); const lastHistory = await this.pageHistoryRepo.findPageLastHistory(page.id, {
includeContent: true,
});
if ( if (
!lastHistory || !lastHistory ||
@@ -215,7 +215,6 @@ export class PageController {
} }
} }
// TODO: scope to workspaces
@HttpCode(HttpStatus.OK) @HttpCode(HttpStatus.OK)
@Post('/history') @Post('/history')
async getPageHistory( async getPageHistory(
@@ -9,7 +9,9 @@ export class PageHistoryService {
constructor(private pageHistoryRepo: PageHistoryRepo) {} constructor(private pageHistoryRepo: PageHistoryRepo) {}
async findById(historyId: string): Promise<PageHistory> { async findById(historyId: string): Promise<PageHistory> {
return await this.pageHistoryRepo.findById(historyId); return await this.pageHistoryRepo.findById(historyId, {
includeContent: true,
});
} }
async findHistoryByPageId( async findHistoryByPageId(
@@ -17,15 +17,32 @@ import { DB } from '@docmost/db/types/db';
export class PageHistoryRepo { export class PageHistoryRepo {
constructor(@InjectKysely() private readonly db: KyselyDB) {} constructor(@InjectKysely() private readonly db: KyselyDB) {}
private baseFields: Array<keyof PageHistory> = [
'id',
'pageId',
'slugId',
'title',
'icon',
'coverPhoto',
'lastUpdatedById',
'spaceId',
'workspaceId',
'createdAt',
];
async findById( async findById(
pageHistoryId: string, pageHistoryId: string,
trx?: KyselyTransaction, opts?: {
includeContent?: boolean;
trx?: KyselyTransaction;
},
): Promise<PageHistory> { ): Promise<PageHistory> {
const db = dbOrTx(this.db, trx); const db = dbOrTx(this.db, opts?.trx);
return await db return await db
.selectFrom('pageHistory') .selectFrom('pageHistory')
.selectAll() .select(this.baseFields)
.$if(opts?.includeContent, (qb) => qb.select('content'))
.select((eb) => this.withLastUpdatedBy(eb)) .select((eb) => this.withLastUpdatedBy(eb))
.where('id', '=', pageHistoryId) .where('id', '=', pageHistoryId)
.executeTakeFirst(); .executeTakeFirst();
@@ -63,7 +80,7 @@ export class PageHistoryRepo {
async findPageHistoryByPageId(pageId: string, pagination: PaginationOptions) { async findPageHistoryByPageId(pageId: string, pagination: PaginationOptions) {
const query = this.db const query = this.db
.selectFrom('pageHistory') .selectFrom('pageHistory')
.selectAll() .select(this.baseFields)
.select((eb) => this.withLastUpdatedBy(eb)) .select((eb) => this.withLastUpdatedBy(eb))
.where('pageId', '=', pageId); .where('pageId', '=', pageId);
@@ -76,12 +93,19 @@ export class PageHistoryRepo {
}); });
} }
async findPageLastHistory(pageId: string, trx?: KyselyTransaction) { async findPageLastHistory(
const db = dbOrTx(this.db, trx); pageId: string,
opts?: {
includeContent?: boolean;
trx?: KyselyTransaction;
},
) {
const db = dbOrTx(this.db, opts?.trx);
return await db return await db
.selectFrom('pageHistory') .selectFrom('pageHistory')
.selectAll() .select(this.baseFields)
.$if(opts?.includeContent, (qb) => qb.select('content'))
.where('pageId', '=', pageId) .where('pageId', '=', pageId)
.limit(1) .limit(1)
.orderBy('createdAt', 'desc') .orderBy('createdAt', 'desc')