chore(deps): bump rusqlite from 0.32.1 to 0.40.1 in /ecc2 (#2211)

* chore(deps): bump rusqlite from 0.32.1 to 0.40.1 in /ecc2

Bumps [rusqlite](https://github.com/rusqlite/rusqlite) from 0.32.1 to 0.40.1.
- [Release notes](https://github.com/rusqlite/rusqlite/releases)
- [Changelog](https://github.com/rusqlite/rusqlite/blob/master/Changelog.md)
- [Commits](https://github.com/rusqlite/rusqlite/compare/v0.32.1...v0.40.1)

---
updated-dependencies:
- dependency-name: rusqlite
  dependency-version: 0.40.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(ecc2): cast u64 columns at sqlite boundary for rusqlite 0.40

rusqlite 0.40 removed the u64 ToSql/FromSql impls (SQLite stores
INTEGER as i64). Cast token counts, durations, counts, and paging
values to/from i64 at each bind/read site in session/store.rs.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Affaan Mustafa <me@affaanmustafa.com>
This commit is contained in:
dependabot[bot]
2026-06-11 01:41:43 -04:00
committed by GitHub
parent 1481aa707e
commit fec84fcf19
3 changed files with 62 additions and 76 deletions
+30 -26
View File
@@ -1025,7 +1025,7 @@ impl StateStore {
profile.permission_mode,
add_dirs_json,
profile.max_budget_usd,
profile.token_budget,
profile.token_budget.map(|tokens| tokens as i64),
profile.append_system_prompt,
],
)?;
@@ -1062,7 +1062,9 @@ impl StateStore {
permission_mode: row.get(4)?,
add_dirs: serde_json::from_str(&add_dirs_json).unwrap_or_default(),
max_budget_usd: row.get(6)?,
token_budget: row.get(7)?,
token_budget: row
.get::<_, Option<i64>>(7)?
.map(|tokens| tokens as u64),
append_system_prompt: row.get(8)?,
agent: None,
})
@@ -1568,12 +1570,12 @@ impl StateStore {
updated_at = ?8
WHERE id = ?9",
rusqlite::params![
metrics.input_tokens,
metrics.output_tokens,
metrics.tokens_used,
metrics.tool_calls,
metrics.input_tokens as i64,
metrics.output_tokens as i64,
metrics.tokens_used as i64,
metrics.tool_calls as i64,
metrics.files_changed,
metrics.duration_secs,
metrics.duration_secs as i64,
metrics.cost_usd,
chrono::Utc::now().to_rfc3339(),
session_id,
@@ -1596,7 +1598,7 @@ impl StateStore {
row.get::<_, String>(1)?,
row.get::<_, String>(2)?,
row.get::<_, String>(3)?,
row.get::<_, u64>(4)?,
row.get::<_, i64>(4)? as u64,
))
})?
.collect::<std::result::Result<Vec<_>, _>>()?;
@@ -1626,7 +1628,7 @@ impl StateStore {
if duration_secs != current_duration {
self.conn.execute(
"UPDATE sessions SET duration_secs = ?1 WHERE id = ?2",
rusqlite::params![duration_secs, session_id],
rusqlite::params![duration_secs as i64, session_id],
)?;
}
}
@@ -1706,11 +1708,11 @@ impl StateStore {
cost_usd = ?4
WHERE id = ?5",
rusqlite::params![
aggregate.input_tokens,
aggregate.output_tokens,
aggregate.input_tokens as i64,
aggregate.output_tokens as i64,
aggregate
.input_tokens
.saturating_add(aggregate.output_tokens),
.saturating_add(aggregate.output_tokens) as i64,
aggregate.cost_usd,
session_id,
],
@@ -1871,7 +1873,7 @@ impl StateStore {
row.input_params_json,
row.output_summary,
trigger_summary,
row.duration_ms,
row.duration_ms as i64,
risk_score,
timestamp,
file_paths_json,
@@ -2135,12 +2137,12 @@ impl StateStore {
})
.with_timezone(&chrono::Utc),
metrics: SessionMetrics {
input_tokens: row.get(11)?,
output_tokens: row.get(12)?,
tokens_used: row.get(13)?,
tool_calls: row.get(14)?,
input_tokens: row.get::<_, i64>(11)? as u64,
output_tokens: row.get::<_, i64>(12)? as u64,
tokens_used: row.get::<_, i64>(13)? as u64,
tool_calls: row.get::<_, i64>(14)? as u64,
files_changed: row.get(15)?,
duration_secs: row.get(16)?,
duration_secs: row.get::<_, i64>(16)? as u64,
cost_usd: row.get(17)?,
},
})
@@ -3813,7 +3815,7 @@ impl StateStore {
input_params_json,
output_summary,
trigger_summary,
duration_ms,
duration_ms as i64,
risk_score,
timestamp,
],
@@ -3842,11 +3844,11 @@ impl StateStore {
let page = page.max(1);
let offset = (page - 1) * page_size;
let total: u64 = self.conn.query_row(
let total = self.conn.query_row(
"SELECT COUNT(*) FROM tool_log WHERE session_id = ?1",
rusqlite::params![session_id],
|row| row.get(0),
)?;
|row| row.get::<_, i64>(0),
)? as u64;
let mut stmt = self.conn.prepare(
"SELECT id, session_id, tool_name, input_summary, input_params_json, output_summary, trigger_summary, duration_ms, risk_score, timestamp
@@ -3857,7 +3859,9 @@ impl StateStore {
)?;
let entries = stmt
.query_map(rusqlite::params![session_id, page_size, offset], |row| {
.query_map(
rusqlite::params![session_id, page_size as i64, offset as i64],
|row| {
Ok(ToolLogEntry {
id: row.get(0)?,
session_id: row.get(1)?,
@@ -3868,7 +3872,7 @@ impl StateStore {
.unwrap_or_else(|| "{}".to_string()),
output_summary: row.get::<_, Option<String>>(5)?.unwrap_or_default(),
trigger_summary: row.get::<_, Option<String>>(6)?.unwrap_or_default(),
duration_ms: row.get::<_, Option<u64>>(7)?.unwrap_or_default(),
duration_ms: row.get::<_, Option<i64>>(7)?.unwrap_or_default() as u64,
risk_score: row.get::<_, Option<f64>>(8)?.unwrap_or_default(),
timestamp: row.get(9)?,
})
@@ -3903,7 +3907,7 @@ impl StateStore {
.unwrap_or_else(|| "{}".to_string()),
output_summary: row.get::<_, Option<String>>(5)?.unwrap_or_default(),
trigger_summary: row.get::<_, Option<String>>(6)?.unwrap_or_default(),
duration_ms: row.get::<_, Option<u64>>(7)?.unwrap_or_default(),
duration_ms: row.get::<_, Option<i64>>(7)?.unwrap_or_default() as u64,
risk_score: row.get::<_, Option<f64>>(8)?.unwrap_or_default(),
timestamp: row.get(9)?,
})
@@ -6629,7 +6633,7 @@ mod tests {
"{}",
"updated file",
"context graph",
0u64,
0i64,
0.0f64,
"2026-04-10T00:01:00Z",
"[\"src/backfill.rs\"]",