diff --git a/src-tauri/src/mcp.rs b/src-tauri/src/mcp.rs index 97f6cbb..41b28cb 100644 --- a/src-tauri/src/mcp.rs +++ b/src-tauri/src/mcp.rs @@ -317,7 +317,7 @@ let results = db .query_all(Statement::from_sql_and_values( DatabaseBackend::Sqlite, - "SELECT i.id, i.content, i.path, v.distance + "SELECT i.id, i.content, i.path, i.created_at, i.updated_at, v.distance FROM vec_items v JOIN items i ON v.id = i.id WHERE embedding MATCH ? @@ -333,6 +333,8 @@ "id": res.try_get::("", "id").map_err(|e| anyhow::anyhow!(e))?, "content": res.try_get::("", "content").map_err(|e| anyhow::anyhow!(e))?, "path": res.try_get::>("", "path").map_err(|e| anyhow::anyhow!(e))?, + "created_at": res.try_get::("", "created_at").map_err(|e| anyhow::anyhow!(e))?, + "updated_at": res.try_get::("", "updated_at").map_err(|e| anyhow::anyhow!(e))?, "distance": res.try_get::("", "distance").map_err(|e| anyhow::anyhow!(e))? })); } @@ -356,3 +358,41 @@ "content": [{ "type": "text", "text": text }] })) } + +#[cfg(test)] +mod tests { + use super::*; + use serde_json::json; + + #[test] + fn test_list_tools_format() { + let req = JsonRpcRequest { + jsonrpc: "2.0".to_string(), + method: "tools/list".to_string(), + params: json!({}), + id: Some(json!(1)), + }; + assert_eq!(req.method, "tools/list"); + } + + #[test] + fn test_search_response_structure() { + let results = vec![json!({ + "id": 1, + "content": "test content", + "path": "/test/path", + "created_at": "2024-02-07 15:00:00", + "updated_at": "2024-02-07 15:00:00", + "distance": 0.1 + })]; + + let response_body = json!({ + "content": [{ "type": "text", "text": serde_json::to_string_pretty(&results).unwrap() }] + }); + + assert!(response_body.get("content").is_some()); + let text = response_body["content"][0]["text"].as_str().unwrap(); + assert!(text.contains("created_at")); + assert!(text.contains("2024-02-07 15:00:00")); + } +} diff --git a/src/backend/config.js b/src/backend/config.js index a7a0010..bd7b687 100644 --- a/src/backend/config.js +++ b/src/backend/config.js @@ -27,7 +27,7 @@ // ベクトルDB database: { - filename: "vector.db", + filename: process.env.DB_PATH || "vector.db", embeddingDim: Number(process.env.VEC_DIM ?? 3), }, diff --git a/src/backend/db.js b/src/backend/db.js index d10209f..0f55572 100644 --- a/src/backend/db.js +++ b/src/backend/db.js @@ -32,8 +32,8 @@ id INTEGER PRIMARY KEY, content TEXT NOT NULL, path TEXT, - created_at TEXT DEFAULT (datetime('now')), - updated_at TEXT DEFAULT (datetime('now')) + created_at TEXT DEFAULT (datetime('now', 'localtime')), + updated_at TEXT DEFAULT (datetime('now', 'localtime')) ); CREATE VIRTUAL TABLE IF NOT EXISTS vec_items USING vec0( id INTEGER PRIMARY KEY, @@ -119,3 +119,4 @@ // エクスポート(後方互換性) export { db as default }; +