feat: add file routing option

This commit is contained in:
wobsoriano
2022-11-05 19:22:19 -07:00
parent d9c8f877d3
commit 750783e860
33 changed files with 589 additions and 348 deletions

View File

@@ -1,4 +1,4 @@
// https://v3.nuxtjs.org/api/configuration/nuxt.config
export default defineNuxtConfig({
modules: ['trpc-nuxt/module']
modules: ['trpc-nuxt']
})

View File

@@ -5,8 +5,7 @@
"build": "nuxt build",
"dev": "nuxt dev",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare"
"preview": "nuxt preview"
},
"dependencies": {
"@trpc/client": "10.0.0-rc.4",

View File

@@ -1,7 +1,7 @@
import { httpBatchLink, loggerLink } from '@trpc/client'
import { createTRPCNuxtProxyClient } from 'trpc-nuxt/client'
import superjson from 'superjson'
import type { AppRouter } from '~~/server/trpc/routers'
import type { AppRouter } from '#build/trpc/handler'
export default defineNuxtPlugin(() => {
const client = createTRPCNuxtProxyClient<AppRouter>({

View File

@@ -1,23 +0,0 @@
import { createNuxtApiHandler } from 'trpc-nuxt'
import { appRouter } from '@/server/trpc/routers'
import { createContext } from '@/server/trpc/context'
export default createNuxtApiHandler({
router: appRouter,
/**
* @link https://trpc.io/docs/context
*/
createContext,
onError ({ error }) {
if (error.code === 'INTERNAL_SERVER_ERROR') {
// send to bug reporting
console.error('Something went wrong', error)
}
}
/**
* @link https://trpc.io/docs/caching#api-response-caching
*/
// responseMeta() {
// // ...
// },
})

View File

@@ -1,10 +0,0 @@
import { router } from '../trpc'
import { todoRouter } from './todo'
import { userRouter } from './user'
export const appRouter = router({
todo: todoRouter,
user: userRouter
})
export type AppRouter = typeof appRouter

View File

@@ -1,5 +1,5 @@
import { z } from 'zod'
import { publicProcedure, router } from '../trpc'
import { publicProcedure, router } from '#trpc/init'
const baseURL = 'https://jsonplaceholder.typicode.com'
@@ -12,7 +12,7 @@ const TodoShape = z.object({
export type Todo = z.infer<typeof TodoShape>
export const todoRouter = router({
export default router({
getTodos: publicProcedure
.query(() => {
return $fetch<Todo[]>(`${baseURL}/todos`)

View File

@@ -1,5 +1,5 @@
import { z } from 'zod'
import { publicProcedure, router } from '../trpc'
import { publicProcedure, router } from '#trpc/init'
const baseURL = 'https://jsonplaceholder.typicode.com'
@@ -12,7 +12,7 @@ const UserShape = z.object({
export type User = z.infer<typeof UserShape>
export const userRouter = router({
export default router({
getUsers: publicProcedure
.query(() => {
return $fetch<User[]>(`${baseURL}/users`)

View File

@@ -1,43 +0,0 @@
import { initTRPC } from '@trpc/server'
import superjson from 'superjson'
import { ZodError } from 'zod'
import type { Context } from './context'
const t = initTRPC.context<Context>().create({
transformer: superjson,
errorFormatter ({ shape, error }) {
return {
...shape,
data: {
...shape.data,
zodError:
error.code === 'BAD_REQUEST' &&
error.cause instanceof ZodError
? error.cause!.flatten()
: null
}
}
}
})
/**
* Create a router
* @see https://trpc.io/docs/v10/router
*/
export const router = t.router
/**
* Create an unprotected procedure
* @see https://trpc.io/docs/v10/procedures
**/
export const publicProcedure = t.procedure
/**
* @see https://trpc.io/docs/v10/middlewares
*/
export const middleware = t.middleware
/**
* @see https://trpc.io/docs/v10/merging-routers
*/
export const mergeRouters = t.mergeRouters