score library item after saved

This commit is contained in:
Hongbo Wu 2024-05-27 11:45:51 +08:00
parent 3cb93283b0
commit 41b9fef316
3 changed files with 34 additions and 0 deletions

View file

@ -5,6 +5,7 @@ import { env } from './env'
import { ReportType } from './generated/graphql'
import {
enqueueProcessYouTubeVideo,
enqueueScoreJob,
enqueueTriggerRuleJob,
} from './utils/createTask'
import { logger } from './utils/logger'
@ -74,6 +75,11 @@ export const createPubSubClient = (): PubsubClient => {
libraryItemId: data.id,
})
}
await enqueueScoreJob({
userId,
libraryItemId: data.id,
})
}
},
entityUpdated: async <T extends EntityEvent>(

View file

@ -48,6 +48,10 @@ import {
import { refreshAllFeeds } from './jobs/rss/refreshAllFeeds'
import { refreshFeed } from './jobs/rss/refreshFeed'
import { savePageJob } from './jobs/save_page'
import {
scoreLibraryItem,
SCORE_LIBRARY_ITEM_JOB,
} from './jobs/score_library_item'
import {
syncReadPositionsJob,
SYNC_READ_POSITIONS_JOB_NAME,
@ -191,6 +195,8 @@ export const createWorker = (connection: ConnectionOptions) =>
return uploadContentJob(job.data)
case UPDATE_JUST_READ_FEED_JOB:
return updateJustReadFeed(job.data)
case SCORE_LIBRARY_ITEM_JOB:
return scoreLibraryItem(job.data)
default:
logger.warning(`[queue-processor] unhandled job: ${job.name}`)
}

View file

@ -45,6 +45,10 @@ import {
REFRESH_ALL_FEEDS_JOB_NAME,
REFRESH_FEED_JOB_NAME,
} from '../jobs/rss/refreshAllFeeds'
import {
ScoreLibraryItemJobData,
SCORE_LIBRARY_ITEM_JOB,
} from '../jobs/score_library_item'
import { SYNC_READ_POSITIONS_JOB_NAME } from '../jobs/sync_read_positions'
import { TriggerRuleJobData, TRIGGER_RULE_JOB_NAME } from '../jobs/trigger_rule'
import {
@ -1006,4 +1010,22 @@ export const enqueueUpdateJustReadFeed = async (
})
}
export const updateScoreJobId = (userId: string) =>
`${SCORE_LIBRARY_ITEM_JOB}_${userId}_${JOB_VERSION}`
export const enqueueScoreJob = async (data: ScoreLibraryItemJobData) => {
const queue = await getBackendQueue()
if (!queue) {
return undefined
}
return queue.add(SCORE_LIBRARY_ITEM_JOB, data, {
jobId: updateScoreJobId(data.userId),
removeOnComplete: true,
removeOnFail: true,
priority: getJobPriority(SCORE_LIBRARY_ITEM_JOB),
attempts: 3,
})
}
export default createHttpTaskWithToken