Skip to main content

cognee_http_server/dto/
delete.rs

1//! DTOs for `DELETE /api/v1/delete` (deprecated endpoint).
2
3use serde::{Deserialize, Serialize};
4use utoipa::{IntoParams, ToSchema};
5use uuid::Uuid;
6
7/// Query string for `DELETE /api/v1/delete` (deprecated).
8#[derive(Debug, Deserialize, IntoParams)]
9#[serde(rename_all = "snake_case")]
10pub struct DeleteQuery {
11    /// UUID of the data row to delete.
12    pub data_id: Uuid,
13
14    /// UUID of the dataset that owns `data_id`.
15    pub dataset_id: Uuid,
16
17    /// `"soft"` (default) or `"hard"`. Hard mode also removes degree-one
18    /// entity nodes; Python documents it as dangerous.
19    #[serde(default = "default_mode")]
20    pub mode: DeleteMode,
21
22    /// If true and the dataset becomes empty after deletion, also delete
23    /// the dataset row.
24    #[serde(default)]
25    pub delete_dataset_if_empty: bool,
26}
27
28fn default_mode() -> DeleteMode {
29    DeleteMode::Soft
30}
31
32#[derive(Debug, Clone, Copy, Deserialize, Serialize, ToSchema, Default)]
33#[serde(rename_all = "lowercase")]
34pub enum DeleteMode {
35    #[default]
36    Soft,
37    Hard,
38}
39
40/// Response body. Python returns `{"status": "success"}`.
41#[derive(Debug, Serialize, ToSchema)]
42pub struct DeleteSuccessResponseDTO {
43    pub status: String,
44}
45
46impl DeleteSuccessResponseDTO {
47    pub fn ok() -> Self {
48        Self {
49            status: "success".to_owned(),
50        }
51    }
52}
53
54/// `{error}` envelope for 409.
55#[derive(Debug, Serialize, ToSchema)]
56pub struct DeleteErrorResponseDTO {
57    pub error: String,
58}