reuseable$

API for the reuseable$ function

This function will be used to create a reuseable procedures, it will take up middlewares and then will use this middlewares for all of the created queries / mutations under it.

Usage

import { middleware$, reuseable$ } from '@prpc/solid'

const reuseMw = middleware$(() => {
  return {
    reuse: 'reuse' as const,
  }
})

export const myProcedure = reuseable$(reuseMw)

export const testReuseQuery = myProcedure.query$({
  queryFn: ({ ctx$ }) => {
    return `Hello ${ctx$.reuse}`
  },
  key: 'testReuseQuery',
})

This can also be done from different files

// file1.ts
import { middleware$, reuseable$ } from '@prpc/solid'

const reuseMw = middleware$(() => {
  return {
    reuse: 'reuse' as const,
  }
})

export const myProcedure = reuseable$(reuseMw)
// file2.ts
import { myProcedure } from './file1'

export const testReuseQuery = myProcedure.query$({
  queryFn: ({ ctx$ }) => {
    return `Hello ${ctx$.reuse}`
  },
  key: 'testReuseQuery',
})
// file3.ts
import { myProcedure } from './file1'
import { z } from 'zod'

export const testReuseMutation = myProcedure.mutation$({
  mutationFn: ({ payload, ctx$ }) => {
    return `${payload.a - payload.b}: ${ctx$.reuse}`
  },
  key: 'testReuseMutation',
  schema: z.object({
    a: z.number(),
    b: z.number(),
  }),
})