feat: Add data deletion endpoint
Add ability to delete data instance through endpoint Feature #COG-455
This commit is contained in:
parent
fc3eb9b9b5
commit
eca1b9fddd
5 changed files with 48 additions and 1 deletions
|
|
@ -52,6 +52,31 @@ def get_datasets_router():
|
||||||
|
|
||||||
await delete_dataset(dataset)
|
await delete_dataset(dataset)
|
||||||
|
|
||||||
|
@router.delete("/{dataset_id}/data/{data_id}", response_model=None, responses={404: {"model": ErrorResponseDTO}})
|
||||||
|
async def delete_data(dataset_id: str, data_id: str, user: User = Depends(get_authenticated_user)):
|
||||||
|
from cognee.modules.data.methods import get_data, delete_data
|
||||||
|
from cognee.modules.data.methods import get_dataset
|
||||||
|
|
||||||
|
# Check if user has permission to access dataset and data by trying to get the dataset
|
||||||
|
dataset = await get_dataset(user.id, dataset_id)
|
||||||
|
|
||||||
|
#TODO: Handle situation differently if user doesn't have permission to access data?
|
||||||
|
if dataset is None:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=404,
|
||||||
|
detail=f"Dataset ({dataset_id}) not found."
|
||||||
|
)
|
||||||
|
|
||||||
|
data = await get_data(user.id, data_id)
|
||||||
|
|
||||||
|
if data is None:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=404,
|
||||||
|
detail=f"Dataset ({data_id}) not found."
|
||||||
|
)
|
||||||
|
|
||||||
|
await delete_data(data)
|
||||||
|
|
||||||
@router.get("/{dataset_id}/graph", response_model=str)
|
@router.get("/{dataset_id}/graph", response_model=str)
|
||||||
async def get_dataset_graph(dataset_id: str, user: User = Depends(get_authenticated_user)):
|
async def get_dataset_graph(dataset_id: str, user: User = Depends(get_authenticated_user)):
|
||||||
from cognee.shared.utils import render_graph
|
from cognee.shared.utils import render_graph
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@ from .get_dataset import get_dataset
|
||||||
from .get_datasets import get_datasets
|
from .get_datasets import get_datasets
|
||||||
from .get_datasets_by_name import get_datasets_by_name
|
from .get_datasets_by_name import get_datasets_by_name
|
||||||
from .get_dataset_data import get_dataset_data
|
from .get_dataset_data import get_dataset_data
|
||||||
|
from .get_data import get_data
|
||||||
|
|
||||||
# Delete
|
# Delete
|
||||||
from .delete_dataset import delete_dataset
|
from .delete_dataset import delete_dataset
|
||||||
|
from .delete_data import delete_data
|
||||||
8
cognee/modules/data/methods/delete_data.py
Normal file
8
cognee/modules/data/methods/delete_data.py
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
from cognee.modules.data.models import Data
|
||||||
|
from cognee.infrastructure.databases.relational import get_relational_engine
|
||||||
|
|
||||||
|
|
||||||
|
async def delete_data(data: Data):
|
||||||
|
db_engine = get_relational_engine()
|
||||||
|
|
||||||
|
return await db_engine.delete_data_by_id(data.__tablename__, data.id)
|
||||||
|
|
@ -4,4 +4,4 @@ from cognee.infrastructure.databases.relational import get_relational_engine
|
||||||
async def delete_dataset(dataset: Dataset):
|
async def delete_dataset(dataset: Dataset):
|
||||||
db_engine = get_relational_engine()
|
db_engine = get_relational_engine()
|
||||||
|
|
||||||
return await db_engine.delete_table(dataset.id)
|
return await db_engine.delete_data_by_id(dataset.__tablename__, dataset.id)
|
||||||
|
|
|
||||||
12
cognee/modules/data/methods/get_data.py
Normal file
12
cognee/modules/data/methods/get_data.py
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
from uuid import UUID
|
||||||
|
from typing import Optional
|
||||||
|
from cognee.infrastructure.databases.relational import get_relational_engine
|
||||||
|
from ..models import Data
|
||||||
|
|
||||||
|
async def get_data(user_id: UUID, data_id: UUID) -> Optional[Data]:
|
||||||
|
db_engine = get_relational_engine()
|
||||||
|
|
||||||
|
async with db_engine.get_async_session() as session:
|
||||||
|
data = await session.get(Data, data_id)
|
||||||
|
|
||||||
|
return data
|
||||||
Loading…
Add table
Reference in a new issue