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