Skip to content

Commit

Permalink
Merge pull request #42 from Agenta-AI/delete-dataset
Browse files Browse the repository at this point in the history
delete dataset
  • Loading branch information
aakrem authored May 31, 2023
2 parents b869da6 + 084e711 commit 514f022
Showing 4 changed files with 57 additions and 11 deletions.
9 changes: 7 additions & 2 deletions agenta-backend/agenta_backend/models/api/dataset_model.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from pydantic import BaseModel, Field
from typing import Any
from typing import Any, Optional, List


class DatasetModel(BaseModel):
column_name: str = Field(...)
@@ -20,4 +21,8 @@ class Config:
class UploadResponse(BaseModel):
id: str
name: str
created_date: str
created_at: str


class DeleteDatasets(BaseModel):
dataset_ids: List[str]
40 changes: 33 additions & 7 deletions agenta-backend/agenta_backend/routers/dataset_router.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import os
from fastapi import HTTPException, APIRouter, UploadFile, File, Form
from fastapi import HTTPException, APIRouter, UploadFile, File, Form, Body
from agenta_backend.services.db_mongo import datasets
from agenta_backend.models.api.dataset_model import DatasetModel, UploadResponse
from agenta_backend.models.api.dataset_model import UploadResponse, DeleteDatasets
from datetime import datetime
from typing import Optional
from typing import Optional, List
from bson import ObjectId
import csv

@@ -13,7 +13,7 @@


@router.post('/upload', response_model=UploadResponse)
async def upload_file(file: UploadFile = File(...), dataset_name: Optional[str] = File(...), app_name:str = Form(None)):
async def upload_file(file: UploadFile = File(...), dataset_name: Optional[str] = File(None), app_name:str = Form(None)):
"""
Uploads a CSV file and saves its data to MongoDB.
@@ -33,7 +33,7 @@ async def upload_file(file: UploadFile = File(...), dataset_name: Optional[str]

# Create a document with the CSV data
document = {
"created_date": datetime.now().isoformat(),
"created_at": datetime.now().isoformat(),
"name": dataset_name if dataset_name else file.filename,
"app_name": app_name,
"csvdata": []
@@ -51,7 +51,7 @@ async def upload_file(file: UploadFile = File(...), dataset_name: Optional[str]
return UploadResponse(
id=str(result.inserted_id),
name=document["name"],
created_date=document["created_date"]
created_at=document["created_at"]
)
except Exception as e:
print(e)
@@ -71,7 +71,7 @@ async def get_datasets(app_name: Optional[str] = None):
Raises:
- `HTTPException` with status code 404 if no datasets are found.
"""
cursor = datasets.find({"app_name": app_name}, {"_id": 1, "name": 1, "created_date": 1})
cursor = datasets.find({"app_name": app_name}, {"_id": 1, "name": 1, "created_at": 1})
documents = await cursor.to_list(length=100)
for document in documents:
document['_id'] = str(document['_id'])
@@ -96,3 +96,29 @@ async def get_dataset(dataset_id: str):
return dataset
else:
raise HTTPException(status_code=404, detail=f"dataset with id {dataset_id} not found")


@router.delete("/", response_model=List[str])
async def delete_datasets(deleteDatasets: DeleteDatasets):
"""
Delete specific datasets based on their unique IDs.
Args:
dataset_ids (List[str]): The unique identifiers of the datasets to delete.
Returns:
A list of the deleted datasets' IDs.
"""
deleted_ids = []

for dataset_id in deleteDatasets.dataset_ids:
dataset = await datasets.find_one({'_id': ObjectId(dataset_id)})

if dataset is not None:
result = await datasets.delete_one({'_id': ObjectId(dataset_id)})
if result:
deleted_ids.append(dataset_id)
else:
raise HTTPException(status_code=404, detail=f"Dataset {dataset_id} not found")

return deleted_ids
4 changes: 2 additions & 2 deletions agenta-web/src/lib/Types.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
export interface Dataset {
id: string;
_id: string;
name: string;
created_date?: string;
created_at: string;
}

export interface AppVariant {
15 changes: 15 additions & 0 deletions agenta-web/src/lib/services/api.ts
Original file line number Diff line number Diff line change
@@ -119,6 +119,21 @@ export const loadDatasetsList = (app_name: string) => {
}
};

export const deleteDatasets = async (ids: string[]) => {
try {
const response = await axios({
method: 'delete',
url: `${API_BASE_URL}/api/datasets`,
data: { dataset_ids: ids },
});
if (response.status === 200) {
return response.data;
}
} catch (error) {
console.error(`Error deleting entity: ${error}`);
throw error;
}
};

const eval_endpoint = axios.create({
baseURL: `${API_BASE_URL}/api/app_evaluations`,

0 comments on commit 514f022

Please sign in to comment.