diff --git a/app/composables/directus/index.ts b/app/composables/directus/index.ts index 93a664e..f30f5e1 100644 --- a/app/composables/directus/index.ts +++ b/app/composables/directus/index.ts @@ -2,3 +2,5 @@ export * from './useDirectusImage'; export * from './useDirectusFiles'; export * from './useProductList'; export * from './useProduct'; +export * from './useSolutionList'; +export * from './useSolution'; diff --git a/app/composables/directus/useSolution.ts b/app/composables/directus/useSolution.ts new file mode 100644 index 0000000..78b77de --- /dev/null +++ b/app/composables/directus/useSolution.ts @@ -0,0 +1,28 @@ +import { readItem } from '@directus/sdk'; + +export const useSolution = (id: string) => { + const { $directus } = useNuxtApp(); + const { getDirectusLocale } = useLocalizations(); + const locale = getDirectusLocale(); + + return useAsyncData(`solution-${id}-${locale}`, async () => { + return await $directus.request( + readItem('solutions', id, { + fields: [ + 'id', + { + translations: ['*'], + }, + 'create_at', + ], + deep: { + translations: { + _filter: { + languages_code: { _eq: locale }, + }, + }, + }, + }) + ); + }); +}; diff --git a/app/composables/directus/useSolutionList.ts b/app/composables/directus/useSolutionList.ts new file mode 100644 index 0000000..030e272 --- /dev/null +++ b/app/composables/directus/useSolutionList.ts @@ -0,0 +1,38 @@ +import { readItems } from '@directus/sdk'; + +export const useSolutionList = () => { + const { $directus } = useNuxtApp(); + const { getDirectusLocale } = useLocalizations(); + const locale = getDirectusLocale(); + + return useAsyncData(`solution-list-${locale}`, async () => { + return await $directus.request( + readItems('solutions', { + fields: [ + 'id', + 'cover', + { + type: ['id', { translations: ['id', 'name'] }], + }, + { + translations: ['id', 'title', 'summary'], + }, + ], + deep: { + type: { + translations: { + _filter: { + languages_code: { _eq: locale }, + }, + }, + }, + translations: { + _filter: { + languages_code: { _eq: locale }, + }, + }, + }, + }) + ); + }); +};