From beac42d79c9befbae559aeb1917d6bd3b192fbcd Mon Sep 17 00:00:00 2001 From: toddn Date: Wed, 22 Jun 2022 11:16:51 -0500 Subject: [PATCH 1/4] back end added fields content_type and bytes to file object --- backend/app/models/files.py | 2 ++ backend/app/routers/datasets.py | 3 +++ 2 files changed, 5 insertions(+) diff --git a/backend/app/models/files.py b/backend/app/models/files.py index 0a22d4474..b990eae95 100644 --- a/backend/app/models/files.py +++ b/backend/app/models/files.py @@ -33,6 +33,8 @@ class FileDB(FileBase): folder_id: Optional[PyObjectId] views: int = 0 downloads: int = 0 + bytes: int = 0 + content_type: str = "N/A" class FileOut(FileDB): diff --git a/backend/app/routers/datasets.py b/backend/app/routers/datasets.py index 93588a04a..afcad0a9f 100644 --- a/backend/app/routers/datasets.py +++ b/backend/app/routers/datasets.py @@ -316,11 +316,14 @@ async def save_file( part_size=settings.MINIO_UPLOAD_CHUNK_SIZE, ) # async write chunk to minio version_id = response.version_id + bytes = len(fs.get_object(settings.MINIO_BUCKET_NAME, str(new_file_id)).data) if version_id is None: # TODO: This occurs in testing when minio is not running version_id = 999999999 fileDB.version_id = version_id fileDB.version_num = 1 + fileDB.bytes = bytes + fileDB.content_type = file.content_type print(fileDB) await db["files"].replace_one({"_id": ObjectId(new_file_id)}, fileDB.to_mongo()) From 809069e5249e0c43e9607a0a222a77e6a6083db7 Mon Sep 17 00:00:00 2001 From: toddn Date: Wed, 22 Jun 2022 11:26:22 -0500 Subject: [PATCH 2/4] adding new fields for file bytes content_type --- frontend/src/components/files/FileAbout.tsx | 4 +++- frontend/src/components/files/FilesTable.tsx | 4 ++-- frontend/src/openapi/v2/models/FileOut.ts | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/files/FileAbout.tsx b/frontend/src/components/files/FileAbout.tsx index 070a294fb..c16d3f6e0 100644 --- a/frontend/src/components/files/FileAbout.tsx +++ b/frontend/src/components/files/FileAbout.tsx @@ -9,7 +9,7 @@ type FileAboutProps = { } export function FileAbout(props: FileAboutProps) { - const {id, created, name, creator, version_id} = props.fileSummary; + const {id, created, name, creator, version_id, bytes, content_type} = props.fileSummary; return ( @@ -19,6 +19,8 @@ export function FileAbout(props: FileAboutProps) { Uploaded as: {name} Uploaded by: {creator.first_name} {creator.last_name} Latest Version: {version_id} + Size {bytes} bytes + Content Type: {content_type} ); } diff --git a/frontend/src/components/files/FilesTable.tsx b/frontend/src/components/files/FilesTable.tsx index 96743e26c..efdb7f005 100644 --- a/frontend/src/components/files/FilesTable.tsx +++ b/frontend/src/components/files/FilesTable.tsx @@ -83,8 +83,8 @@ export default function FilesTable(props: FilesTableProps) { {parseDate(file.created)} by {file.creator.first_name} {file.creator.last_name} - {file.size} - {file.contentType} + {file.bytes} + {file.content_type} )) } diff --git a/frontend/src/openapi/v2/models/FileOut.ts b/frontend/src/openapi/v2/models/FileOut.ts index ff4879917..f20067b9e 100644 --- a/frontend/src/openapi/v2/models/FileOut.ts +++ b/frontend/src/openapi/v2/models/FileOut.ts @@ -15,4 +15,6 @@ export type FileOut = { folder_id?: string; views?: number; downloads?: number; + content_type?: string; + bytes?: number; } From 9e79272c44e608481c7ad1dd18d685f544bf1b3b Mon Sep 17 00:00:00 2001 From: toddn Date: Tue, 28 Jun 2022 15:31:12 -0500 Subject: [PATCH 3/4] adding bytes and content type to file versions --- backend/app/models/files.py | 2 ++ backend/app/routers/datasets.py | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/app/models/files.py b/backend/app/models/files.py index b990eae95..926fac105 100644 --- a/backend/app/models/files.py +++ b/backend/app/models/files.py @@ -13,6 +13,8 @@ class FileVersion(MongoModel): version_num: int = 1 file_id: PyObjectId creator: UserOut + bytes: int = 0 + content_type: str = "N/A" created: datetime = Field(default_factory=datetime.utcnow) diff --git a/backend/app/routers/datasets.py b/backend/app/routers/datasets.py index afcad0a9f..36beac957 100644 --- a/backend/app/routers/datasets.py +++ b/backend/app/routers/datasets.py @@ -317,13 +317,14 @@ async def save_file( ) # async write chunk to minio version_id = response.version_id bytes = len(fs.get_object(settings.MINIO_BUCKET_NAME, str(new_file_id)).data) + content_type = file.content_type if version_id is None: # TODO: This occurs in testing when minio is not running version_id = 999999999 fileDB.version_id = version_id fileDB.version_num = 1 fileDB.bytes = bytes - fileDB.content_type = file.content_type + fileDB.content_type = content_type print(fileDB) await db["files"].replace_one({"_id": ObjectId(new_file_id)}, fileDB.to_mongo()) @@ -332,6 +333,8 @@ async def save_file( version_id=version_id, file_id=new_file_id, creator=user, + bytes=bytes, + content_type=content_type ) await db["file_versions"].insert_one(new_version.to_mongo()) return fileDB From ccddc5f557d9753ddb249b225f5e8aaa08eaa682 Mon Sep 17 00:00:00 2001 From: Chen Wang Date: Wed, 13 Jul 2022 10:37:31 -0500 Subject: [PATCH 4/4] codegen; fix small bugs --- frontend/src/components/files/FileAbout.tsx | 2 +- frontend/src/components/files/FilesTable.tsx | 8 ++++---- frontend/src/openapi/v2/models/FileOut.ts | 2 +- frontend/src/openapi/v2/models/FileVersion.ts | 2 ++ .../src/openapi/v2/services/FilesService.ts | 18 ++++++++++++++++++ .../openapi/v2/services/MetadataService.ts | 19 +++++++++++++++++++ 6 files changed, 45 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/files/FileAbout.tsx b/frontend/src/components/files/FileAbout.tsx index c16d3f6e0..88c0fe0c8 100644 --- a/frontend/src/components/files/FileAbout.tsx +++ b/frontend/src/components/files/FileAbout.tsx @@ -19,7 +19,7 @@ export function FileAbout(props: FileAboutProps) { Uploaded as: {name} Uploaded by: {creator.first_name} {creator.last_name} Latest Version: {version_id} - Size {bytes} bytes + Size: {bytes} bytes Content Type: {content_type} ); diff --git a/frontend/src/components/files/FilesTable.tsx b/frontend/src/components/files/FilesTable.tsx index a17f97f7d..8a72acbce 100644 --- a/frontend/src/components/files/FilesTable.tsx +++ b/frontend/src/components/files/FilesTable.tsx @@ -48,8 +48,8 @@ export default function FilesTable(props: FilesTableProps) { Name Updated - {/*Size*/} - {/*Type*/} + Size + Type @@ -83,8 +83,8 @@ export default function FilesTable(props: FilesTableProps) { {parseDate(file.created)} by {file.creator.first_name} {file.creator.last_name} - {file.size} - {file.contentType} + {file.bytes} bytes + {file.content_type} )) } diff --git a/frontend/src/openapi/v2/models/FileOut.ts b/frontend/src/openapi/v2/models/FileOut.ts index f20067b9e..51394d786 100644 --- a/frontend/src/openapi/v2/models/FileOut.ts +++ b/frontend/src/openapi/v2/models/FileOut.ts @@ -15,6 +15,6 @@ export type FileOut = { folder_id?: string; views?: number; downloads?: number; - content_type?: string; bytes?: number; + content_type?: string; } diff --git a/frontend/src/openapi/v2/models/FileVersion.ts b/frontend/src/openapi/v2/models/FileVersion.ts index b459ded90..eb2177be8 100644 --- a/frontend/src/openapi/v2/models/FileVersion.ts +++ b/frontend/src/openapi/v2/models/FileVersion.ts @@ -10,5 +10,7 @@ export type FileVersion = { version_num?: number; file_id: string; creator: UserOut; + bytes?: number; + content_type?: string; created?: string; } diff --git a/frontend/src/openapi/v2/services/FilesService.ts b/frontend/src/openapi/v2/services/FilesService.ts index ebed8f4cd..f958674b8 100644 --- a/frontend/src/openapi/v2/services/FilesService.ts +++ b/frontend/src/openapi/v2/services/FilesService.ts @@ -111,4 +111,22 @@ export class FilesService { }); } + /** + * Get File Extract + * @param fileId + * @returns any Successful Response + * @throws ApiError + */ + public static getFileExtractApiV2FilesFileIdExtractPost( + fileId: string, + ): CancelablePromise { + return __request({ + method: 'POST', + path: `/api/v2/files/${fileId}/extract`, + errors: { + 422: `Validation Error`, + }, + }); + } + } \ No newline at end of file diff --git a/frontend/src/openapi/v2/services/MetadataService.ts b/frontend/src/openapi/v2/services/MetadataService.ts index 880970764..a49bea77e 100644 --- a/frontend/src/openapi/v2/services/MetadataService.ts +++ b/frontend/src/openapi/v2/services/MetadataService.ts @@ -61,6 +61,25 @@ export class MetadataService { }); } + /** + * Delete Metadata + * Delete metadata by specific ID. + * @param metadataId + * @returns any Successful Response + * @throws ApiError + */ + public static deleteMetadataApiV2MetadataMetadataIdDelete( + metadataId: string, + ): CancelablePromise { + return __request({ + method: 'DELETE', + path: `/api/v2/metadata/${metadataId}`, + errors: { + 422: `Validation Error`, + }, + }); + } + /** * Update Metadata * Update metadata. Any fields provided in the contents JSON will be added or updated in the metadata. If context or