jm_homework.py 2.9 KB

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