完成项目推理模块的接口测试
This commit is contained in:
@ -27,25 +27,27 @@ class ProjectDetectDal(DalBase):
|
||||
self.model = models.ProjectDetect
|
||||
self.schema = schemas.ProjectDetectOut
|
||||
|
||||
async def check_name(self, name: str,project_id: int) -> bool:
|
||||
async def check_name(self, name: str, project_id: int) -> bool:
|
||||
"""
|
||||
校验推理集合名称
|
||||
"""
|
||||
count = self.get_count(
|
||||
count = await self.get_count(
|
||||
v_where=[models.ProjectDetect.project_id == project_id, models.ProjectDetect.detect_name == name])
|
||||
return count > 0
|
||||
|
||||
async def add_detect(self, data: schemas.ProjectDetectIn):
|
||||
async def add_detect(self, data: schemas.ProjectDetectIn, user_id: int):
|
||||
"""
|
||||
新增集合
|
||||
"""
|
||||
detect = models.ProjectDetect(**data.model_dump())
|
||||
detect = self.model(**data.model_dump())
|
||||
detect.detect_no = random_str(6)
|
||||
detect.detect_version = 0
|
||||
detect.detect_status = '0'
|
||||
url = os.create_folder(detect_url, detect.detect_no, 'images')
|
||||
detect.folder_url = url
|
||||
await self.create_data(data)
|
||||
detect.user_id = user_id
|
||||
if detect.file_type != 'rtsp':
|
||||
url = os.create_folder(detect_url, detect.detect_no, 'images')
|
||||
detect.folder_url = url
|
||||
await self.create_model(detect)
|
||||
return detect
|
||||
|
||||
async def delete_detects(self, ids: list[int]):
|
||||
@ -55,10 +57,17 @@ class ProjectDetectDal(DalBase):
|
||||
for id_ in ids:
|
||||
detect_info = await self.get_data(data_id=id_)
|
||||
if detect_info.file_type != 'rtsp':
|
||||
os.delete_paths(detect_info.folder_url)
|
||||
logs = await ProjectDetectLogDal(self.db).get_datas(v_where=[models.ProjectDetectLog.detect_id == ids])
|
||||
os.delete_paths([detect_info.folder_url])
|
||||
logs = await ProjectDetectLogDal(self.db).get_datas(v_where=[models.ProjectDetectLog.detect_id == id_])
|
||||
log_ids = []
|
||||
log_urls = []
|
||||
for log in logs:
|
||||
os.delete_paths(log.folder_url)
|
||||
log_urls.append(log.folder_url)
|
||||
log_ids.append(log.id)
|
||||
if log_ids:
|
||||
await ProjectDetectLogDal(self.db).delete_datas(ids=log_ids, v_soft=False)
|
||||
if log_urls:
|
||||
os.delete_paths(log_urls)
|
||||
await self.delete_datas(ids=ids, v_soft=False)
|
||||
|
||||
|
||||
@ -71,10 +80,10 @@ class ProjectDetectFileDal(DalBase):
|
||||
self.schema = schemas.ProjectDetectFileOut
|
||||
|
||||
async def file_count(self, detect_id: int) -> int:
|
||||
count = self.get_count(v_where=[models.ProjectDetectFile.detect_id == detect_id])
|
||||
count = await self.get_count(v_where=[models.ProjectDetectFile.detect_id == detect_id])
|
||||
return count
|
||||
|
||||
async def add_file(self, detect: models.ProjectDetect, files: list[UploadFile]):
|
||||
async def add_files(self, detect: models.ProjectDetect, files: list[UploadFile], user_id: int):
|
||||
images = []
|
||||
obs = MyObs()
|
||||
for file in files:
|
||||
@ -83,23 +92,24 @@ class ProjectDetectFileDal(DalBase):
|
||||
image.file_name = file.filename
|
||||
# 保存原图
|
||||
path = os.save_images(detect.folder_url, file=file)
|
||||
image.image_url = path
|
||||
image.file_url = path
|
||||
image.user_id = user_id
|
||||
# 上传到obs
|
||||
object_key = detect.detect_no + '/' + file.filename
|
||||
success, key, url = obs.put_file(object_key=object_key, file_path=path)
|
||||
if success:
|
||||
image.object_key = object_key
|
||||
image.thumb_image_url = url
|
||||
image.thumb_file_url = url
|
||||
else:
|
||||
raise CustomException("obs上传失败", code=status.HTTP_ERROR)
|
||||
images.append(image)
|
||||
await self.create_datas(images)
|
||||
await self.create_models(images)
|
||||
|
||||
async def delete_files(self, ids: list[int]):
|
||||
file_urls = []
|
||||
object_keys = []
|
||||
for id_ in ids:
|
||||
file = self.get_data(data_id=id_)
|
||||
file = await self.get_data(data_id=id_)
|
||||
if file:
|
||||
file_urls.append(file.file_url)
|
||||
object_keys.append(file.object_key)
|
||||
@ -107,13 +117,14 @@ class ProjectDetectFileDal(DalBase):
|
||||
MyObs().del_objects(object_keys)
|
||||
await self.delete_datas(ids, v_soft=False)
|
||||
|
||||
|
||||
class ProjectDetectLogDal(DalBase):
|
||||
|
||||
def __init__(self, db: AsyncSession):
|
||||
super(ProjectDetectLogDal, self).__init__()
|
||||
self.db = db
|
||||
self.model = models.ProjectDetectLog
|
||||
self.schema = schemas.ProjectDetectLogSimpleOut
|
||||
self.schema = schemas.ProjectDetectLogOut
|
||||
|
||||
|
||||
class ProjectDetectLogFileDal(DalBase):
|
||||
|
Reference in New Issue
Block a user