#migration #wallet #db #postgresql #generate #rgb-lib #m20230608

bin+lib rgb-lib-migration

RGB 钱包库迁移

12 个版本

0.3.0-alpha.12024年4月10日
0.2.0 2023年11月7日
0.2.0-alpha.62023年10月16日
0.2.0-alpha.22023年7月20日
0.1.3 2022年11月30日

#136 in #wallet

Download history 5/week @ 2024-05-18 22/week @ 2024-05-25 20/week @ 2024-06-01 4/week @ 2024-06-08 49/week @ 2024-06-29 39/week @ 2024-07-06 63/week @ 2024-07-13 93/week @ 2024-07-20 83/week @ 2024-07-27 5/week @ 2024-08-03 35/week @ 2024-08-17

124 个月下载量
用于 rgb-lib

MIT 许可证

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>

此命令将在新文件中创建 updown 方法(参见 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