# 数据持久化服务 (Data Persistence Service) 本服务是“基本面分析”微服务架构中数据库的唯一所有者,为所有数据持久化需求提供一个 RESTful API。 ## 概览 - **语言**: Rust - **框架**: Axum - **数据库**: PostgreSQL (带有 TimescaleDB 扩展) - **核心任务**: 为数据库提供一个稳定、高性能且类型安全的 API 层。 ## 本地开发指南 ### 1. 先决条件 - Rust 工具链 (`rustup`) - `sqlx-cli` (`cargo install sqlx-cli`) - 一个正在运行的、并已启用 TimescaleDB 扩展的 PostgreSQL 实例。 ### 2. 配置 将 `env.sample` 文件复制为 `.env`,并根据您的本地环境配置 `DATABASE_URL`。 ```bash cp env.sample .env ``` 您的 `.env` 文件应如下所示: ```ini # 服务监听的端口 PORT=3000 # 用于 sqlx 连接数据库的 URL # 请确保用户、密码、主机、端口和数据库名称都正确无误 DATABASE_URL=postgres://user:password@localhost:5432/fundamental_analysis ``` ### 3. 数据库迁移 在首次运行本服务之前,或在任何数据库结构变更之后,请运行迁移命令以更新数据库: ```bash sqlx migrate run ``` ### 4. 运行服务 编译并运行本服务: ```bash cargo run ``` 服务将会启动并在您 `.env` 文件中指定的端口(默认为 3000)上监听。服务的 OpenAPI 规范 (Swagger JSON) 将在 `/api-docs/openapi.json` 路径下可用。 ## 测试 要运行所有测试(包括数据库集成测试和 API 集成测试),请使用以下命令。请确保您的 `.env` 文件中的 `DATABASE_URL` 指向一个有效的、已应用迁移的测试数据库。 ```bash cargo test ``` 如果需要查看详细的测试输出,可以使用: ```bash cargo test -- --nocapture ```