feat: Enable database deletion when dataset is deleted
This commit is contained in:
parent
cb16dc0a7e
commit
47c02781e5
2 changed files with 28 additions and 4 deletions
|
|
@ -208,21 +208,21 @@ def get_datasets_router() -> APIRouter:
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
from cognee.modules.data.methods import get_dataset, delete_dataset
|
from cognee.modules.data.methods import delete_dataset
|
||||||
|
|
||||||
dataset = await get_dataset(user.id, dataset_id)
|
dataset = await get_authorized_existing_datasets([dataset_id], "delete", user)
|
||||||
|
|
||||||
if dataset is None:
|
if dataset is None:
|
||||||
raise DatasetNotFoundError(message=f"Dataset ({str(dataset_id)}) not found.")
|
raise DatasetNotFoundError(message=f"Dataset ({str(dataset_id)}) not found.")
|
||||||
|
|
||||||
await delete_dataset(dataset)
|
await delete_dataset(dataset[0])
|
||||||
|
|
||||||
@router.delete(
|
@router.delete(
|
||||||
"/{dataset_id}/data/{data_id}",
|
"/{dataset_id}/data/{data_id}",
|
||||||
response_model=None,
|
response_model=None,
|
||||||
responses={404: {"model": ErrorResponseDTO}},
|
responses={404: {"model": ErrorResponseDTO}},
|
||||||
)
|
)
|
||||||
async def delete_data(
|
async def delete_data( # TODO: Is this endpoint needed? It seems redundant with data deletion elsewhere
|
||||||
dataset_id: UUID, data_id: UUID, user: User = Depends(get_authenticated_user)
|
dataset_id: UUID, data_id: UUID, user: User = Depends(get_authenticated_user)
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,32 @@
|
||||||
|
from cognee.modules.users.models import DatasetDatabase
|
||||||
|
from sqlalchemy import select
|
||||||
|
|
||||||
from cognee.modules.data.models import Dataset
|
from cognee.modules.data.models import Dataset
|
||||||
|
from cognee.infrastructure.databases.utils.get_vector_dataset_database_handler import (
|
||||||
|
get_vector_dataset_database_handler,
|
||||||
|
)
|
||||||
|
from cognee.infrastructure.databases.utils.get_graph_dataset_database_handler import (
|
||||||
|
get_graph_dataset_database_handler,
|
||||||
|
)
|
||||||
from cognee.infrastructure.databases.relational import get_relational_engine
|
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()
|
||||||
|
|
||||||
|
async with db_engine.get_async_session() as session:
|
||||||
|
stmt = select(DatasetDatabase).where(
|
||||||
|
DatasetDatabase.dataset_id == dataset.id,
|
||||||
|
)
|
||||||
|
dataset_database: DatasetDatabase = await session.scalar(stmt)
|
||||||
|
if dataset_database:
|
||||||
|
graph_dataset_database_handler = get_graph_dataset_database_handler(dataset_database)
|
||||||
|
vector_dataset_database_handler = get_vector_dataset_database_handler(dataset_database)
|
||||||
|
await graph_dataset_database_handler["handler_instance"].delete_dataset(
|
||||||
|
dataset_database
|
||||||
|
)
|
||||||
|
await vector_dataset_database_handler["handler_instance"].delete_dataset(
|
||||||
|
dataset_database
|
||||||
|
)
|
||||||
|
|
||||||
return await db_engine.delete_entity_by_id(dataset.__tablename__, dataset.id)
|
return await db_engine.delete_entity_by_id(dataset.__tablename__, dataset.id)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue