Skip to content

Dar de alta un servico en verticales

Este es un ejemplo de cómo dar de alta un servicio nuevo para todas las verticales

ficheros que hay que tocar o crear

  • Directoryinterfaces
    • Directoryapi
      • Directoryshared
        • experts.ts interface para tipar los datos
    • verticals.ts Se da de alta la funcion del fichero que has creado arriba Ej:getExperts
    • Directoryservices
      • Directoryshared
        • experts.ts Aqui es dónde se va a hacer la logica de la petición a la API
    • Directoryconstants
      • Directoryverticals
        • hospitals.ts En cada vertical hay que exportar la funcion para poder usarla
        • Oncology.ts En cada vertical hay que exportar la funcion para poder usarla
        • traumatology.ts En cada vertical hay que exportar la funcion para poder usarla

Ejemplo para llamar a un servicio

export const getExpertsBySlug = async (lang: LanguageCode, slug: string) => {
const { find } = useStrapi();
const { data: response } =
(await find) <
Expert >
("experts",
{
locale: lang,
filters: { slug },
fields: ["id", "name", "cv", "slug", "order", "vertical"],
populate: {
imageExpert: {
fields: ["id", "url", "alternativeText"],
},
multiContents: {
on: {
"contents.products": {
populate: {
products: {
populate: {
product_image: { fields: ["id", "url", "alternativeText"] },
price: { populate: "*" },
university_image: {
fields: ["id", "url", "alternativeText", "mime"],
},
},
},
},
},
"contents.pdf": {
populate: {
file: {
fields: ["id", "url", "name", "mime", "alternativeText"],
},
cover: { fields: ["id", "url"] },
},
},
"contents.video": {
populate: {
video: {
fields: ["id", "url", "name", "mime", "alternativeText"],
},
cover: { fields: ["id", "url"] },
},
},
},
},
},
});
return response[0];
};

¿Qué hacer si necesito pasar mas parámetros?

Necesitamos tocar el fichero types/services.ts ahi es dónde estan dadas de alta las interfaces que van a usar los servicios y los parametros que van a recibir. En estos momentos hay uno que recibe el lang y otra para recibir el lang y un string

export type FunctionService<T> = (
lang: LanguageCode
) => Promise<{ response: T | T[] }>;
export type ParamsService<T> = (
lang: LanguageCode,
param: string
) => Promise<T | null>;

Para utilizar en el front

<script setup lang="ts">
import type { Expert } from '@/interfaces/api/shared/experts'
// Obtener los datos de los expertos
const experts = await useServices<Expert[]>('experts')
</script>
<template>
{{ experts }}
</template>