feat: 新增 MySQL 数据库驱动支持,支持跨设备数据同步
This commit is contained in:
@@ -77,6 +77,7 @@
|
||||
- **THEN** SHALL 支持 `required` 规则
|
||||
- **THEN** SHALL 支持 `min`、`max` 规则
|
||||
- **THEN** SHALL 支持 `oneof` 规则
|
||||
- **THEN** SHALL 支持 `required_if` 条件验证规则
|
||||
|
||||
#### Scenario: 验证执行
|
||||
|
||||
@@ -85,6 +86,17 @@
|
||||
- **THEN** SHALL 返回验证错误
|
||||
- **THEN** SHALL NOT 启动应用(如果验证失败)
|
||||
|
||||
#### Scenario: 数据库驱动条件验证
|
||||
|
||||
- **WHEN** `database.driver` 为 `sqlite`
|
||||
- **THEN** SHALL 验证 `database.path` 必填
|
||||
- **THEN** SHALL NOT 要求 MySQL 字段(host/port/user/password/dbname)
|
||||
- **WHEN** `database.driver` 为 `mysql`
|
||||
- **THEN** SHALL 验证 `database.host` 必填
|
||||
- **THEN** SHALL 验证 `database.user` 必填
|
||||
- **THEN** SHALL 验证 `database.dbname` 必填
|
||||
- **THEN** SHALL NOT 要求 `database.path`
|
||||
|
||||
### Requirement: 配置结构定义
|
||||
|
||||
系统 SHALL 定义清晰的配置结构。
|
||||
@@ -98,7 +110,14 @@
|
||||
#### Scenario: Database 配置
|
||||
|
||||
- **WHEN** 加载 database 配置
|
||||
- **THEN** SHALL 包含 path、max_idle_conns、max_open_conns、conn_max_lifetime 字段
|
||||
- **THEN** SHALL 包含 driver 字段(值为 `sqlite` 或 `mysql`,默认 `sqlite`)
|
||||
- **THEN** SHALL 包含 path 字段(SQLite 模式下的数据库文件路径)
|
||||
- **THEN** SHALL 包含 host 字段(MySQL 主机地址)
|
||||
- **THEN** SHALL 包含 port 字段(MySQL 端口,默认 3306)
|
||||
- **THEN** SHALL 包含 user 字段(MySQL 用户名)
|
||||
- **THEN** SHALL 包含 password 字段(MySQL 密码,选填)
|
||||
- **THEN** SHALL 包含 dbname 字段(MySQL 数据库名)
|
||||
- **THEN** SHALL 包含 max_idle_conns、max_open_conns、conn_max_lifetime 字段
|
||||
- **THEN** SHALL 使用合理的默认值
|
||||
|
||||
#### Scenario: Log 配置
|
||||
@@ -121,7 +140,13 @@
|
||||
#### Scenario: Database 默认值
|
||||
|
||||
- **WHEN** 使用默认配置
|
||||
- **THEN** database.driver SHALL 为 `sqlite`
|
||||
- **THEN** database.path SHALL 为 `~/.nex/config.db`
|
||||
- **THEN** database.host SHALL 为空字符串
|
||||
- **THEN** database.port SHALL 为 3306
|
||||
- **THEN** database.user SHALL 为空字符串
|
||||
- **THEN** database.password SHALL 为空字符串
|
||||
- **THEN** database.dbname SHALL 为 `nex`
|
||||
- **THEN** database.max_idle_conns SHALL 为 10
|
||||
- **THEN** database.max_open_conns SHALL 为 100
|
||||
- **THEN** database.conn_max_lifetime SHALL 为 1h
|
||||
@@ -248,18 +273,38 @@
|
||||
- **THEN** SHALL 在日志中记录覆盖信息
|
||||
- **THEN** SHALL 显示被覆盖的配置项名称
|
||||
|
||||
### Requirement: 配置文件安全
|
||||
|
||||
系统 SHALL 使用安全的文件权限保存配置文件。
|
||||
|
||||
#### Scenario: 配置文件权限
|
||||
|
||||
- **WHEN** 保存配置文件(`SaveConfig`)
|
||||
- **THEN** SHALL 使用 `0600` 权限写入文件(仅 owner 可读写)
|
||||
- **THEN** SHALL 防止其他用户读取配置中的 MySQL 密码等敏感信息
|
||||
|
||||
### Requirement: 配置摘要输出
|
||||
|
||||
系统 SHALL 在启动时输出配置摘要。
|
||||
|
||||
#### Scenario: 摘要内容
|
||||
#### Scenario: SQLite 模式摘要
|
||||
|
||||
- **WHEN** 配置加载完成
|
||||
- **WHEN** `database.driver` 为 `sqlite`
|
||||
- **THEN** SHALL 打印关键配置项(端口、数据库路径、日志级别等)
|
||||
- **THEN** SHALL 打印配置文件路径
|
||||
- **THEN** SHALL 打印环境变量数量
|
||||
- **THEN** SHALL 打印 CLI 参数数量
|
||||
|
||||
#### Scenario: MySQL 模式摘要
|
||||
|
||||
- **WHEN** `database.driver` 为 `mysql`
|
||||
- **THEN** SHALL 打印关键配置项(端口、数据库类型、数据库地址、日志级别等)
|
||||
- **THEN** SHALL 打印数据库地址格式为 `{host}:{port}/{dbname}`
|
||||
- **THEN** SHALL 不打印密码
|
||||
- **THEN** SHALL 打印配置文件路径
|
||||
- **THEN** SHALL 打印环境变量数量
|
||||
- **THEN** SHALL 打印 CLI 参数数量
|
||||
|
||||
#### Scenario: 摘要格式
|
||||
|
||||
- **WHEN** 打印配置摘要
|
||||
@@ -297,7 +342,7 @@
|
||||
- **WHEN** 使用服务器相关参数
|
||||
- **THEN** SHALL 支持 `--server-port`、`--server-read-timeout`、`--server-write-timeout`
|
||||
- **WHEN** 使用数据库相关参数
|
||||
- **THEN** SHALL 支持 `--database-path`、`--database-max-idle-conns`、`--database-max-open-conns`、`--database-conn-max-lifetime`
|
||||
- **THEN** SHALL 支持 `--database-driver`、`--database-path`、`--database-host`、`--database-port`、`--database-user`、`--database-password`、`--database-dbname`、`--database-max-idle-conns`、`--database-max-open-conns`、`--database-conn-max-lifetime`
|
||||
- **WHEN** 使用日志相关参数
|
||||
- **THEN** SHALL 支持 `--log-level`、`--log-path`、`--log-max-size`、`--log-max-backups`、`--log-max-age`、`--log-compress`
|
||||
|
||||
@@ -348,7 +393,7 @@
|
||||
- **WHEN** 设置服务器相关环境变量
|
||||
- **THEN** SHALL 支持 `NEX_SERVER_PORT`、`NEX_SERVER_READ_TIMEOUT`、`NEX_SERVER_WRITE_TIMEOUT`
|
||||
- **WHEN** 设置数据库相关环境变量
|
||||
- **THEN** SHALL 支持 `NEX_DATABASE_PATH`、`NEX_DATABASE_MAX_IDLE_CONNS`、`NEX_DATABASE_MAX_OPEN_CONNS`、`NEX_DATABASE_CONN_MAX_LIFETIME`
|
||||
- **THEN** SHALL 支持 `NEX_DATABASE_DRIVER`、`NEX_DATABASE_PATH`、`NEX_DATABASE_HOST`、`NEX_DATABASE_PORT`、`NEX_DATABASE_USER`、`NEX_DATABASE_PASSWORD`、`NEX_DATABASE_DBNAME`、`NEX_DATABASE_MAX_IDLE_CONNS`、`NEX_DATABASE_MAX_OPEN_CONNS`、`NEX_DATABASE_CONN_MAX_LIFETIME`
|
||||
- **WHEN** 设置日志相关环境变量
|
||||
- **THEN** SHALL 支持 `NEX_LOG_LEVEL`、`NEX_LOG_PATH`、`NEX_LOG_MAX_SIZE`、`NEX_LOG_MAX_BACKUPS`、`NEX_LOG_MAX_AGE`、`NEX_LOG_COMPRESS`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user