diff --git a/packages/api/src/elastic/groups.ts b/packages/api/src/elastic/groups.ts new file mode 100644 index 000000000..d87d5f086 --- /dev/null +++ b/packages/api/src/elastic/groups.ts @@ -0,0 +1,37 @@ +import { Group, Page, PageContext } from './types' +import { createPage, updatePage } from './pages' + +export const recommendPage = async ( + ctx: PageContext, + page: Page, + userId: string, + group: Group, + existingPage?: Page +): Promise => { + try { + if (existingPage) { + // update recommendedBy in the existing page + const recommendedBy = (existingPage.recommendedBy || []).concat(group) + + await updatePage( + existingPage.id, + { + recommendedBy, + }, + ctx + ) + return existingPage.id + } + + // create a new page + const newPage = { + ...page, + recommendedBy: [group], + userId, + } + + return createPage(newPage, ctx) + } catch (err) { + console.error(err) + } +}