lawless/scripts/README.md

85 行
2.0 KiB
Markdown

# 洪荒大陆 · 数据库脚本
本目录包含本地开发用的数据库迁移、种子与重置脚本。
## 前置依赖
1. PostgreSQL 16 已运行(本地或 Docker
2. 已安装 `psql` 客户端。
3. 项目根目录存在 `.env` 文件,且包含 `DATABASE_URL`
> 可执行 `cp .env.example .env` 后按需修改。
## 环境变量
| 变量 | 说明 | 示例 |
|------|------|------|
| `DATABASE_URL` | **必须**。PostgreSQL 连接串 | `postgres://honghuang:honghuang@localhost:5432/honghuang?sslmode=disable` |
| `DB_WAIT_TIMEOUT` | 可选。等待数据库就绪的超时秒数,默认 30 | `60` |
## 脚本说明
### `migrate.sh`
执行数据库迁移。
```bash
# 执行 up 迁移(创建表 + 初始参考数据)
./scripts/migrate.sh
# 执行 down 迁移(删除所有表)
./scripts/migrate.sh down
```
### `seed.sh`
在迁移完成后插入开发测试数据:
- 2 名测试玩家
- 2 名测试角色(虎妖 / 光精灵)
- 对应的 `character_race_states``character_realms`
- 基础货币余额(铜钱、鸿蒙紫气)
```bash
./scripts/seed.sh
```
脚本为幂等设计,可重复执行,重复执行时会更新货币余额为初始值。
### `reset.sh`
开发环境一键重置:先 down,再 up,最后 seed。
```bash
./scripts/reset.sh
```
### `wait-for-it.sh`
TCP 端口等待工具,被 `migrate.sh` / `seed.sh` 内部使用,也可单独调用:
```bash
./scripts/wait-for-it.sh localhost:5432 -t 30
```
## Makefile 快捷入口(可选)
可在项目根目录 `Makefile` 中添加:
```makefile
migrate:
./scripts/migrate.sh
seed:
./scripts/seed.sh
reset-db:
./scripts/reset.sh
```
## 注意事项
- `reset.sh` 会清空当前数据库全部业务数据,**仅用于开发/测试环境**。
- `seed.sh` 中的测试角色名为「测试修士·甲」「测试修士·乙」,创建前会检查重名,因此可安全重复执行。
- 脚本默认在 `DATABASE_URL` 对应的数据库上操作,请确认 `.env` 配置正确。