jm_homework.py 2.6 KB

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