mirror of
https://github.com/ArthurDanjou/trpc-nuxt.git
synced 2026-01-14 12:14:40 +01:00
35 lines
794 B
TypeScript
35 lines
794 B
TypeScript
import { z } from 'zod'
|
|
import { publicProcedure, router } from '../trpc'
|
|
import { $fetch } from 'ofetch'
|
|
|
|
const baseURL = 'https://jsonplaceholder.typicode.com'
|
|
|
|
const TodoShape = z.object({
|
|
userId: z.number(),
|
|
id: z.number(),
|
|
title: z.string(),
|
|
completed: z.boolean()
|
|
})
|
|
|
|
export type Todo = z.infer<typeof TodoShape>
|
|
|
|
export const todoRouter = router({
|
|
getTodos: publicProcedure
|
|
.query(() => {
|
|
return $fetch<Todo[]>(`${baseURL}/todos`)
|
|
}),
|
|
getTodo: publicProcedure
|
|
.input(z.number())
|
|
.query((req) => {
|
|
return $fetch<Todo>(`${baseURL}/todos/${req.input}`)
|
|
}),
|
|
addTodo: publicProcedure
|
|
.input(TodoShape)
|
|
.mutation((req) => {
|
|
return $fetch<Todo>(`${baseURL}/todos`, {
|
|
method: 'POST',
|
|
body: req.input
|
|
})
|
|
})
|
|
})
|