jm_homework.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. from re import S
  2. from typing import Optional
  3. from fastapi import APIRouter
  4. from fastapi import Depends
  5. from sqlalchemy.orm import Session
  6. from app import schemas
  7. from app.common.hive import hiveDs
  8. from app.crud import jm_homework
  9. from app.services.jm_homework import create_jm_homework_services, update_jm_homework_service
  10. from app.services.jm_job import red_dag_and_format
  11. from utils.sx_time import sxtimeit
  12. from utils.sx_web import web_try
  13. from fastapi_pagination import Page, add_pagination, paginate, Params
  14. import app.crud as crud
  15. from app import get_db
  16. from configs.settings import DefaultOption, config
  17. DATABASE_NAME = config.get('HIVE', 'DATABASE_NAME')
  18. router = APIRouter(
  19. prefix="/jpt/jm_homework",
  20. tags=["jm_homework-作业管理"],
  21. )
  22. @router.post("/")
  23. @web_try()
  24. @sxtimeit
  25. def create_jm_homework(item: schemas.JmHomeworkCreate, db: Session = Depends(get_db)):
  26. return create_jm_homework_services(db, item)
  27. @router.get("/")
  28. @web_try()
  29. @sxtimeit
  30. def get_jm_homeworks(project_id: str, db: Session = Depends(get_db)):
  31. return crud.get_jm_homeworks(db, project_id)
  32. @router.get("/info")
  33. @web_try()
  34. @sxtimeit
  35. def get_jm_homework_info(homework_id: str, db: Session = Depends(get_db)):
  36. return crud.get_jm_homework_info(db, homework_id)
  37. @router.put("/")
  38. @web_try()
  39. @sxtimeit
  40. def update_jm_homework(jm_id: int, update_item: schemas.JmHomeworkUpdate, db: Session = Depends(get_db)):
  41. return update_jm_homework_service(db, jm_id, update_item)
  42. @router.delete("/")
  43. @web_try()
  44. @sxtimeit
  45. def delete_jm_homework(jm_id: int, db: Session = Depends(get_db)):
  46. jm_log_infos = crud.get_jm_job_infos(db)
  47. jm_job_ids = [jm_job.id for jm_job in jm_log_infos]
  48. res = crud.find_by_homework_and_job(db, jm_job_ids,jm_id)
  49. if len(res) > 0:
  50. raise Exception("该作业正在被定时任务使用,不可删除")
  51. return crud.delete_jm_homework(db, jm_id)
  52. @router.get("/test")
  53. def get_test_dag(db: Session = Depends(get_db)):
  54. jm_homework = crud.get_jm_homework_info(db, 83)
  55. res = red_dag_and_format(jm_homework, db)
  56. return res
  57. @router.get("/local_source")
  58. @web_try()
  59. @sxtimeit
  60. def get_local_source():
  61. return [{
  62. 'database_name': DATABASE_NAME,
  63. 'datasource': "hive",
  64. 'datasource_name': DATABASE_NAME,
  65. 'id': -1
  66. }]
  67. @router.get("/local_source_table")
  68. @web_try()
  69. @sxtimeit
  70. def get_local_source_table():
  71. t_list = hiveDs.list_tables()
  72. return t_list
  73. @router.get("/local_source_table_schema")
  74. @web_try()
  75. @sxtimeit
  76. def get_local_source_table_schema(table_name: str, db: Session = Depends(get_db)):
  77. return hiveDs.get_table_schema(table_name)