(session: &opencode_session::Session)
| 195 | } |
| 196 | |
| 197 | fn session_to_info(session: &opencode_session::Session) -> SessionInfo { |
| 198 | SessionInfo { |
| 199 | id: session.id.clone(), |
| 200 | slug: session.slug.clone(), |
| 201 | project_id: session.project_id.clone(), |
| 202 | directory: session.directory.clone(), |
| 203 | parent_id: session.parent_id.clone(), |
| 204 | title: session.title.clone(), |
| 205 | version: session.version.clone(), |
| 206 | time: SessionTimeInfo { |
| 207 | created: session.time.created, |
| 208 | updated: session.time.updated, |
| 209 | compacting: session.time.compacting, |
| 210 | archived: session.time.archived, |
| 211 | }, |
| 212 | summary: session.summary.as_ref().map(|s| SessionSummaryInfo { |
| 213 | additions: s.additions, |
| 214 | deletions: s.deletions, |
| 215 | files: s.files, |
| 216 | }), |
| 217 | share: session |
| 218 | .share |
| 219 | .as_ref() |
| 220 | .map(|s| SessionShareInfo { url: s.url.clone() }), |
| 221 | revert: session.revert.as_ref().map(|r| SessionRevertInfo { |
| 222 | message_id: r.message_id.clone(), |
| 223 | part_id: r.part_id.clone(), |
| 224 | snapshot: r.snapshot.clone(), |
| 225 | diff: r.diff.clone(), |
| 226 | }), |
| 227 | permission: session.permission.as_ref().map(|p| PermissionRulesetInfo { |
| 228 | allow: p.allow.clone(), |
| 229 | deny: p.deny.clone(), |
| 230 | mode: p.mode.clone(), |
| 231 | }), |
| 232 | } |
| 233 | } |
| 234 | |
| 235 | async fn persist_sessions_if_enabled(state: &Arc<ServerState>) { |
| 236 | if let Err(err) = state.sync_sessions_to_storage().await { |
no test coverage detected