添加qiming-rcoder模块

This commit is contained in:
Codex
2026-06-01 13:54:52 +08:00
parent 8092c4b1f8
commit 4b1a580132
539 changed files with 151650 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
//! DuckDB Manager
//!
//! 提供基于 DuckDB 内存数据库的存储管理,用于替代 DashMap
//!
//! # 主要特性
//!
//! - **内存模式**: 使用 DuckDB 内存数据库,无需持久化
//! - **两表设计**: `containers` 和 `projects` 表(会话信息已合并到 projects
//! - **线程安全**: 使用 `Arc<Mutex<Connection>>` 实现线程安全访问
//! - **事务支持**: 对需要原子性的操作(如状态更新)提供事务支持
//!
//! # 示例
//!
//! ```rust,ignore
//! use duckdb_manager::{DuckDbManager, create_storage};
//! use duckdb_manager::models::{ContainerRecord, ProjectRecord};
//! use shared_types::ServiceType;
//!
//! // 创建存储
//! let storage = create_storage().unwrap();
//!
//! // 保存容器
//! let container = ContainerRecord::new(
//! "c1".to_string(),
//! "container-1".to_string(),
//! "127.0.0.1".to_string(),
//! 8080,
//! 8080,
//! ServiceType::RCoder,
//! "running".to_string(),
//! "http://localhost:8080".to_string(),
//! );
//! storage.save_container(&container).unwrap();
//!
//! // 保存项目
//! let project = ProjectRecord::new(
//! "p1".to_string(),
//! ServiceType::RCoder,
//! "c1".to_string(),
//! );
//! storage.save_project(&project).unwrap();
//!
//! // 更新会话
//! storage.update_session("p1", "session-1").unwrap();
//!
//! // 通过会话ID查询
//! let project = storage.get_project_by_session("session-1").unwrap();
//! ```
//!
//! # 模块结构
//!
//! - `connection`: 数据库连接管理
//! - `error`: 错误类型定义
//! - `models`: 数据模型定义
//! - `schema`: 数据库 Schema 定义和初始化
//! - `repositories`: 数据访问层Repository 模式)
//! - `manager`: 全局管理器
//! - `storage`: 统一存储接口
pub mod connection;
pub mod error;
pub mod manager;
pub mod models;
pub mod repositories;
pub mod schema;
pub mod storage;
// 重新导出常用类型
pub use connection::DuckDbConnection;
pub use error::{DuckDbError, DuckDbResult};
pub use manager::{DuckDbManager, get_global_manager, init_global_manager};
pub use models::{
CleanupResult, ContainerRecord, IdleContainerInfo, OrphanContainerInfo, ProjectRecord,
StorageStats,
};
pub use repositories::{ContainerRepository, ProjectRepository};
pub use schema::SchemaInitializer;
pub use storage::{DuckDbStorage, UnifiedStorage, create_storage};