import { BACKEND_URL } from "@/shared/lib/constants" import { z } from "zod" const politicianVoteSchema = z.object({ vote: z.string(), pollId: z.number(), pollLabel: z.string(), pollDate: z.string().nullable(), pollUrl: z.string().nullable(), topics: z.array(z.string()), }) const politicianProfileSchema = z.object({ id: z.number(), label: z.string(), party: z.string().nullable(), fraction: z.string().nullable(), constituency: z.string().nullable(), mandateWon: z.string().nullable(), votes: z.array(politicianVoteSchema), }) export type PoliticianProfile = z.infer export type PoliticianVote = z.infer export async function fetchPoliticianProfile( id: number, ): Promise { const res = await fetch(`${BACKEND_URL}/politicians/${id}`) if (!res.ok) { throw new Error(`Failed to fetch politician profile: ${res.status}`) } const json = await res.json() return politicianProfileSchema.parse(json) }