From 87ed4534253f493226f8f144de6c65edf1a0e0f1 Mon Sep 17 00:00:00 2001 From: Robert Soriano Date: Thu, 19 May 2022 10:05:17 -0700 Subject: [PATCH] update playground --- playground/app.vue | 17 +----- playground/pages/index.vue | 34 ++++++++++++ playground/pages/todo/[id].vue | 18 +++++++ playground/server/trpc/index.ts | 96 +++++++-------------------------- 4 files changed, 73 insertions(+), 92 deletions(-) create mode 100644 playground/pages/index.vue create mode 100644 playground/pages/todo/[id].vue diff --git a/playground/app.vue b/playground/app.vue index ea60e47..2b1be09 100644 --- a/playground/app.vue +++ b/playground/app.vue @@ -1,18 +1,5 @@ - - diff --git a/playground/pages/index.vue b/playground/pages/index.vue new file mode 100644 index 0000000..abdede6 --- /dev/null +++ b/playground/pages/index.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/playground/pages/todo/[id].vue b/playground/pages/todo/[id].vue new file mode 100644 index 0000000..6694229 --- /dev/null +++ b/playground/pages/todo/[id].vue @@ -0,0 +1,18 @@ + + + diff --git a/playground/server/trpc/index.ts b/playground/server/trpc/index.ts index dead09a..3119beb 100644 --- a/playground/server/trpc/index.ts +++ b/playground/server/trpc/index.ts @@ -1,82 +1,24 @@ -// ~/server/trpc/index.ts -import { ZodError, z } from 'zod' import * as trpc from '@trpc/server' -import type { inferAsyncReturnType } from '@trpc/server' -import type { CompatibilityEvent } from 'h3' -import type { ResponseMetaFnPayload } from 'trpc-nuxt/api' -// import superjson from 'superjson' +import { z } from 'zod' -const fakeUsers = [ - { id: 1, username: 'jcena' }, - { id: 2, username: 'dbatista' }, - { id: 3, username: 'jbiden' }, -] - -export const router = trpc - .router>() - .formatError(({ shape, error }) => { - return { - ...shape, - data: { - ...shape.data, - zodError: - error.code === 'BAD_REQUEST' - && error.cause instanceof ZodError - ? error.cause.flatten() - : null, - }, - } - }) - .query('getUsers', { - resolve() { - return fakeUsers - }, - }) - .query('getUser', { - // validate input with Zod - input: z.object({ - username: z.string().min(5), - }), - resolve(req) { - return fakeUsers.find(i => i.username === req.input.username) ?? null - }, - }) - .mutation('createUser', { - input: z.object({ username: z.string().min(5) }), - resolve(req) { - const newUser = { - id: fakeUsers.length + 1, - username: req.input.username, - } - fakeUsers.push(newUser) - return newUser - }, - }) - -export const createContext = (event: CompatibilityEvent) => { - event.res.setHeader('x-ssr', 1) - return {} +export interface Todo { + userId: number + id: number + title: string + completed: boolean } -export const responseMeta = (opts: ResponseMetaFnPayload) => { - // const nuxtApp = useNuxtApp() - // const client = useClient() - // console.log(opts) +const baseURL = 'https://jsonplaceholder.typicode.com' - // if (nuxtApp.nuxtState) { - // nuxtApp.nuxtState.trpc = client.runtime.transformer.serialize({ - // ctx: opts.ctx, - // errors: opts.errors, - // }) - // } - // else { - // nuxtApp.nuxtState = { - // trpc: client.runtime.transformer.serialize({ - // ctx: opts.ctx, - // errors: opts.errors, - // }), - // } - // } - - return {} -} +export const router = trpc.router() + .query('getTodos', { + async resolve() { + return await $fetch(`${baseURL}/todos`) + }, + }) + .query('getTodo', { + input: z.number(), + async resolve(req) { + return await $fetch(`${baseURL}/todos/${req.input}`) + }, + })