diff --git a/python/packages/server/src/officeconvert_server/models.py b/python/packages/server/src/officeconvert_server/models.py index bd6dc4c..e73b487 100644 --- a/python/packages/server/src/officeconvert_server/models.py +++ b/python/packages/server/src/officeconvert_server/models.py @@ -6,6 +6,7 @@ from dataclasses import dataclass, field from datetime import datetime, timezone from pathlib import Path from typing import Any +from officeconvertapi.v1 import conversion_pb2 def utc_now() -> datetime: """Return the current UTC timestamp with timezone information.""" @@ -20,7 +21,7 @@ class ConversionSession: source_filename: str bucket_name: str upload_object_key: str - status: int + status: conversion_pb2.ConversionStatus created_at: datetime = field(default_factory=utc_now) updated_at: datetime = field(default_factory=utc_now) error_message: str = "" diff --git a/python/packages/server/src/officeconvert_server/storage.py b/python/packages/server/src/officeconvert_server/storage.py index 1bdd215..49c5740 100644 --- a/python/packages/server/src/officeconvert_server/storage.py +++ b/python/packages/server/src/officeconvert_server/storage.py @@ -71,13 +71,24 @@ class S3Store: """Remove all objects in a bucket and then delete the bucket.""" objects = list(self._client.list_objects(bucket_name, recursive=True)) if objects: + delete_requests: list[DeleteObject] = [] + for obj in objects: + object_name = obj.object_name + if object_name is None: + raise RuntimeError( + "encountered unnamed object while removing bucket contents" + ) + delete_requests.append(DeleteObject(object_name)) + errors = self._client.remove_objects( bucket_name, - [DeleteObject(obj.object_name) for obj in objects], + delete_requests, ) for err in errors: + object_name = err.name or "" + message = err.message or err.code raise RuntimeError( - f"failed to delete object {err.object_name}: {err.message}" + f"failed to delete object {object_name}: {message}" ) try: self._client.remove_bucket(bucket_name)