perf: reduce number of column returned by search query
This commit is contained in:
@ -58,7 +58,7 @@ export class LibraryItem {
|
||||
@Column('text')
|
||||
originalUrl!: string
|
||||
|
||||
@Column('text', { nullable: true })
|
||||
@Column('text', { nullable: true, select: false })
|
||||
downloadUrl?: string | null
|
||||
|
||||
@Column('text')
|
||||
@ -138,10 +138,6 @@ export class LibraryItem {
|
||||
@Column('text')
|
||||
readableContent!: string
|
||||
|
||||
// NOT SUPPORTED IN TYPEORM
|
||||
// @Column('vector', { nullable: true })
|
||||
// embedding?: number[]
|
||||
|
||||
@Column('text', { nullable: true })
|
||||
textContentHash?: string | null
|
||||
|
||||
@ -187,13 +183,13 @@ export class LibraryItem {
|
||||
@Column('text', { nullable: true })
|
||||
recommenderNames?: string[] | null
|
||||
|
||||
@Column('jsonb')
|
||||
@Column('jsonb', { select: false })
|
||||
links?: any | null
|
||||
|
||||
@Column('text')
|
||||
feedContent?: string | null
|
||||
|
||||
@Column('text')
|
||||
@Column('text', { select: false })
|
||||
previewContentType?: string | null
|
||||
|
||||
@Column('text')
|
||||
@ -205,18 +201,18 @@ export class LibraryItem {
|
||||
@Column('text')
|
||||
highlightAnnotations?: string[]
|
||||
|
||||
@Column('timestamptz')
|
||||
@Column('timestamptz', { select: false })
|
||||
seenAt?: Date
|
||||
|
||||
@Column('ltree')
|
||||
@Column('ltree', { select: false })
|
||||
topic?: string
|
||||
|
||||
@Column('timestamptz')
|
||||
@Column('timestamptz', { select: false })
|
||||
digestedAt?: Date
|
||||
|
||||
@Column('float')
|
||||
@Column('float', { select: false })
|
||||
score?: number
|
||||
|
||||
@Column('text')
|
||||
@Column('text', { select: false })
|
||||
previewContent?: string
|
||||
}
|
||||
|
||||
@ -4,9 +4,7 @@ import { RuleEventType } from './entity/rule'
|
||||
import { env } from './env'
|
||||
import { ReportType } from './generated/graphql'
|
||||
import {
|
||||
enqueueGeneratePreviewContentJob,
|
||||
enqueueProcessYouTubeVideo,
|
||||
enqueueScoreJob,
|
||||
enqueueThumbnailJob,
|
||||
enqueueTriggerRuleJob,
|
||||
} from './utils/createTask'
|
||||
@ -94,25 +92,6 @@ export const createPubSubClient = (): PubsubClient => {
|
||||
logger.error('Failed to enqueue thumbnail job', e)
|
||||
}
|
||||
}
|
||||
|
||||
const hasPreviewContent = (
|
||||
data: any
|
||||
): data is { previewContent: string | null } => {
|
||||
return 'previewContent' in data
|
||||
}
|
||||
|
||||
// generate preview content if it is less than 180 characters
|
||||
if (
|
||||
!hasPreviewContent(data) ||
|
||||
(data.previewContent && data.previewContent.length < 180)
|
||||
) {
|
||||
try {
|
||||
const job = await enqueueGeneratePreviewContentJob(data.id, userId)
|
||||
logger.info('Generate preview job created', { id: job?.id })
|
||||
} catch (e) {
|
||||
logger.error('Failed to enqueue generate preview job', e)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
entityUpdated: async <T extends EntityEvent>(
|
||||
|
||||
@ -642,7 +642,10 @@ export const createSearchQueryBuilder = (
|
||||
// exclude content if not requested
|
||||
const selects: Select[] = getColumns(libraryItemRepository)
|
||||
.filter(
|
||||
(select) => args.includeContent || select !== 'readableContent' //
|
||||
(select) =>
|
||||
args.includeContent ||
|
||||
['readableContent', 'feedContent', 'previewContent'].indexOf(select) ===
|
||||
-1
|
||||
)
|
||||
.map((column) => ({ column: `library_item.${column}` }))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user