Prisma tRPC Generator:如何从Prisma模式自动生成类型安全的tRPC路由
【免费下载链接】prisma-trpc-generatorPrisma 2+ generator to emit fully implemented tRPC routers项目地址: https://gitcode.com/gh_mirrors/pr/prisma-trpc-generator
在现代化的全栈TypeScript开发中,Prisma和tRPC是两个备受开发者喜爱的工具。Prisma提供了强大的数据库ORM功能,而tRPC则让端到端的类型安全API开发变得简单高效。然而,将两者无缝集成并生成完整的CRUD API通常需要大量的样板代码编写工作。这就是Prisma tRPC Generator的用武之地——一个能够自动从Prisma模式生成完全实现的tRPC路由的终极工具。
🚀 什么是Prisma tRPC Generator?
Prisma tRPC Generator是一个Prisma 2+生成器,它能够将你的Prisma数据模型自动转换为生产就绪的tRPC路由。这个工具的核心价值在于零配置、类型安全和快速开发,让你能够专注于业务逻辑而不是重复的CRUD代码。
想象一下,你定义了一个User模型,只需运行一次命令,就能获得完整的用户管理API,包括查询、创建、更新、删除等所有操作,而且所有这些API都是类型安全的,完全与你的Prisma模式保持同步。
✨ 主要功能特性
1.完全类型安全的CRUD操作
Prisma tRPC Generator为每个Prisma模型生成完整的CRUD操作,包括:
findMany- 查询多条记录findUnique- 根据唯一标识查询单条记录createOne- 创建新记录updateOne- 更新记录deleteOne- 删除记录count- 统计记录数量- 以及更多高级操作
2.Zod输入验证集成
通过启用withZod: true配置,生成器会自动创建Zod验证模式,确保所有API输入都经过严格的类型验证。你甚至可以在Prisma模型注释中添加自定义的Zod验证规则:
model User { id Int @id @default(autoincrement()) /// @zod.number.int() email String @unique /// @zod.string.email() name String? /// @zod.string.min(1).max(100) }3.中间件和权限控制
支持tRPC中间件和tRPC Shield集成,让你能够轻松实现身份验证和权限控制。通过简单的配置,就可以为不同操作设置不同的访问权限。
4.灵活的配置选项
生成器提供了丰富的配置选项,让你可以根据项目需求进行定制:
- 自定义上下文路径
- 启用/禁用特定功能
- 配置日期时间处理策略
- 设置OpenAPI文档生成
- 生成Postman集合
📦 生成的代码结构
当你运行生成器后,它会创建以下目录结构:
generated/ ├── routers/ │ ├── index.ts # 主应用路由器,组合所有模型路由器 │ ├── helpers/ │ │ └── createRouter.ts # 基础路由器工厂,包含中间件/Shield设置 │ ├── User.router.ts # 用户CRUD操作 │ └── Post.router.ts # 文章CRUD操作 └── schemas/ # Zod验证模式(如果启用withZod) ├── objects/ # 输入类型模式 ├── findManyUser.schema.ts ├── createOneUser.schema.ts └── index.ts # 导出文件上图展示了Prisma tRPC Generator生成的完整路由结构
🔧 快速开始指南
步骤1:安装依赖
# 使用npm npm install prisma-trpc-generator # 使用yarn yarn add prisma-trpc-generator # 使用pnpm pnpm add prisma-trpc-generator步骤2:配置Prisma生成器
在你的schema.prisma文件中添加生成器配置:
generator trpc { provider = "node ./lib/generator.js" output = "./prisma/generated" config = "./prisma/trpc.config.json" }步骤3:创建配置文件
创建prisma/trpc.config.json配置文件:
{ "withZod": true, "withMiddleware": true, "contextPath": "./context", "dateTimeStrategy": "date" }步骤4:生成路由
运行Prisma生成命令:
npx prisma generate就是这么简单!现在你已经拥有了完整的类型安全API。
🎯 实际应用场景
场景1:快速构建管理后台
假设你需要为电商平台构建一个商品管理后台。使用Prisma tRPC Generator,你可以:
- 定义Product、Category、Order等Prisma模型
- 运行
npx prisma generate - 立即获得完整的商品管理API
- 在前端使用tRPC客户端调用这些API
场景2:微服务架构中的API生成
在微服务架构中,每个服务可能有自己的数据库模型。Prisma tRPC Generator可以帮助你:
- 为每个服务快速生成专属的API
- 确保服务间API的类型安全
- 减少服务间的集成错误
场景3:原型开发
当需要快速验证想法时,时间就是一切。Prisma tRPC Generator让你能够:
- 在几分钟内从数据模型到完整API
- 立即开始前端开发
- 快速迭代和调整数据模型
⚡ 性能优化建议
对于大型项目,以下优化建议可以帮助你获得更好的性能:
1.选择性生成
通过模型注释隐藏不需要生成路由的模型:
/// @@Gen.model(hide: true) model InternalLog { id Int @id @default(autoincrement()) message String createdAt DateTime @default(now()) }2.懒加载路由器
对于大型应用,可以考虑使用懒加载来减少初始加载时间:
export const appRouter = createTRPCRouter({ users: usersRouter, posts: lazy(() => import('./posts.router').then(m => m.postsRouter)), });3.缓存策略
利用tRPC的缓存机制和Prisma的连接池,确保API响应速度。
🔍 常见问题解答
Q: Prisma tRPC Generator支持哪些数据库?
A:支持所有Prisma兼容的数据库,包括PostgreSQL、MySQL、SQLite、SQL Server和MongoDB。
Q: 如何处理日期时间字段?
A:通过dateTimeStrategy配置选项,你可以选择:
"date"- 只接受Date对象"coerce"- 接受Date对象和ISO字符串"isoString"- ISO字符串验证和转换
Q: 可以自定义生成的API吗?
A:当然可以!你可以在生成的代码基础上进行扩展,或者使用中间件来添加自定义逻辑。生成器只是提供了一个起点,你可以完全控制最终的实现。
Q: 如何添加身份验证?
A:通过配置auth选项,生成器会自动创建身份验证中间件和受保护的过程。支持JWT、Session和自定义身份验证策略。
🛠️ 高级功能
OpenAPI文档生成
启用OpenAPI支持后,生成器会自动创建符合OpenAPI规范的API文档:
{ "openapi": true, "openapi": { "title": "My API", "version": "1.0.0", "baseUrl": "http://localhost:3000" } }Postman集合导出
一键导出完整的Postman集合,方便API测试:
{ "postman": true, "postmanExamples": "skeleton" }请求ID和日志记录
为每个请求添加唯一ID和结构化日志:
{ "withRequestId": true, "withLogging": true }📈 项目架构解析
要深入理解Prisma tRPC Generator的工作原理,可以查看以下核心文件:
- src/prisma-generator.ts- 主生成器逻辑,处理Prisma模式并生成tRPC路由器
- src/config.ts- 配置验证和默认设置
- src/helpers.ts- 代码生成工具函数
- prisma/schema.prisma- 示例模式文件
🎉 为什么选择Prisma tRPC Generator?
1.开发效率提升
手动编写每个模型的CRUD操作可能需要数小时甚至数天。Prisma tRPC Generator在几秒钟内完成这项工作,让你专注于业务逻辑。
2.类型安全保证
由于生成的代码完全基于TypeScript和Prisma的类型定义,你可以在编译时捕获大多数错误,而不是在运行时。
3.一致性维护
当你的数据模型发生变化时,只需重新运行生成器,所有API都会自动更新,确保前后端类型始终保持一致。
4.社区支持
作为开源项目,Prisma tRPC Generator拥有活跃的社区和持续的维护,确保与Prisma和tRPC的最新版本保持兼容。
🚀 开始你的类型安全API之旅
Prisma tRPC Generator将TypeScript的全栈类型安全体验提升到了一个新的水平。无论你是构建小型个人项目还是大型企业应用,这个工具都能显著提高你的开发效率和代码质量。
Prisma tRPC Generator - 加速tRPC开发,一次一个模式
立即开始使用Prisma tRPC Generator,体验从数据模型到完整API的极速开发流程!告别繁琐的CRUD代码编写,迎接高效、类型安全的全栈开发新时代。
【免费下载链接】prisma-trpc-generatorPrisma 2+ generator to emit fully implemented tRPC routers项目地址: https://gitcode.com/gh_mirrors/pr/prisma-trpc-generator
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考