import { z } from 'zod' import { categoryResponseSchema } from '~/apis/common/get-categories' import { tagResponseSchema } from '~/apis/common/get-tags' import { HttpServer, type THttpServer } from '~/libs/http-server' const authorSchema = z.object({ id: z.string(), name: z.string(), profile_picture: z.string(), }) const newsResponseSchema = z.object({ id: z.string(), title: z.string(), content: z.string(), categories: z.array(categoryResponseSchema), tags: z.array(tagResponseSchema), is_premium: z.boolean(), slug: z.string(), featured_image: z.string(), author_id: z.string(), live_at: z.string(), created_at: z.string(), updated_at: z.string(), author: authorSchema, }) const dataResponseSchema = z.object({ data: z.array(newsResponseSchema), }) export type TNewsResponse = z.infer export const getNews = async (parameters: THttpServer) => { try { const { data } = await HttpServer(parameters).get(`/api/news`) return dataResponseSchema.parse(data) } catch (error) { // eslint-disable-next-line unicorn/no-useless-promise-resolve-reject return Promise.reject(error) } }