job_jdbc_datasource.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  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. from app.common.decorators import verify_admin, verify_all, verify_special, verify_super_admin
  7. import app.crud as crud
  8. from utils.sx_time import sxtimeit
  9. from utils.sx_web import web_try
  10. from fastapi_pagination import Page, add_pagination, paginate, Params
  11. from app import get_db
  12. router = APIRouter(
  13. prefix="/jpt/datasource",
  14. tags=["datasource-数据源管理"],
  15. )
  16. @router.post("/test", dependencies=[Depends(verify_super_admin)])
  17. @web_try()
  18. @sxtimeit
  19. def test_datasource_connection(ds: schemas.JobJdbcDatasourceCreate, db: Session = Depends(get_db)):
  20. return crud.test_datasource_connection(db, ds)
  21. @router.post("/preview", dependencies=[Depends(verify_special)])
  22. @web_try()
  23. @sxtimeit
  24. def get_preview_data(ds_id: int, table_name: str, limit: int = 100, db: Session = Depends(get_db)):
  25. return crud.get_preview_data(db, ds_id, table_name, limit)
  26. @router.post("/table_names", description="获取所有表名", dependencies=[Depends(verify_special)])
  27. @web_try()
  28. @sxtimeit
  29. def get_table_names(ds_id: int, db: Session = Depends(get_db)):
  30. return crud.get_table_names(db, ds_id)
  31. @router.post("/table_schema", description="获取表结构信息", dependencies=[Depends(verify_special)])
  32. @web_try()
  33. @sxtimeit
  34. def get_table_schema(ds_id: int, table_name: str, db: Session = Depends(get_db)):
  35. return crud.get_table_schema(db, ds_id, table_name)
  36. @router.post("/", dependencies=[Depends(verify_super_admin)])
  37. @web_try()
  38. @sxtimeit
  39. def create_datasource(ds: schemas.JobJdbcDatasourceCreate, db: Session = Depends(get_db)):
  40. return crud.create_job_jdbc_datasource(db, ds)
  41. @router.get("/", dependencies=[Depends(verify_special)])
  42. @web_try()
  43. @sxtimeit
  44. def get_datasources(datasource_type: Optional[str] = None, params: Params=Depends(), db: Session = Depends(get_db)):
  45. return paginate(crud.get_job_jdbc_datasources(db, datasource_type), params)
  46. @router.get("/info", dependencies=[Depends(verify_special)])
  47. @web_try()
  48. @sxtimeit
  49. def get_datasources_info(ds_id: int, db: Session = Depends(get_db)):
  50. return crud.get_job_jdbc_datasources_info(db, ds_id)
  51. @router.put("/{ds_id}", dependencies=[Depends(verify_super_admin)])
  52. @web_try()
  53. @sxtimeit
  54. def update_datasource(ds_id: int, ds: schemas.JobJdbcDatasourceUpdate, db: Session = Depends(get_db)):
  55. return crud.update_job_jdbc_datasources(db, ds_id, ds)
  56. @router.delete("/{ds_id}", dependencies=[Depends(verify_super_admin)])
  57. @web_try()
  58. @sxtimeit
  59. def delete_job_jdbc_datasource(ds_id: int, db: Session = Depends(get_db)):
  60. return crud.delete_job_jdbc_datasource(db, ds_id)
  61. @router.post("/import_datalake", dependencies=[Depends(verify_super_admin)])
  62. @web_try()
  63. @sxtimeit
  64. def import_datalake(item: schemas.ImportDataLake, db: Session = Depends(get_db)):
  65. return crud.import_datalake(db, item)
  66. @router.put("/update_datalake/{dl_id}", dependencies=[Depends(verify_super_admin)])
  67. @web_try()
  68. @sxtimeit
  69. def update_datalake(dl_id: int,item: schemas.ImportDataLake, db: Session = Depends(get_db)):
  70. return crud.update_datalake(db, dl_id, item)
  71. @router.delete("/delete_datalake/{dl_id}", dependencies=[Depends(verify_super_admin)])
  72. @web_try()
  73. @sxtimeit
  74. def delete_datalake(dl_id: int, db: Session = Depends(get_db)):
  75. return crud.delete_datalake(db, dl_id)
  76. @router.post("/share_ailab", dependencies=[Depends(verify_special)])
  77. @web_try()
  78. @sxtimeit
  79. def share_ailab(item: schemas.ShareAilab, db: Session = Depends(get_db)):
  80. return crud.share_ailab(db, item)
  81. @router.post("/create_table", dependencies=[Depends(verify_all)])
  82. @web_try()
  83. @sxtimeit
  84. def create_table(item: schemas.CreateAilab, db: Session = Depends(get_db)):
  85. return crud.create_table(db, item)
  86. @router.get("/ailab_table", dependencies=[Depends(verify_all)])
  87. @web_try()
  88. @sxtimeit
  89. def get_ailab_table(project_id: int, db: Session = Depends(get_db)):
  90. return crud.get_ailab_table(db, project_id)
  91. @router.get("/ailab_table_schema", dependencies=[Depends(verify_all)])
  92. @web_try()
  93. @sxtimeit
  94. def get_ailab_table_schema(table_name: str, db: Session = Depends(get_db)):
  95. return crud.get_ailab_table_schema(db, table_name)
  96. @router.get("/preview_ailab_table", dependencies=[Depends(verify_all)])
  97. @web_try()
  98. @sxtimeit
  99. def get_preview_ailab_table(table_name: str, db: Session = Depends(get_db)):
  100. return crud.get_preview_ailab_table(db, table_name)
  101. @router.get("/lake_table", dependencies=[Depends(verify_special)])
  102. @web_try()
  103. @sxtimeit
  104. def get_lake_table(project_id: int, db: Session = Depends(get_db)):
  105. return crud.get_lake_table(db, project_id)
  106. @router.get("/lake_table_info", dependencies=[Depends(verify_special)])
  107. @web_try()
  108. @sxtimeit
  109. def get_lake_table_info(dl_id: int, db: Session = Depends(get_db)):
  110. return crud.get_lake_table_info(db, dl_id)
  111. @router.get("/lake_table_schema", dependencies=[Depends(verify_special)])
  112. @web_try()
  113. @sxtimeit
  114. def get_lake_table_schema(table_name: str, db: Session = Depends(get_db)):
  115. return crud.get_ailab_table_schema(db, table_name)
  116. @router.get("/preview_lake_table", dependencies=[Depends(verify_special)])
  117. @web_try()
  118. @sxtimeit
  119. def get_preview_lake_table(table_name: str, db: Session = Depends(get_db)):
  120. return crud.get_preview_ailab_table(db, table_name)
  121. add_pagination(router)