MCPcopy Create free account
hub / github.com/ChrisFeldmeier/OpenCodeRust / into_session

Method into_session

crates/opencode-storage/src/repository.rs:45–101  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

43
44impl SessionRow {
45 fn into_session(self) -> Session {
46 let summary = if self.summary_additions.is_some()
47 || self.summary_deletions.is_some()
48 || self.summary_files.is_some()
49 {
50 Some(SessionSummary {
51 additions: self.summary_additions.unwrap_or(0) as u64,
52 deletions: self.summary_deletions.unwrap_or(0) as u64,
53 files: self.summary_files.unwrap_or(0) as u64,
54 diffs: self
55 .summary_diffs
56 .and_then(|d| serde_json::from_str(&d).ok()),
57 })
58 } else {
59 None
60 };
61
62 let created_dt = DateTime::from_timestamp_millis(self.created_at).unwrap_or_else(Utc::now);
63 let updated_dt = DateTime::from_timestamp_millis(self.updated_at).unwrap_or_else(Utc::now);
64
65 Session {
66 id: self.id,
67 slug: self.slug,
68 project_id: self.project_id,
69 directory: self.directory,
70 parent_id: self.parent_id,
71 title: self.title,
72 version: self.version,
73 time: SessionTime {
74 created: self.created_at,
75 updated: self.updated_at,
76 compacting: self.time_compacting,
77 archived: self.time_archived,
78 },
79 messages: vec![],
80 summary,
81 share: self.share_url.map(|url| SessionShare { url }),
82 revert: self.revert.and_then(|r| serde_json::from_str(&r).ok()),
83 permission: self.permission.and_then(|p| serde_json::from_str(&p).ok()),
84 usage: if self.usage_input_tokens.is_some() {
85 Some(SessionUsage {
86 input_tokens: self.usage_input_tokens.unwrap_or(0) as u64,
87 output_tokens: self.usage_output_tokens.unwrap_or(0) as u64,
88 reasoning_tokens: self.usage_reasoning_tokens.unwrap_or(0) as u64,
89 cache_write_tokens: self.usage_cache_write_tokens.unwrap_or(0) as u64,
90 cache_read_tokens: self.usage_cache_read_tokens.unwrap_or(0) as u64,
91 total_cost: self.usage_total_cost.unwrap_or(0.0),
92 })
93 } else {
94 None
95 },
96 status: string_to_status(&self.status),
97 metadata: HashMap::new(),
98 created_at: created_dt,
99 updated_at: updated_dt,
100 }
101 }
102}

Callers 3

getMethod · 0.80
listMethod · 0.80
list_childrenMethod · 0.80

Calls 2

string_to_statusFunction · 0.85
newFunction · 0.85

Tested by

no test coverage detected