data_management.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from asyncio import current_task
  2. from re import A
  3. import time
  4. from typing import Optional
  5. from fastapi import APIRouter
  6. from fastapi import Depends
  7. from sqlalchemy.orm import Session
  8. from app import schemas
  9. import app.crud as crud
  10. from app.services.dag import get_tmp_table_name
  11. from utils.sx_time import sxtimeit
  12. from utils.sx_web import web_try
  13. from app.common.hive import hiveDs
  14. from app import get_db
  15. router = APIRouter(
  16. prefix="/jpt/datamanagement",
  17. tags=["datamanagement-数据管理"],
  18. )
  19. @router.post("/")
  20. @web_try()
  21. @sxtimeit
  22. def create_data_management(item: schemas.DataManagementCreate, db: Session = Depends(get_db)):
  23. current_time = int(time.time())
  24. table_name = f'project{item.project_id.lower()}_user{item.user_id.lower()}_{item.name.lower()}_{current_time}'
  25. tmp_table_name = get_tmp_table_name(item.dag_uuid, item.node_id, str(item.out_pin), db)
  26. # 执行临时表的转存,目前还不能,先将临时表名存入
  27. res = crud.create_data_management(db, item, tmp_table_name)
  28. return res
  29. @router.get("/")
  30. @web_try()
  31. @sxtimeit
  32. def get_data_managements(user_id: str, project_id: str, db: Session = Depends(get_db)):
  33. return crud.get_data_managements(db, user_id, project_id)
  34. @router.get("/local")
  35. @web_try()
  36. @sxtimeit
  37. def get_local_data_managements(db: Session = Depends(get_db)):
  38. return hiveDs.list_tables()
  39. @router.get("/table_schema")
  40. @web_try()
  41. @sxtimeit
  42. def get_data_managements_schema(table_name: str, db: Session = Depends(get_db)):
  43. return hiveDs.get_table_schema(table_name)
  44. @router.delete("/")
  45. @web_try()
  46. @sxtimeit
  47. def delete_data_management(data_management_id: int, db: Session = Depends(get_db)):
  48. data_management = crud.delete_data_management(db, data_management_id)
  49. return data_management
  50. @router.get("/table_content")
  51. @web_try()
  52. @sxtimeit
  53. def get_data_management_content(table_name: str, page: Optional[int] = 0, size: Optional[int] = 100, db: Session = Depends(get_db)):
  54. result = hiveDs.get_preview_data(table_name,limit=size,page=page)
  55. data_num = hiveDs.get_data_num(table_name)
  56. result.update({'total':data_num})
  57. return result