services/storage/session_db
Session persistence — CRUD operations on sessions and messages tables. Gateway-agnostic. Works with composable Message types from completions.
Values
pub fn append_message(
conn: sqlight.Connection,
session_id: String,
message: message.Message,
) -> Result(Nil, String)
pub fn append_message_with_meta(
conn: sqlight.Connection,
session_id: String,
message: message.Message,
finish_reason: String,
token_count: Int,
platform_message_id: String,
) -> Result(Nil, String)
pub fn create_session(
conn: sqlight.Connection,
session_key: String,
source: String,
persona: String,
) -> Result(String, String)
pub fn delete_session(
conn: sqlight.Connection,
session_key: String,
) -> Result(Nil, String)
pub fn end_session(
conn: sqlight.Connection,
session_id: String,
reason: String,
) -> Result(Nil, String)
pub fn export_session_json(
conn: sqlight.Connection,
session_key: String,
) -> Result(option.Option(String), String)
pub fn find_session_by_title(
conn: sqlight.Connection,
title: String,
) -> Result(
option.Option(#(session.SessionRow, List(message.Message))),
String,
)
pub fn find_session_for_message(
conn: sqlight.Connection,
message_id: Int,
) -> Result(option.Option(String), String)
pub fn generate_id() -> String
pub fn get_child_session_id(
conn: sqlight.Connection,
parent_id: String,
) -> Result(option.Option(String), String)
pub fn list_recently_active(
conn: sqlight.Connection,
limit: Int,
source_filter: option.Option(String),
) -> Result(List(session.SessionSummary), String)
pub fn list_sessions(
conn: sqlight.Connection,
) -> Result(List(session.SessionSummary), String)
pub fn list_sessions_paginated(
conn: sqlight.Connection,
limit: Int,
offset: Int,
) -> Result(List(session.SessionSummary), String)
pub fn list_sessions_rich(
conn: sqlight.Connection,
) -> Result(List(session.RichSessionSummary), String)
pub fn load_messages(
conn: sqlight.Connection,
session_id: String,
) -> Result(List(message.Message), String)
pub fn load_messages_range(
conn: sqlight.Connection,
session_id: String,
limit: Int,
offset: Int,
) -> Result(List(message.Message), String)
pub fn load_session(
conn: sqlight.Connection,
session_key: String,
) -> Result(
option.Option(#(session.SessionRow, List(message.Message))),
String,
)
pub fn load_session_row(
conn: sqlight.Connection,
session_key: String,
) -> Result(option.Option(session.SessionRow), String)
pub fn prune_sessions(
conn: sqlight.Connection,
retention_days: Int,
source_filter: option.Option(String),
) -> Result(behaviours.PruneResult, String)
pub fn resolve_root_session(
conn: sqlight.Connection,
session_id: String,
) -> Result(String, String)
pub fn search_messages(
conn: sqlight.Connection,
query: String,
limit: Int,
offset: Int,
) -> Result(List(session.FtsSearchResult), String)
pub fn set_platform_message_id(
conn: sqlight.Connection,
session_id: String,
message_index: Int,
platform_id: String,
) -> Result(Nil, String)
pub fn set_session_title(
conn: sqlight.Connection,
session_id: String,
title: String,
) -> Result(Nil, String)
pub fn suspend_recently_active(
conn: sqlight.Connection,
max_age_seconds: Int,
source_filter: option.Option(String),
) -> Result(Int, String)
pub fn touch_session(
conn: sqlight.Connection,
session_id: String,
) -> Result(Nil, String)
pub fn update_session_config(
conn: sqlight.Connection,
session_id: String,
model: String,
model_config: String,
system_prompt: String,
) -> Result(Nil, String)
pub fn update_token_counts(
conn: sqlight.Connection,
session_id: String,
input: Int,
output: Int,
cache_read: Int,
cache_write: Int,
reasoning: Int,
cost: Float,
) -> Result(Nil, String)