offline_intelligence/api/
admin_api.rs1use axum::{
7 extract::State,
8 http::StatusCode,
9 response::IntoResponse,
10 Json,
11};
12use std::sync::Arc;
13use serde::{Deserialize, Serialize};
14
15use crate::shared_state::SharedState;
16
17#[derive(Debug, Serialize)]
19pub struct HealthResponse {
20 pub status: String,
21 pub version: String,
22 pub uptime_seconds: u64,
23}
24
25#[derive(Debug, Serialize)]
27pub struct DbStatsResponse {
28 pub total_sessions: usize,
29 pub total_messages: usize,
30 pub total_summaries: usize,
31 pub database_size_bytes: u64,
32}
33
34#[derive(Debug, Deserialize)]
36pub struct MaintenanceRequest {
37 pub operation: String,
38 pub parameters: Option<serde_json::Value>,
39}
40
41pub async fn health(
43 State(_shared_state): State<Arc<SharedState>>,
44) -> Result<impl IntoResponse, StatusCode> {
45 Ok((
46 StatusCode::OK,
47 Json(HealthResponse {
48 status: "healthy".to_string(),
49 version: env!("CARGO_PKG_VERSION").to_string(),
50 uptime_seconds: 0, }),
52 ))
53}
54
55pub async fn db_stats(
57 State(_shared_state): State<Arc<SharedState>>,
58) -> Result<impl IntoResponse, StatusCode> {
59 Ok((
61 StatusCode::OK,
62 Json(DbStatsResponse {
63 total_sessions: 0,
64 total_messages: 0,
65 total_summaries: 0,
66 database_size_bytes: 0,
67 }),
68 ))
69}
70
71pub async fn maintenance(
73 State(_shared_state): State<Arc<SharedState>>,
74 Json(_payload): Json<MaintenanceRequest>,
75) -> Result<impl IntoResponse, StatusCode> {
76 Ok((
78 StatusCode::NOT_IMPLEMENTED,
79 Json(serde_json::json!({
80 "message": "Maintenance operations not yet implemented"
81 })),
82 ))
83}