job_jdbc_datasource.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. from typing import Optional
  2. from fastapi import APIRouter
  3. from fastapi import Depends
  4. from sqlalchemy.orm import Session
  5. from app import schemas
  6. import app.crud as crud
  7. from utils.sx_time import sxtimeit
  8. from utils.sx_web import web_try
  9. from fastapi_pagination import Page, add_pagination, paginate, Params
  10. from app import get_db
  11. router = APIRouter(
  12. prefix="/jpt/datasource",
  13. tags=["datasource-数据源管理"],
  14. )
  15. @router.post("/test")
  16. @web_try()
  17. @sxtimeit
  18. def test_datasource_connection(ds: schemas.JobJdbcDatasourceCreate, db: Session = Depends(get_db)):
  19. return crud.test_datasource_connection(db, ds)
  20. @router.post("/preview")
  21. @web_try()
  22. @sxtimeit
  23. def get_preview_data(ds_id: int, table_name: str, limit: int = 100, db: Session = Depends(get_db)):
  24. return crud.get_preview_data(db, ds_id, table_name, limit)
  25. @router.post("/table_names", description="获取所有表名")
  26. @web_try()
  27. @sxtimeit
  28. def get_table_names(ds_id: int, db: Session = Depends(get_db)):
  29. return crud.get_table_names(db, ds_id)
  30. @router.post("/table_schema", description="获取表结构信息")
  31. @web_try()
  32. @sxtimeit
  33. def get_table_schema(ds_id: int, table_name: str, db: Session = Depends(get_db)):
  34. return crud.get_table_schema(db, ds_id, table_name)
  35. @router.post("/")
  36. @web_try()
  37. @sxtimeit
  38. def create_datasource(ds: schemas.JobJdbcDatasourceCreate, db: Session = Depends(get_db)):
  39. return crud.create_job_jdbc_datasource(db, ds)
  40. @router.get("/")
  41. @web_try()
  42. @sxtimeit
  43. def get_datasources(datasource_type: Optional[str] = None, params: Params=Depends(), db: Session = Depends(get_db)):
  44. return paginate(crud.get_job_jdbc_datasources(db, datasource_type), params)
  45. @router.get("/info")
  46. @web_try()
  47. @sxtimeit
  48. def get_datasources_info(ds_id: int, db: Session = Depends(get_db)):
  49. return crud.get_job_jdbc_datasources_info(db, ds_id)
  50. @router.put("/{ds_id}")
  51. @web_try()
  52. @sxtimeit
  53. def update_datasource(ds_id: int, ds: schemas.JobJdbcDatasourceUpdate, db: Session = Depends(get_db)):
  54. return crud.update_job_jdbc_datasources(db, ds_id, ds)
  55. @router.delete("/{ds_id}")
  56. @web_try()
  57. @sxtimeit
  58. def delete_job_jdbc_datasource(ds_id: int, db: Session = Depends(get_db)):
  59. return crud.delete_job_jdbc_datasource(db, ds_id)
  60. add_pagination(router)