Prisma Extension Kysely 项目教程
1. 项目的目录结构及介绍
prisma-extension-kysely/
├── examples/
│ └── basic/
│ ├── prisma/
│ │ └── schema.prisma
│ ├── package.json
│ └── README.md
├── src/
│ ├── adapter.ts
│ ├── driver.ts
│ ├── index.ts
│ └── types.ts
├── .gitignore
├── LICENSE
├── package.json
├── README.md
└── tsconfig.json
- examples/: 包含示例项目的目录。
- basic/: 基础示例项目。
- prisma/: Prisma 配置文件目录。
- schema.prisma: Prisma 数据库模式文件。
- package.json: 示例项目的依赖管理文件。
- README.md: 示例项目的说明文档。
- prisma/: Prisma 配置文件目录。
- basic/: 基础示例项目。
- src/: 项目源代码目录。
- adapter.ts: Kysely 适配器代码。
- driver.ts: Kysely 驱动代码。
- index.ts: 项目入口文件。
- types.ts: 类型定义文件。
- .gitignore: Git 忽略文件配置。
- LICENSE: 项目许可证文件。
- package.json: 项目依赖管理文件。
- README.md: 项目说明文档。
- tsconfig.json: TypeScript 配置文件。
2. 项目的启动文件介绍
项目的启动文件是 src/index.ts
。这个文件是整个项目的入口点,负责初始化和扩展 Prisma 客户端,使其能够使用 Kysely 进行类型安全的 SQL 查询。
// src/index.ts
import { PrismaClient } from '@prisma/client';
import { kyselyExtension } from './adapter';
const prisma = new PrismaClient().$extends(kyselyExtension());
export { prisma };
3. 项目的配置文件介绍
package.json
package.json
文件包含了项目的依赖、脚本和其他元数据。
{
"name": "prisma-extension-kysely",
"version": "1.0.0",
"description": "Drop down to raw SQL in Prisma without sacrificing type safety",
"main": "src/index.ts",
"scripts": {
"dev": "ts-node src/index.ts",
"build": "tsc",
"start": "node dist/index.js"
},
"dependencies": {
"@prisma/client": "^4.0.0",
"kysely": "^0.23.0"
},
"devDependencies": {
"ts-node": "^10.0.0",
"typescript": "^4.5.0"
}
}
tsconfig.json
tsconfig.json
文件是 TypeScript 的配置文件,定义了编译选项和项目结构。
{
"compilerOptions": {
"target": "ES6",
"module": "commonjs",
"outDir": "./dist",
"strict": true,
"esModuleInterop": true
},
"include": ["src/**/*"]
}
schema.prisma
schema.prisma
文件是 Prisma 的数据库模式文件,定义了数据模型和生成器配置。
generator kysely {
provider = "prisma-kysely"
camelCase = true
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
name String
email String @unique
}
通过以上配置,项目可以实现类型安全的 SQL 查询,并且与 Prisma 客户端无缝集成。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考