# nexus-graph-rs **Repository Path**: zhulma/nexus-graph-rs ## Basic Information - **Project Name**: nexus-graph-rs - **Description**: No description available - **Primary Language**: Rust - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-24 - **Last Updated**: 2025-12-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # nexus-graph-rs 基于 Rust、Poem、Poem-OpenAPI、Nebula-rs、SeaORM 和 NebulaGraph 数据库实现的 OpenAPI 服务。 ## 功能特点 - 🚀 基于 Rust 高性能异步 Web 框架 Poem - 📝 完整的 OpenAPI 3.0 规范支持,包含 Swagger UI - 🌐 NebulaGraph 图数据库集成 - 🗄️ SeaORM 数据库 ORM 支持 - 🔒 类型安全的 API 接口 - 📊 健康检查和监控接口 ## 技术栈 - **Web 框架**: Poem 3.0 - **OpenAPI**: Poem-OpenAPI 5.0 - **图数据库**: NebulaGraph (通过 nebula-rs) - **关系型数据库**: SeaORM + SQLx - **异步运行时**: Tokio - **日志**: tracing + tracing-subscriber ## 安装和运行 ### 前置要求 - Rust 1.70+ - NebulaGraph 数据库实例 - MySQL 数据库实例 (可选,用于关系型数据) ### 安装依赖 ```bash cargo build ``` ### 配置 复制环境变量配置文件: ```bash cp .env.example .env ``` 编辑 `.env` 文件,修改以下配置: ```env # 服务器配置 PORT=3000 # 数据库配置 DATABASE_URL=mysql://user:password@localhost/nexus_graph # NebulaGraph配置 NEBULA_URL=127.0.0.1:9669 NEBULA_USERNAME=root NEBULA_PASSWORD=nebula ``` ### 运行服务 ```bash cargo run ``` 服务将在 `http://localhost:3000` 启动 ## API 文档 启动服务后,可以通过以下地址访问 API 文档: - Swagger UI: http://localhost:3000/docs - OpenAPI JSON: http://localhost:3000/api/openapi.json ## API 接口 ### 健康检查 ```http GET /api/health ``` ### 图数据库操作 #### 执行图查询 ```http POST /api/graph/query Content-Type: application/json { "space": "your_space_name", "query": "MATCH (v:player) RETURN v LIMIT 10" } ``` #### 创建顶点 ```http POST /api/graph/vertex Content-Type: application/json { "space": "your_space_name", "tag_name": "player", "vertex_id": "player100", "props": { "name": "Tim Duncan", "age": "42" } } ``` #### 创建边 ```http POST /api/graph/edge Content-Type: application/json { "space": "your_space_name", "edge_name": "serve", "src_id": "player100", "dst_id": "team204", "ranking": 0, "props": { "start_year": "1997", "end_year": "2016" } } ``` #### 获取空间信息 ```http GET /api/graph/space/{space_name}/info ``` ## 项目结构 ``` src/ ├── main.rs # 应用程序入口点 ├── config.rs # 配置管理 ├── db.rs # 数据库连接和初始化 ├── api/ # API 路由和处理逻辑 │ ├── mod.rs │ ├── health.rs # 健康检查 API │ └── nebula.rs # NebulaGraph 操作 API └── models/ # 数据模型 ├── mod.rs ├── user.rs # 用户模型 └── graph.rs # 图数据模型 ``` ## 开发指南 ### 添加新的 API 端点 1. 在 `src/models/` 中定义请求和响应模型 2. 在 `src/api/` 中创建新的 API 处理器 3. 在 `main.rs` 中注册新的 API 路由 ### 数据库迁移 使用 SeaORM 的迁移工具管理数据库结构: ```bash # 创建新的迁移 sea-orm-cli migrate init migration_name # 运行迁移 sea-orm-cli migrate up ``` ## 许可证 MIT License