init-super-admin

非常好的想法!你说得对,应该把 init-super-admin 集成到数据库迁移流程中,这样每次重新初始化数据库时都能自动创建超级管理员租户。这是一个最佳实践!

让我创建一个完整的初始化方案:

现在创建一个完整的数据库重置和初始化脚本:

现在创建一个更智能的迁移后钩子(migration post-hook):

现在创建一个文档说明这个设计:

完美!现在让我创建一个快速参考卡片:

完美!我已经为你创建了一个完整的数据库初始化方案。让我总结一下:

✅ 已完成的初始化方案

1. 种子数据迁移(推荐方式)

文件:services/iam-tenant/migrations/99999999999999_seed_super_admin.sql

特点:

  • ✅ 自动在迁移时执行
  • ✅ 使用 ON CONFLICT DO NOTHING 保证幂等性
  • ✅ 无需手动干预
  • ✅ 固定的超级管理员 ID 和属性

使用:

cd services/iam-tenant
cargo run --bin run_migrations
# 自动创建 super-admin 租户

2. 初始化脚本

  • scripts/init-iam-data.sh - IAM 数据初始化
  • scripts/reset-and-init-db.sh - 完全重置数据库

3. 手动工具(备用)

  • init-super-admin - 独立的初始化工具

4. 完整文档

  • docs/DATABASE_INITIALIZATION_GUIDE.md - 详细指南
  • docs/QUICK_INIT_REFERENCE.md - 快速参考

初始化流程

数据库迁移
    ↓
自动执行种子数据迁移
    ↓
创建 super-admin 租户(固定 ID)
    ↓
状态:ACTIVE

优势

  1. 自动化 - 迁移时自动创建,无需记住额外步骤
  2. 幂等性 - 可以重复运行,不会出错
  3. 固定 ID - 超级管理员 ID 固定,便于引用
  4. 多层保障 - 迁移失败还有手动工具兜底

快速使用

# 首次部署或重置后
cd services/iam-tenant
cargo run --bin run_migrations

# 验证
psql -h 192.168.1.100 -U cuba_user -d cuba -c \
  "SELECT slug, name, status FROM iam_tenant.tenants WHERE slug = 'super-admin';"

这个方案确保了无论何时重置数据库,超级管理员租户都会自动创建!

posted @ 2026-02-14 00:04  eqy  阅读(12)  评论(0)    收藏  举报