feat: product barcode images
This commit is contained in:
@ -48,19 +48,51 @@ class ProductService(
|
||||
async def upload_image(
|
||||
self, product_id: int, upload_file: UploadFile
|
||||
) -> ProductUploadImageResponse:
|
||||
try:
|
||||
product: Product = await self.repository.get_by_id(product_id)
|
||||
s3_uploader = S3Uploader()
|
||||
product: Product = await self.repository.get_by_id(product_id)
|
||||
s3_uploader = S3Uploader()
|
||||
|
||||
if len(product.images) > 0:
|
||||
for image in product.images:
|
||||
s3_key = image.image_url.split("/")[-1]
|
||||
await s3_uploader.delete_image(s3_key)
|
||||
await self.repository.delete_images(product.images)
|
||||
|
||||
image_url = await s3_uploader.upload_from_upload_file_obj(upload_file)
|
||||
await self.repository.create_image(product_id, image_url)
|
||||
return ProductUploadImageResponse(
|
||||
ok=True, message="Изображение успешно загружено", image_url=image_url
|
||||
image_url = await s3_uploader.upload_from_upload_file_obj(upload_file)
|
||||
await self.repository.create_image(product_id, image_url)
|
||||
return ProductUploadImageResponse(
|
||||
message="Изображение успешно загружено", image_url=image_url
|
||||
)
|
||||
|
||||
async def upload_barcode_image(
|
||||
self, product_id: int, upload_file: UploadFile
|
||||
) -> BarcodeUploadImageResponse:
|
||||
product: Product = await self.repository.get_by_id(product_id)
|
||||
s3_uploader = S3Uploader()
|
||||
|
||||
if product.barcode_image:
|
||||
s3_key = product.barcode_image.image_url.split("/")[-1]
|
||||
await s3_uploader.delete_image(s3_key)
|
||||
await self.repository.delete_barcode_image(product.barcode_image)
|
||||
|
||||
image_url = await s3_uploader.upload_from_upload_file_obj(upload_file)
|
||||
await self.repository.create_barcode_image(product_id, image_url)
|
||||
return BarcodeUploadImageResponse(
|
||||
message="Изображение штрихкода успешно загружено", image_url=image_url
|
||||
)
|
||||
|
||||
async def delete_barcode_image(self, product_id: int) -> DeleteBarcodeImageResponse:
|
||||
product: Product = await self.repository.get_by_id(product_id)
|
||||
|
||||
if not product.barcode_image:
|
||||
return DeleteBarcodeImageResponse(
|
||||
message="У товара нет изображения штрихкода"
|
||||
)
|
||||
except Exception as e:
|
||||
return ProductUploadImageResponse(ok=False, message=str(e))
|
||||
|
||||
s3_uploader = S3Uploader()
|
||||
s3_key = product.barcode_image.image_url.split("/")[-1]
|
||||
await s3_uploader.delete_image(s3_key)
|
||||
await self.repository.delete_barcode_image(product.barcode_image, True)
|
||||
|
||||
return DeleteBarcodeImageResponse(
|
||||
message="Изображение штрихкода успешно удалено"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user