使用 Diesel 的声明式模式定义
Declarative schema definition with Diesel
我想编写 table 模式声明方式
- GORM 自动迁移 https://gorm.io/ko_KR/docs/migration.html
- django 迁移 https://docs.djangoproject.com/en/3.2/topics/migrations/
但是,据我所知,Diesel 需要如下手写迁移 DDL。
-- up.sql
CREATE TABLE members (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
-- down.sql
DROP TABLE members;
它有点复杂,因为它是有状态的。
Diesel 提供的一种声明式编写模式的方法吗?
或者是否存在一个好的外部工具?
我发现 Prisma 可以从用自己的语法编写的声明性模式中生成等同于 up.sql 的 DDL。
但是我找不到生成 down.sql 的方法
https://www.prisma.io/docs/concepts/components/prisma-migrate
如果我理解正确的话,你正在寻找一种方法来保持 Rust 实体和数据库模式同步,而不必编写任何 SQL(这基本上是像 EFCore 或 GORM 这样的常规 orm会提供)。
如果这就是您所需要的,恐怕柴油不会满足您的需求。
这个库看起来不错 https://github.com/rust-db/barrel,它为您提供了一种使用 Rust 而不是 SQL 编写迁移的方法,有点像 EFCore。
diesel 还提供了 embed_migrations!
宏,您可以使用它来自动 运行 迁移而无需使用 cli。
然而,尽管所有这些工具都可以帮助您自动执行数据库迁移,但您仍然需要手动编写它们。
我想编写 table 模式声明方式
- GORM 自动迁移 https://gorm.io/ko_KR/docs/migration.html
- django 迁移 https://docs.djangoproject.com/en/3.2/topics/migrations/
但是,据我所知,Diesel 需要如下手写迁移 DDL。
-- up.sql
CREATE TABLE members (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
-- down.sql
DROP TABLE members;
它有点复杂,因为它是有状态的。
Diesel 提供的一种声明式编写模式的方法吗? 或者是否存在一个好的外部工具?
我发现 Prisma 可以从用自己的语法编写的声明性模式中生成等同于 up.sql 的 DDL。 但是我找不到生成 down.sql 的方法 https://www.prisma.io/docs/concepts/components/prisma-migrate
如果我理解正确的话,你正在寻找一种方法来保持 Rust 实体和数据库模式同步,而不必编写任何 SQL(这基本上是像 EFCore 或 GORM 这样的常规 orm会提供)。
如果这就是您所需要的,恐怕柴油不会满足您的需求。 这个库看起来不错 https://github.com/rust-db/barrel,它为您提供了一种使用 Rust 而不是 SQL 编写迁移的方法,有点像 EFCore。
diesel 还提供了 embed_migrations!
宏,您可以使用它来自动 运行 迁移而无需使用 cli。
然而,尽管所有这些工具都可以帮助您自动执行数据库迁移,但您仍然需要手动编写它们。