|
@@ -1,5 +1,5 @@
|
|
|
from asyncio import current_task
|
|
|
-from re import A
|
|
|
+from re import A, I
|
|
|
import time
|
|
|
from typing import Optional
|
|
|
from fastapi import APIRouter
|
|
@@ -10,7 +10,8 @@ from app import schemas
|
|
|
|
|
|
import app.crud as crud
|
|
|
from app.services.dag import get_tmp_table_name
|
|
|
-from app.utils.send_util import data_transfer_run
|
|
|
+from app.utils.send_util import data_transfer_run, get_data_transfer_run_status
|
|
|
+from constants.constants import RUN_STATUS
|
|
|
from utils.sx_time import sxtimeit
|
|
|
from utils.sx_web import web_try
|
|
|
from app.common.hive import hiveDs
|
|
@@ -32,9 +33,14 @@ def create_data_management(item: schemas.DataManagementCreate, db: Session = Dep
|
|
|
current_time = int(time.time())
|
|
|
table_name = f'project{item.project_id.lower()}_user{item.user_id.lower()}_{item.name.lower()}_{current_time}'
|
|
|
tmp_table_name = get_tmp_table_name(item.dag_uuid, item.node_id, str(item.out_pin), db)
|
|
|
- af_run_id = data_transfer_run(tmp_table_name, table_name)
|
|
|
- res = crud.create_data_management(db, item, table_name)
|
|
|
- return res
|
|
|
+ af_run_res = data_transfer_run(tmp_table_name, table_name)
|
|
|
+ af_run = af_run_res['data'] if 'data' in af_run_res.keys() else None
|
|
|
+ af_run_id = af_run['af_run_id'] if af_run and 'af_run_id' in af_run.keys() else None
|
|
|
+ if af_run_id:
|
|
|
+ res = crud.create_data_management(db, item, table_name, af_run_id)
|
|
|
+ return res
|
|
|
+ else:
|
|
|
+ raise Exception('中间结果转存失败')
|
|
|
|
|
|
|
|
|
@router.get("/")
|
|
@@ -42,9 +48,26 @@ def create_data_management(item: schemas.DataManagementCreate, db: Session = Dep
|
|
|
@sxtimeit
|
|
|
def get_data_managements(user_id: str, project_id: str, db: Session = Depends(get_db)):
|
|
|
res = crud.get_data_managements(db, user_id, project_id)
|
|
|
+ data_management_list = []
|
|
|
for item in res:
|
|
|
item.table_name = f'{database_name}.{item.table_name}'
|
|
|
- return res
|
|
|
+ data_management_list.append(item)
|
|
|
+ return data_management_list
|
|
|
+
|
|
|
+@router.get("/info")
|
|
|
+@web_try()
|
|
|
+@sxtimeit
|
|
|
+def get_data_management_info(id: int, db: Session = Depends(get_db)):
|
|
|
+ item = crud.get_data_management_info(db, id)
|
|
|
+ if item.status == 1:
|
|
|
+ transfer_run_res = get_data_transfer_run_status(item.af_run_id)
|
|
|
+ transfer_run = transfer_run_res['data'] if 'data' in transfer_run_res.keys() else None
|
|
|
+ transfer_run_status = transfer_run['status'] if transfer_run and 'status' in transfer_run.keys() else None
|
|
|
+ if transfer_run_status:
|
|
|
+ item = crud.update_data_management_status(db, item.id, RUN_STATUS[transfer_run_status])
|
|
|
+ item.table_name = f'{database_name}.{item.table_name}'
|
|
|
+ return item
|
|
|
+
|
|
|
|
|
|
@router.get("/local")
|
|
|
@web_try()
|