sqlite_graphrag/storage/
versions.rs1use crate::errors::AppError;
7use rusqlite::{params, Connection};
8
9#[allow(clippy::too_many_arguments)]
11pub fn insert_version(
12 conn: &Connection,
13 memory_id: i64,
14 version: i64,
15 name: &str,
16 memory_type: &str,
17 description: &str,
18 body: &str,
19 metadata: &str,
20 changed_by: Option<&str>,
21 change_reason: &str,
22) -> Result<(), AppError> {
23 conn.execute(
24 "INSERT INTO memory_versions
25 (memory_id, version, name, type, description, body, metadata, changed_by, change_reason)
26 VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)",
27 params![
28 memory_id,
29 version,
30 name,
31 memory_type,
32 description,
33 body,
34 metadata,
35 changed_by,
36 change_reason
37 ],
38 )?;
39 Ok(())
40}
41
42pub fn next_version(conn: &Connection, memory_id: i64) -> Result<i64, AppError> {
44 let v: i64 = conn.query_row(
45 "SELECT COALESCE(MAX(version), 0) + 1 FROM memory_versions WHERE memory_id = ?1",
46 params![memory_id],
47 |r| r.get(0),
48 )?;
49 Ok(v)
50}