mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
Add recommendation cloud task
This commit is contained in:
parent
a7d0525d2e
commit
5fd137d23e
2 changed files with 43 additions and 4 deletions
|
|
@ -62,9 +62,10 @@ interface BackendEnv {
|
|||
name: string
|
||||
contentFetchUrl: string
|
||||
contentFetchGCFUrl: string
|
||||
reminderTaskHanderUrl: string
|
||||
reminderTaskHandlerUrl: string
|
||||
integrationTaskHandlerUrl: string
|
||||
textToSpeechTaskHandlerUrl: string
|
||||
recommendationTaskHandlerUrl: string
|
||||
}
|
||||
fileUpload: {
|
||||
gcsUploadBucket: string
|
||||
|
|
@ -152,6 +153,7 @@ const nullableEnvVars = [
|
|||
'AZURE_SPEECH_KEY',
|
||||
'AZURE_SPEECH_REGION',
|
||||
'GCP_LOCATION',
|
||||
'RECOMMENDATION_TASK_HANDLER_URL',
|
||||
] // Allow some vars to be null/empty
|
||||
|
||||
/* If not in GAE and Prod/QA/Demo env (f.e. on localhost/dev env), allow following env vars to be null */
|
||||
|
|
@ -234,9 +236,10 @@ export function getEnv(): BackendEnv {
|
|||
name: parse('PUPPETEER_QUEUE_NAME'),
|
||||
contentFetchUrl: parse('CONTENT_FETCH_URL'),
|
||||
contentFetchGCFUrl: parse('CONTENT_FETCH_GCF_URL'),
|
||||
reminderTaskHanderUrl: parse('REMINDER_TASK_HANDLER_URL'),
|
||||
reminderTaskHandlerUrl: parse('REMINDER_TASK_HANDLER_URL'),
|
||||
integrationTaskHandlerUrl: parse('INTEGRATION_TASK_HANDLER_URL'),
|
||||
textToSpeechTaskHandlerUrl: parse('TEXT_TO_SPEECH_TASK_HANDLER_URL'),
|
||||
recommendationTaskHandlerUrl: parse('RECOMMENDATION_TASK_HANDLER_URL'),
|
||||
}
|
||||
const imageProxy = {
|
||||
url: parse('IMAGE_PROXY_URL'),
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import { nanoid } from 'nanoid'
|
|||
import { google } from '@google-cloud/tasks/build/protos/protos'
|
||||
import { IntegrationType } from '../entity/integration'
|
||||
import { signFeatureToken } from '../services/features'
|
||||
import { Group } from '../elastic/types'
|
||||
import View = google.cloud.tasks.v2.Task.View
|
||||
|
||||
const logger = buildLogger('app.dispatch')
|
||||
|
|
@ -95,7 +96,7 @@ export const createAppEngineTask = async ({
|
|||
project,
|
||||
queue = env.queue.name,
|
||||
location = env.queue.location,
|
||||
taskHandlerUrl = env.queue.reminderTaskHanderUrl,
|
||||
taskHandlerUrl = env.queue.reminderTaskHandlerUrl,
|
||||
payload,
|
||||
priority = 'high',
|
||||
scheduleTime,
|
||||
|
|
@ -278,7 +279,7 @@ export const enqueueReminder = async (
|
|||
project: GOOGLE_CLOUD_PROJECT,
|
||||
payload,
|
||||
scheduleTime,
|
||||
taskHandlerUrl: env.queue.reminderTaskHanderUrl,
|
||||
taskHandlerUrl: env.queue.reminderTaskHandlerUrl,
|
||||
})
|
||||
|
||||
if (!createdTasks || !createdTasks[0].name) {
|
||||
|
|
@ -405,4 +406,39 @@ export const enqueueTextToSpeech = async ({
|
|||
return createdTasks[0].name
|
||||
}
|
||||
|
||||
export const enqueueRecommendation = async (
|
||||
recommendedUserId: string,
|
||||
recommendedPageId: string,
|
||||
userId: string,
|
||||
group: Group
|
||||
): Promise<string> => {
|
||||
const { GOOGLE_CLOUD_PROJECT } = process.env
|
||||
const payload = {
|
||||
userId,
|
||||
recommendedUserId,
|
||||
recommendedPageId,
|
||||
group,
|
||||
}
|
||||
|
||||
// If there is no Google Cloud Project Id exposed, it means that we are in local environment
|
||||
if (env.dev.isLocal || !GOOGLE_CLOUD_PROJECT) {
|
||||
return nanoid()
|
||||
}
|
||||
|
||||
const createdTasks = await createHttpTaskWithToken({
|
||||
project: GOOGLE_CLOUD_PROJECT,
|
||||
payload,
|
||||
taskHandlerUrl: env.queue.recommendationTaskHandlerUrl,
|
||||
})
|
||||
|
||||
if (!createdTasks || !createdTasks[0].name) {
|
||||
logger.error(`Unable to get the name of the task`, {
|
||||
payload,
|
||||
createdTasks,
|
||||
})
|
||||
throw new CreateTaskError(`Unable to get the name of the task`)
|
||||
}
|
||||
return createdTasks[0].name
|
||||
}
|
||||
|
||||
export default createHttpTaskWithToken
|
||||
|
|
|
|||
Loading…
Reference in a new issue