import { directus } from '@/plugins/axios/'; import { IParamsDirectus } from '../baseTypes'; import { IHelpCenter } from '@/database/help-center/helpCenter.types'; import { POST_STATUS } from '@/utils/constants'; const postPreviewFields = 'slug,title,category.*'; async function getPost({ slug, categorySlug, }: IHelpCenter.GetPostsParams): Promise { const params: IParamsDirectus = { fields: '*.*.*.*', filter: { status: POST_STATUS.published, }, }; if (slug) params.filter = { ...params.filter, slug, }; if (categorySlug) params.filter = { ...params.filter, ...{ category: { slug: categorySlug, }, }, }; const { data: posts } = await directus.get( 'help-center-posts', { params, }, ); const [post] = posts.data; return post; } async function getPostsPreview({ categorySlug, limit, }: IHelpCenter.GetPostsParams): Promise { const params: IParamsDirectus = { fields: postPreviewFields, filter: { status: POST_STATUS.published, }, }; if (limit) params.limit = limit; if (categorySlug) params.filter = { ...params.filter, ...{ category: { slug: categorySlug, }, }, }; const { data: posts } = await directus.get( 'help-center-posts', { params, }, ); return posts.data; } async function getCategories(): Promise { const params: IParamsDirectus = { fields: '*.*', }; const { data: categories } = await directus.get( 'help-center-categories', { params }, ); return categories.data; } async function getCategoryBySlug(slug: string): Promise { const params: IParamsDirectus = { fields: '*.*', filter: { slug, }, }; const { data: categories } = await directus.get( 'help-center-categories', { params }, ); const [category] = categories.data; return category; } export const HelpCenterGateway = { getCategories, getCategoryBySlug, getPost, getPostsPreview, };