Prisma Rust Schema
Usage
Binary
- Install the binary
- Add the generator config to your
.prismafile:
generator prisma_rust_schema {
provider = "prisma-rust-schema"
output = "./src/prisma"
}
- Run the generator
- Use the generated code in your Rust project:
use MyModel;
Library
This crate exports the internal TypeScript types from prisma/prisma.
Options
| Option | Example | Description |
|---|---|---|
@prs.rename = <new_name> |
@prs.rename = username |
Rename the field in the generated Rust struct. |
@prs.skip |
@prs.skip |
Skip the field in the generated Rust struct. |
@prs.type = <type_override> |
@prs.type = usize |
Override the type of the field in the generated Rust struct. |
@prs.visibility = <visibility> |
@prs.visibility = public |
Override the visibility (public, private, protected) of the field in the generated Rust struct. |
@prs.derive = <trait> |
@prs.derive = Debug,Clone,serde::Deserialize |
Fully-qualified, comma-separated derive attributes for the generated Rust struct. |
Example
/// User model documentation
/// @prs.visibility = protected
/// @prs.derive = Debug,Clone,serde::Deserialize,serde::Serialize
model User {
/// User ID
/// @prs.rename = `user_id`
/// @prs.type = `usize`
/// @prs.derive = `Debug,Clone,serde::Deserialize`
id Int @id @default(autoincrement())
/// User name
/// @prs.skip
name String?
/// User emails
emails String[]
/// User age
age Int? @default(0)
}
/// Post model with only defaults
/// @prs.derive = Debug,Clone,serde::Deserialize,serde::Serialize
model post {
id Int @id @default(autoincrement())
title String
content Json
published Boolean @default(false)
publishedAt DateTime? @default(now())
}
Becomes:
pub
Constraints
Currently, it is up to the user to ensure all types have valid derive attributes. Specifically, if the rename attribute is needed, then serde::Deserialize and serde::Serialize must be used. The generator will not add them automatically.
Development