# prism-prisma-trpc-generator

> Prisma 2+ generator to emit fully implemented tRPC routers

Latest version **0.7.0** (published 2022-12-08) · MIT license · 0 weekly downloads

## Install

```sh
npm install prism-prisma-trpc-generator
pnpm add prism-prisma-trpc-generator
yarn add prism-prisma-trpc-generator
bun add prism-prisma-trpc-generator
```

Provides the command `prisma-trpc-generator`.

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 0.7.0 |
| Published | 2022-12-08 |
| First published | 2022-11-09 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 8 |
| Unpacked size | 37.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 739 |
| Author | Omar Dulaimi |
| Maintainers | sony1004 |
| Keywords | prisma, prisma-client, prisma-schema, prisma-generator, trpc, zod, routers, prisma-trpc-generator |

## Links

- npm: https://www.npmjs.com/package/prism-prisma-trpc-generator
- Repository: https://github.com/omar-dulaimi/prisma-trpc-generator
- Homepage: https://github.com/omar-dulaimi/prisma-trpc-generator#readme
- Issues: https://github.com/omar-dulaimi/prisma-trpc-generator/issues
- npm.io page: https://npm.io/package/prism-prisma-trpc-generator

## Dependencies (8)

- [tslib](https://npm.io/package/tslib.md) ^2.4.0
- [ts-morph](https://npm.io/package/ts-morph.md) ^16.0.0
- [pluralize](https://npm.io/package/pluralize.md) ^8.0.0
- [@prisma/client](https://npm.io/package/@prisma/client.md) ^4.3.1
- [@prisma/internals](https://npm.io/package/@prisma/internals.md) ^4.3.1
- [@prisma/generator-helper](https://npm.io/package/@prisma/generator-helper.md) ^4.3.1
- [prism-prisma-zod-generator](https://npm.io/package/prism-prisma-zod-generator.md) ^0.7.0
- [prisma-trpc-shield-generator](https://npm.io/package/prisma-trpc-shield-generator.md) 0.0.0-rc.4

## Alternatives

- [@regle/core](https://npm.io/package/@regle/core.md) — 47.0K weekly downloads
- [typeof-arguments](https://npm.io/package/typeof-arguments.md) — 12.5K weekly downloads
- [@lokalise/projects-engine-contracts](https://npm.io/package/@lokalise/projects-engine-contracts.md) — 978 weekly downloads
- [@osjwnpm/nam-laboriosam-quibusdam](https://npm.io/package/@osjwnpm/nam-laboriosam-quibusdam.md) — 70 weekly downloads
- [@oridune/validator](https://npm.io/package/@oridune/validator.md) — 16 weekly downloads

## Recent versions

- 0.7.0 (latest) — 2022-12-08
- 0.5.4 — 2022-11-29
- 0.5.3 — 2022-11-09
- 0.5.2 — 2022-11-09
- 0.5.1 — 2022-11-09
- 0.5.0 — 2022-11-09

## README

[![npm version](https://badge.fury.io/js/prisma-trpc-generator.svg)](https://badge.fury.io/js/prisma-trpc-generator)
[![npm](https://img.shields.io/npm/dt/prisma-trpc-generator.svg)](https://www.npmjs.com/package/prisma-trpc-generator)
[![HitCount](https://hits.dwyl.com/omar-dulaimi/prisma-trpc-generator.svg?style=flat)](http://hits.dwyl.com/omar-dulaimi/prisma-trpc-generator)
[![npm](https://img.shields.io/npm/l/prisma-trpc-generator.svg)](LICENSE)

<p align="center">
  <a href="https://github.com/omar-dulaimi/prisma-trpc-generator">
    <img src="https://raw.githubusercontent.com/omar-dulaimi/prisma-trpc-generator/master/logo.png" alt="Logo" width="200" height="200">
  </a>
  <h3 align="center">Prisma tRPC Generator</h3>
  <p align="center">
    A Prisma generator that automates creating your tRPC routers from your Prisma schema.
    <br />
    <a href="https://github.com/omar-dulaimi/prisma-trpc-generator#additional-options"><strong>Explore the options »</strong></a>
    <br />
    <br />
    <a href="https://github.com/omar-dulaimi/prisma-trpc-generator/issues/new?template=bug_report.yml">Report Bug</a>
    ·
    <a href="https://github.com/omar-dulaimi/prisma-trpc-generator/issues/new?template=feature_request.md">Request Feature</a>
  </p>
</p>

<p align="center">
  <a href="https://www.buymeacoffee.com/omardulaimi">
    <img src="https://cdn.buymeacoffee.com/buttons/default-black.png" alt="Buy Me A Coffee" height="41" width="174">
  </a>
</p>

## Table of Contents

- [About The Project](#about-the-project)
- [Supported Prisma Versions](#supported-prisma-versions)
- [Installation](#installation)
- [Usage](#usage)
- [Customizations](#customizations)
- [Additional Options](#additional-options)

# About The Project

Automatically generate fully implemented tRPC routers from your [Prisma](https://github.com/prisma/prisma) Schema. This includes routers, app router and of course all input schemas using [Zod](https://github.com/colinhacks/zod). Updates every time `npx prisma generate` runs.

# Supported Prisma Versions

### Prisma 4

- 0.2.0 and higher

### Prisma 2/3

- 0.1.12 and lower

# Installation

Using npm:

```bash
 npm install prisma-trpc-generator
```

Using yarn:

```bash
 yarn add prisma-trpc-generator
```

# Usage

1- Star this repo 😉

2- Add the generator to your Prisma schema

```prisma
generator trpc {
  provider       = "prisma-trpc-generator"
  withMiddleware = false
  withShield     = false
  contextPath    = "../../../../src/context"
}
```

3- Enable strict mode in `tsconfig` as it is required by Zod, and considered a Typescript best practice

```ts
{
  "compilerOptions": {
    "strict": true
  }
}

```

4- Running `npx prisma generate` for the following schema.prisma

```prisma
model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
  posts Post[]
}

model Post {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  title     String
  content   String?
  published Boolean  @default(false)
  viewCount Int      @default(0)
  author    User?    @relation(fields: [authorId], references: [id])
  authorId  Int?
}
```

will generate

![tRPC Routers](https://raw.githubusercontent.com/omar-dulaimi/prisma-trpc-generator/master/trpcRouters.png)

5- Make sure you have a valid `Context` file, as specified in `contextPath` option. The official [tRPC docs](https://trpc.io/docs/context) for reference.

# Customizations

## Skipping entire models

```prisma
/// @@Gen.model(hide: true)
model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
}
```

# Additional Options

| Option              | Description                                                                | Type      | Default                   |
| ------------------- | -------------------------------------------------------------------------- | --------- | ------------------------- |
| `output`            | Output directory for the generated routers and zod schemas                 | `string`  | `./generated`             |
| `withMiddleware`    | Attaches a global middleware that runs before all procedures               | `boolean` | `true`                    |
| `withShield`        | Generates a tRPC Shield to use as a permissions layer                      | `boolean` | `true`                    |
| `contextPath`       | Sets the context path used in your routers                                 | `string`  | `../../../../src/context` |
| `isGenerateSelect`  | Enables the generation of Select related schemas and the select property   | `boolean` | `false`                   |
| `isGenerateInclude` | Enables the generation of Include related schemas and the include property | `boolean` | `false`                   |

Use additional options in the `schema.prisma`

```prisma
generator trpc {
  provider           = "prisma-trpc-generator"
  output             = "./trpc"
  withMiddleware     = false
  withShield         = false
  contextPath        = "../context"
  isGenerateSelect   = true
  isGenerateInclude  = true
}
```

---
_Source: https://npm.io/package/prism-prisma-trpc-generator · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
