use super::Database;
use crate::sqlite::Result;
use rusqlite::params;
impl Database {
#[allow(dead_code)] #[allow(clippy::too_many_arguments)] pub fn insert_with_id(
&self,
id: &str,
project_id: &str,
content: &str,
embedding_blob: &[u8],
metadata: Option<&str>,
created_at: &str,
updated_at: &str,
memory_type: &str,
status: &str,
superseded_by: Option<&str>,
retrieval_count: i64,
last_retrieved_at: Option<&str>,
) -> Result<bool> {
let rows = self.conn.execute(
r#"
INSERT INTO memories (id, project_id, content, embedding, metadata, created_at, updated_at, type, status, superseded_by, retrieval_count, last_retrieved_at)
VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)
"#,
params![
id,
project_id,
content,
embedding_blob,
metadata,
created_at,
updated_at,
memory_type,
status,
superseded_by,
retrieval_count,
last_retrieved_at,
],
)?;
Ok(rows > 0)
}
pub fn existing_ids(&self) -> Result<Vec<String>> {
let mut stmt = self.conn.prepare("SELECT id FROM memories")?;
let rows = stmt.query_map([], |row| row.get::<_, String>(0))?;
let mut ids = Vec::new();
for row_result in rows {
ids.push(row_result?);
}
Ok(ids)
}
#[allow(dead_code)] pub(crate) fn connection(&mut self) -> &mut rusqlite::Connection {
&mut self.conn
}
}