use axum::extract::{Path, Query, State};
use axum::Json;
use serde::Deserialize;
use uuid::Uuid;
use crate::domain::drift::DriftSignal;
use crate::error::AppResult;
use crate::services::drift as svc;
use crate::state::AppState;
#[derive(Debug, Deserialize)]
pub struct ListQuery {
pub status: Option<String>,
pub limit: Option<i64>,
}
pub async fn list(
State(state): State<AppState>,
Query(q): Query<ListQuery>,
) -> AppResult<Json<Vec<DriftSignal>>> {
let signals = svc::list_drift_signals(&state.pool, q.status.as_deref(), q.limit).await?;
Ok(Json(signals))
}
pub async fn accept(
State(state): State<AppState>,
Path(id): Path<Uuid>,
) -> AppResult<Json<DriftSignal>> {
let signal = svc::accept_drift_signal(&state.pool, id).await?;
Ok(Json(signal))
}
pub async fn dismiss(
State(state): State<AppState>,
Path(id): Path<Uuid>,
) -> AppResult<Json<DriftSignal>> {
let signal = svc::dismiss_drift_signal(&state.pool, id).await?;
Ok(Json(signal))
}