fix(handlers): add handlers

This commit is contained in:
2026-01-30 16:31:53 +08:00
parent bb82c75834
commit ce12b997f4
38 changed files with 3746 additions and 317 deletions

90
docs/DB_PROVISIONING.md Normal file
View File

@@ -0,0 +1,90 @@
# 数据库初始化与权限(归档)
本项目的 schema 初始化已从历史的 `init.sql` 拆分为“基础设施初始化DB/User”与“schema 初始化DDL/DML”两部分
- **基础设施初始化DB/User**:通常由 DBA/平台完成,适用于首次部署或新环境准备。
- **schema 初始化DDL/DML**:适用于开发/测试环境的可重复重建,见 `sql/schema_post_init.sql`,并由 `scripts/db/rebuild_iam_db.sh` 一键执行。
## 1) 创建用户与数据库(首次环境准备)
在具有足够权限的数据库账号下执行:
```sql
CREATE USER iam_service_user WITH PASSWORD 'iam_service_password';
CREATE DATABASE iam_service_db OWNER iam_service_user;
GRANT ALL PRIVILEGES ON DATABASE iam_service_db TO iam_service_user;
```
注意事项:
- 生产环境不要在仓库内硬编码密码;应由密钥管理系统注入并轮换。
- 如果需要启用扩展(如 `uuid-ossp`),请确认应用用户是否有权限,或由 DBA 预先安装。
## 2) schema 重建(开发/CI
推荐使用一键脚本(会 DROP 并重建表结构):
```bash
export DATABASE_URL='postgres://iam_service_user:***@host:5432/iam_service_db'
BACKUP=1 ./scripts/db/rebuild_iam_db.sh
```
脚本会按顺序执行:
- `sql/drop_iam_schema.sql`
- `sql/schema_post_init.sql`
- `sql/verify_iam_schema.sql`
## 3) 常见问题
### 3.1 `.env` 配了 DATABASE_URL 但脚本报 “DATABASE_URL is required”
`.env` 只是“文件”,不会自动变成进程环境变量。`cargo run` 会通过 `dotenvy` 加载 `.env`,但 bash 脚本默认不会。
解决方式:
- 直接 `export DATABASE_URL=...` 后再执行脚本;或
- 保持 `.env` 存在于项目根目录,脚本会自动读取其中的 `DATABASE_URL`
### 3.2 执行脚本报 “psql: 未找到命令”
原因:系统未安装 PostgreSQL 客户端工具(`psql`/`pg_dump`),或不在 `PATH` 中。
安装方式:
- Ubuntu/Debian
```bash
sudo apt-get update && sudo apt-get install -y postgresql-client
```
- RHEL/CentOS/Fedora
```bash
sudo dnf install -y postgresql
```
- Alpine
```bash
sudo apk add postgresql-client
```
- macOSHomebrew
```bash
brew install libpq
brew link --force libpq
```
验证方式:
```bash
psql --version
```
安装完成后重新执行:
```bash
BACKUP=1 ./scripts/db/rebuild_iam_db.sh
```