自動マイグレーション機能
プラグインの更新時、Qmonus SDKではDBを自動でマイグレーションする機能が存在します。
例えば、新plugin(DB schemaを変更したplugin)を既存の環境に読み込ませることを想定します。 その際、DB schemaの変更内容に応じてQmonusSDKが自動でマイグレーションする場合、何もしない場合、pluginの読み込みに失敗する場合の3通りが生じます。そのため、一部は開発者が対応しなければならない点があることに留意してください。
DB Schemaの変更
DB Schemaとそのサポート状況については以下の通りとなります。
項番 | DB Schema変更内容 | サポート状況 |
---|---|---|
1. | テーブル追加 | QmonusSDKで自動migration |
2. | テーブル削除 | 何もしない (手動対応が必要) |
3. | カラム追加 | QmonusSDKで自動migration |
4. | カラム削除 | QmonusSDKで自動migration |
5. | カラムの属性変更 | 何もしない (手動対応が必要) |
6. | 制約追加 (not null, unique) | 何もしない (手動対応が必要) |
7. | 制約追加 (foreign key) | QmonuSDKで自動migration |
8. | 制約削除 (not null, unique) | 何もしない (手動対応が必要) |
9. | 制約削除 (foreign key) | QmonuSDKで自動migration |
ATOMの変更
ATOMの変更内容と、それによって起きるDB Schemaの変更は以下の通りとなります。
項番 | ATOM変更内容 | DB schema変更内容 |
---|---|---|
1. | class追加 | テーブル追加 |
2. | class削除 | 何もしない (手動対応が必要) |
3. | local_field追加 | カラム追加 |
4. | local_field削除 | カラム削除 + (制約削除) |
5. | local_fieldの属性追加 (field_persistence) | カラム追加 |
6. | local_fieldの属性追加 (field_nullable, field_unique) | 何もしない (手動対応が必要) |
7. | local_fieldの属性追加 (field_immutable, field_default) | 制約追加 (field_immutable, field_default) |
8. | local_fieldの属性削除 (field_persistence) | カラム削除 |
9. | local_fieldの属性削除 (field_nullable, field_unique) | 何もしない (手動対応が必要) |
10. | local_fieldの属性削除 (field_immutable, field_default) | 制約削除 (field_immutable, field_default) |
11. | local_fieldのtype変更 | SDKのバリデーション変更 (DB操作が必要) |
12. | ref_field追加 | カラム追加 + 制約追加 (foreign key) |
13. | ref_field削除 | カラム削除 + 制約削除 (foreign key) |
14. | ref_fieldの属性追加 (field_persistence) | カラム追加 + 制約追加 (foreign key) |
15. | ref_fieldの属性追加 (field_unique) | 何もしない (手動対応が必要) |
16. | ref_fieldの属性追加 (field_nullable) | 制約追加 (nullable) |
17. | ref_fieldの属性追加 (field_immutable) | SDKにて制約追加 |
18. | ref_fieldの属性削除 (field_persistence) | カラム削除 + 制約削除 (foreign key) |
19. | ref_fieldの属性削除 (field_unique) | 何もしない (手動対応が必要) |
20. | ref_fieldの属性削除 (field_nullable) | 制約削除 (nullable) |
21. | ref_fieldの属性削除 (field_immutable) | SDKにて制約削除 |
22. | ref_fieldのtype変更 | カラムの属性変更 |