import { Ref, ref } from 'vue'; import { defineStore } from 'pinia'; import { CareersGateway } from '@/database/careers/careers.gateway'; import { CareersInterface } from '@/database/careers/careers.types'; interface State { post: Ref; postsPreview: Ref; totalPostsCount: Ref; } export const useCareersStore = defineStore('careers', () => { const state: State = { post: ref({} as CareersInterface.Post), postsPreview: ref([]), totalPostsCount: ref(0), }; const actions = { async getPost(slug: string) { const isEmpty = !Object.keys(state.post.value).length; state.post.value = await CareersGateway.getPost(slug); }, async getPostsPreview() { if (!state.postsPreview.value.length) { state.postsPreview.value = await CareersGateway.getPostsPreview(); } }, async getTotalPostsCount() { state.totalPostsCount.value = await CareersGateway.getPostsCount(); }, }; return { ...state, ...actions, }; });