Skip to main content

sqlite_graphrag/storage/
versions.rs

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