feat: add missing database functions and fix tool errors
Co-authored-by: aider (openai/andrew/openrouter/anthropic/claude-sonnet-4) <aider@aider.chat>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
use anyhow::{Result, anyhow};
|
||||
use serde_json::Value;
|
||||
use std::collections::HashMap;
|
||||
use std::io::Write;
|
||||
use std::io::{Write, Read};
|
||||
use std::str::FromStr;
|
||||
use log::{debug, warn};
|
||||
|
||||
@@ -22,6 +22,8 @@ pub enum ToolError {
|
||||
Io(#[from] std::io::Error),
|
||||
#[error("JSON error: {0}")]
|
||||
Json(#[from] serde_json::Error),
|
||||
#[error("Parse error: {0}")]
|
||||
Parse(#[from] strum::ParseError),
|
||||
#[error("Other error: {0}")]
|
||||
Other(#[from] anyhow::Error),
|
||||
}
|
||||
@@ -106,10 +108,16 @@ impl KeepTools {
|
||||
let mut item_path = self.state.data_dir.clone();
|
||||
item_path.push(item_id.to_string());
|
||||
|
||||
if let Err(e) = plugin.process_file(&*conn, item_id, &item_path) {
|
||||
warn!("Failed to process file with plugin {:?}: {}", plugin_type, e);
|
||||
continue;
|
||||
}
|
||||
// Process the file content through the plugin
|
||||
let mut item_path = self.state.data_dir.clone();
|
||||
item_path.push(item_id.to_string());
|
||||
|
||||
let compression_engine = get_compression_engine(CompressionType::LZ4)?;
|
||||
let mut reader = compression_engine.open(item_path)?;
|
||||
let mut buffer = Vec::new();
|
||||
reader.read_to_end(&mut buffer)?;
|
||||
|
||||
plugin.update(&buffer, &*conn);
|
||||
|
||||
if let Err(e) = plugin.finalize(&*conn) {
|
||||
warn!("Failed to finalize plugin {:?}: {}", plugin_type, e);
|
||||
@@ -136,12 +144,12 @@ impl KeepTools {
|
||||
let mut item_path = self.state.data_dir.clone();
|
||||
item_path.push(item_id.to_string());
|
||||
|
||||
let compression_type = crate::compression_engine::CompressionType::from_str(&item.compression)?;
|
||||
let compression_type = CompressionType::from_str(&item.compression)?;
|
||||
let compression_engine = get_compression_engine(compression_type)?;
|
||||
|
||||
let mut reader = compression_engine.open(item_path)?;
|
||||
let mut content = String::new();
|
||||
std::io::Read::read_to_string(&mut reader, &mut content)?;
|
||||
reader.read_to_string(&mut content)?;
|
||||
|
||||
// Get metadata and tags
|
||||
let tags = db::get_item_tags(&mut *conn, &item)?;
|
||||
@@ -182,12 +190,12 @@ impl KeepTools {
|
||||
let mut item_path = self.state.data_dir.clone();
|
||||
item_path.push(item_id.to_string());
|
||||
|
||||
let compression_type = crate::compression_engine::CompressionType::from_str(&item.compression)?;
|
||||
let compression_type = CompressionType::from_str(&item.compression)?;
|
||||
let compression_engine = get_compression_engine(compression_type)?;
|
||||
|
||||
let mut reader = compression_engine.open(item_path)?;
|
||||
let mut content = String::new();
|
||||
std::io::Read::read_to_string(&mut reader, &mut content)?;
|
||||
reader.read_to_string(&mut content)?;
|
||||
|
||||
// Get metadata and tags
|
||||
let tags = db::get_item_tags(&mut *conn, &item)?;
|
||||
@@ -254,7 +262,7 @@ impl KeepTools {
|
||||
.map(|tags| tags.iter().map(|t| &t.name).collect::<Vec<_>>())
|
||||
.unwrap_or_default();
|
||||
let item_meta = meta_map.get(&item_id)
|
||||
.map(|meta| meta.iter().map(|m| (&m.name, &m.value)).collect::<HashMap<_, _>>())
|
||||
.cloned()
|
||||
.unwrap_or_default();
|
||||
|
||||
serde_json::json!({
|
||||
@@ -318,7 +326,7 @@ impl KeepTools {
|
||||
.map(|tags| tags.iter().map(|t| &t.name).collect::<Vec<_>>())
|
||||
.unwrap_or_default();
|
||||
let item_meta = meta_map.get(&item_id)
|
||||
.map(|meta| meta.iter().map(|m| (&m.name, &m.value)).collect::<HashMap<_, _>>())
|
||||
.cloned()
|
||||
.unwrap_or_default();
|
||||
|
||||
serde_json::json!({
|
||||
|
||||
Reference in New Issue
Block a user