|
@@ -14,16 +14,19 @@ from app.schemas.common import DeleteResponse
|
|
|
from app.services.file.file import BaseFileService
|
|
|
import json
|
|
|
|
|
|
+
|
|
|
class OSSFileService(BaseFileService):
|
|
|
@staticmethod
|
|
|
def get_file_list_by_ids(*, session: Session, file_ids: List[str]) -> List[File]:
|
|
|
if not file_ids:
|
|
|
return []
|
|
|
- statement = select(File).where(col(File.id).in_(json.loads(file_ids)))
|
|
|
+ statement = select(File).where(col(File.id).in_(file_ids))
|
|
|
return session.execute(statement).scalars().all()
|
|
|
|
|
|
@staticmethod
|
|
|
- async def get_file_list(*, session: AsyncSession, purpose: str, file_ids: List[str]) -> List[File]:
|
|
|
+ async def get_file_list(
|
|
|
+ *, session: AsyncSession, purpose: str, file_ids: List[str]
|
|
|
+ ) -> List[File]:
|
|
|
statement = select(File)
|
|
|
if purpose is not None and len(purpose) > 0:
|
|
|
statement = statement.where(File.purpose == purpose)
|
|
@@ -34,7 +37,9 @@ class OSSFileService(BaseFileService):
|
|
|
return result.scalars().all()
|
|
|
|
|
|
@staticmethod
|
|
|
- async def create_file(*, session: AsyncSession, purpose: str, file: UploadFile) -> File:
|
|
|
+ async def create_file(
|
|
|
+ *, session: AsyncSession, purpose: str, file: UploadFile
|
|
|
+ ) -> File:
|
|
|
# 文件是否存在
|
|
|
# statement = (
|
|
|
# select(File)
|
|
@@ -52,7 +57,9 @@ class OSSFileService(BaseFileService):
|
|
|
storage.save(filename=file_key, data=file.file.read())
|
|
|
|
|
|
# 存储
|
|
|
- db_file = File(purpose=purpose, filename=file.filename, bytes=file.size, key=file_key)
|
|
|
+ db_file = File(
|
|
|
+ purpose=purpose, filename=file.filename, bytes=file.size, key=file_key
|
|
|
+ )
|
|
|
session.add(db_file)
|
|
|
await session.commit()
|
|
|
await session.refresh(db_file)
|
|
@@ -68,7 +75,9 @@ class OSSFileService(BaseFileService):
|
|
|
return ext_file
|
|
|
|
|
|
@staticmethod
|
|
|
- async def get_file_content(*, session: AsyncSession, file_id: str) -> Tuple[Union[bytes, Generator], str]:
|
|
|
+ async def get_file_content(
|
|
|
+ *, session: AsyncSession, file_id: str
|
|
|
+ ) -> Tuple[Union[bytes, Generator], str]:
|
|
|
ext_file = await OSSFileService.get_file(session=session, file_id=file_id)
|
|
|
file_data = storage.load(ext_file.key)
|
|
|
return file_data, ext_file.filename
|