81 lines
4.1 KiB
Python
81 lines
4.1 KiB
Python
# encoding: UTF-8
|
||
from .baseCrudController import BaseCrudController
|
||
from ..model.dataBuilderModel import DataBuilder, DataTask
|
||
from ..service.dataBuilderService import DataBuilderService
|
||
|
||
|
||
class DataBuilderController(BaseCrudController):
|
||
"""造数器与造数任务相关接口控制器。"""
|
||
|
||
def builder_list(self):
|
||
"""分页查询造数器列表,可按项目过滤。"""
|
||
filters = []
|
||
project_id = self._get(self.req_data, 'projectId')
|
||
if project_id:
|
||
filters.append(DataBuilder.project_id == int(project_id))
|
||
items, total = DataBuilderService.list_by_filters(self.session, DataBuilder, filters,
|
||
self._get(self.req_data, 'pageNo', default=1),
|
||
self._get(self.req_data, 'pageSize', default=20),
|
||
DataBuilder.created_time)
|
||
return {'list': self.serialize_list(items, ['is_delete']), 'total': total}
|
||
|
||
def builder_detail(self):
|
||
"""查询造数器详情。"""
|
||
builder_id = self._get(self.req_data, 'builderId', 'id')
|
||
if not builder_id:
|
||
return {}, 'builderId 为必传参数'
|
||
item = DataBuilderService.get_by_id(self.session, DataBuilder, builder_id)
|
||
if not item:
|
||
return {}, '未查询到对应造数器!'
|
||
return self.serialize(item, ['is_delete']), ''
|
||
|
||
def builder_create(self):
|
||
"""创建造数器,definition 保存流程编排或模板定义。"""
|
||
project_id = self._get(self.req_data, 'projectId')
|
||
name = self._get(self.req_data, 'name')
|
||
definition = self._get(self.req_data, 'definition')
|
||
if not project_id or not name or definition is None:
|
||
return 0, 'projectId、name、definition 为必传参数'
|
||
add_info = {'project_id': project_id, 'name': name, 'description': self._get(self.req_data, 'description'),
|
||
'builder_type': int(self._get(self.req_data, 'builderType', default=1)), 'definition': definition,
|
||
'input_schema': self._get(self.req_data, 'inputSchema'),
|
||
'output_example': self._get(self.req_data, 'outputExample'),
|
||
'created_by': self._get(self.req_data, 'createdBy'), 'is_delete': 0}
|
||
return DataBuilderService.create(self.session, DataBuilder, add_info)
|
||
|
||
def builder_update(self):
|
||
builder_id = self._get(self.req_data, 'builderId', 'id')
|
||
if not builder_id:
|
||
return 0, 'builderId 为必传参数'
|
||
update_info = {}
|
||
for req_key, column_key in [('name', 'name'), ('description', 'description'), ('builderType', 'builder_type'),
|
||
('definition', 'definition'), ('inputSchema', 'input_schema'),
|
||
('outputExample', 'output_example')]:
|
||
value = self._get(self.req_data, req_key)
|
||
if value is not None:
|
||
update_info[column_key] = value
|
||
return DataBuilderService.update_by_id(self.session, DataBuilder, builder_id, update_info)
|
||
|
||
def builder_delete(self):
|
||
builder_id = self._get(self.req_data, 'builderId', 'id')
|
||
if not builder_id:
|
||
return 0, 'builderId 为必传参数'
|
||
return DataBuilderService.delete_by_id(self.session, DataBuilder, builder_id)
|
||
|
||
def builder_execute(self):
|
||
builder_id = self._get(self.req_data, 'builderId')
|
||
if not builder_id:
|
||
return {}, 'builderId 为必传参数'
|
||
return DataBuilderService.execute_builder(self.session, builder_id,
|
||
self._get(self.req_data, 'params', default={}),
|
||
self._get(self.req_data, 'createdBy'))
|
||
|
||
def task_status(self):
|
||
task_id = self._get(self.req_data, 'taskId')
|
||
if not task_id:
|
||
return {}, 'taskId 为必传参数'
|
||
item = DataBuilderService.get_by_id(self.session, DataTask, task_id, soft_delete=False)
|
||
if not item:
|
||
return {}, '未查询到对应任务!'
|
||
return self.serialize(item), ''
|