「这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战」。
Flutter持久化库drift(原moor)官方文档翻译汇总 - 掘金 (juejin.cn)
本文翻译自 drift 的 官方文档 Command line tools for drift (simonbinder.eu)。
肉翻多有不足,不吝赐教。
用于 drift 的命令行工具(CLI)
用于和 drift 工程交互的命令行工具集
试验性
现在的时点,drift 的命令行工具是试验性的。如果发现问题还请报告。
使用
如果应用依赖了 drift_dev ,那就可以使用 CLI 工具。这篇文章中,我们使用 pub run ... 来运行工具。如果在使用 Flutter ,需要运行 flutter pub run ...。 两种情况都是在 pubspec.yaml 所在的目录下运行.
分析
运行 drift 的分析器,对工程中所有的 .drift 文件进行提示。
$ dart run drift_dev analyze
WARNING: For file test/data/tables/tables.drift:
WARNING: line 38, column 28: This table has columns without default values, so defaults can't be used for insert.
╷
38 │ defaultConfig: INSERT INTO config DEFAULT VALUES;
│ ^^^^^^
╵
INFO: Found 1 errors or problems
如果发现错误,会以错误码 1 退出。
标识数据库
相比用来确认 drift 分析器是否正常运行,这更多的是一个测试命令。它会标识工程中定义的所有数据库或 DAO。
$ dart run drift_dev identify-databases
Starting to scan in /tmp/example/ ...
INFO: example/example.dart has drift databases or daos: Database
INFO: lib/src/data/database.dart has drift databases or daos: AppDatabase
INFO: test/fake_db.dart has drift databases or daos: TodoDb, SomeDao
Schema 工具
导出
该子命令需要两个路径,一个 Dart 文件和一个目标。 Dart 文件只包含 @DriftDatabase 注解中关联的一个类。运行下面的命令会把数据库 schema 导出到 json。
$ dart run drift_dev schema dump path/to/databases.dart schema.json
生成的文件(这里是 schema.json )包含所有下面内容的信息:
- 表、包含列的详细信息
- 触发器
- 索引
- 包含 drift 文件的
@create查询 - 相关的依赖
导出一个 schema 可用于为 schema 迁移生成测试代码。详细内容参考这个指南。