12 个版本
0.3.0-alpha.1 | 2024年4月10日 |
---|---|
0.2.0 | 2023年11月7日 |
0.2.0-alpha.6 | 2023年10月16日 |
0.2.0-alpha.2 | 2023年7月20日 |
0.1.3 | 2022年11月30日 |
#136 in #wallet
124 个月下载量
用于 rgb-lib
32KB
748 行
数据库迁移
每次需要对数据库对象或表进行更改时,都需要创建一个迁移。
在 rgb-lib 中,我们使用 sea-orm 工具来处理数据库及其迁移。
要生成新的迁移,需要使用 sea-orm-cli 工具。您应该安装之前使用的相同版本。您可以在 src/database/entities/mod.rs
文件中找到它,其中第一行将指定 //! SeaORM 实体。由 sea-orm-codegen <VERSION>
。使用以下命令安装它:
cargo install sea-orm-cli --version <VERSION>
然后,要生成新的迁移文件,运行:
sea-orm-cli migrate generate <migration_name>
此命令将在新文件中创建 up
和 down
方法(参见 migration/src/m20230608_071249_init_db.rs
以获取示例)。这些方法将是空的,需要实现以提供有关如何分别更新和撤销新更改的说明。
一旦迁移文件准备就绪,您需要运行一个本地 PostgreSQL 数据库,并使用它通过 sea-orm-cli
来刷新迁移和生成实体。这可以通过以下方式完成:
docker pull postgres:latest
docker run -p 127.0.0.1:5432:5432/tcp --name migration-postgres \
-e POSTGRES_PASSWORD=mysecretpassword -d postgres
DATABASE_URL=postgres://postgres:mysecretpassword@localhost:5432 \
sea-orm-cli migrate up
DATABASE_URL=postgres://postgres:mysecretpassword@localhost:5432 \
sea-orm-cli migrate refresh
DATABASE_URL=postgres://postgres:mysecretpassword@localhost:5432/postgres \
sea-orm-cli generate entity -o src/database/entities --expanded-format
docker rm -f migration-postgres
生成实体的命令将引入一些不希望的变化,例如它将枚举字段转换为整数,并移除我们手动添加的一些额外的derive
。这些变化需要被丢弃,因此请确保只添加与您刚刚应用的新更改相关的代码。为此,我们建议首先刷新迁移,并在即将应用数据库更改的分支上使用sea-orm-cli
生成实体。生成的差异将仅包含不希望的变化,因此可以用作回滚它们的参考。
依赖关系
~65MB
~1M SLoC