MCPcopy Index your code
hub / github.com/ChrisFeldmeier/OpenCodeRust / upsert

Method upsert

crates/opencode-storage/src/repository.rs:420–452  ·  view source on GitHub ↗
(&self, message: &SessionMessage)

Source from the content-addressed store, hash-verified

418 }
419
420 pub async fn upsert(&self, message: &SessionMessage) -> Result<(), DatabaseError> {
421 let data_json = serde_json::to_string(&message.parts)
422 .map_err(|e| DatabaseError::QueryError(e.to_string()))?;
423
424 let role_str = match message.role {
425 MessageRole::User => "user",
426 MessageRole::Assistant => "assistant",
427 MessageRole::System => "system",
428 MessageRole::Tool => "tool",
429 };
430
431 sqlx::query(
432 r#"
433 INSERT INTO messages (id, session_id, role, created_at, data)
434 VALUES (?, ?, ?, ?, ?)
435 ON CONFLICT(id) DO UPDATE SET
436 session_id = excluded.session_id,
437 role = excluded.role,
438 created_at = excluded.created_at,
439 data = excluded.data
440 "#,
441 )
442 .bind(&message.id)
443 .bind(&message.session_id)
444 .bind(role_str)
445 .bind(message.created_at.timestamp_millis())
446 .bind(&data_json)
447 .execute(&self.pool)
448 .await
449 .map_err(|e| DatabaseError::QueryError(e.to_string()))?;
450
451 Ok(())
452 }
453
454 pub async fn list_for_session(
455 &self,

Callers 4

import_session_dataFunction · 0.80
updateMethod · 0.80
set_statusMethod · 0.80
addMethod · 0.80

Calls 1

executeMethod · 0.45

Tested by

no test coverage detected