|
@@ -1,18 +1,14 @@
|
|
|
from typing import Optional
|
|
|
-from fastapi import APIRouter
|
|
|
-
|
|
|
-from fastapi import Depends
|
|
|
+from fastapi import APIRouter, Depends
|
|
|
from sqlalchemy.orm import Session
|
|
|
-from app import schemas
|
|
|
-from app.common.decorators import verify_admin, verify_all, verify_special, verify_super_admin
|
|
|
-
|
|
|
import app.crud as crud
|
|
|
from utils.sx_time import sxtimeit
|
|
|
from utils.sx_web import web_try
|
|
|
from fastapi_pagination import Page, add_pagination, paginate, Params
|
|
|
-
|
|
|
-from app import get_db
|
|
|
-
|
|
|
+from app.common.security.auth import verify_super_admin, verify_special, verify_users
|
|
|
+from app import schemas, get_db
|
|
|
+from configs.settings import DefaultOption, config
|
|
|
+DATABASE_NAME = config.get('HIVE', 'DATABASE_NAME')
|
|
|
|
|
|
|
|
|
router = APIRouter(
|
|
@@ -21,134 +17,146 @@ router = APIRouter(
|
|
|
)
|
|
|
|
|
|
|
|
|
-@router.post("/test", dependencies=[Depends(verify_super_admin)])
|
|
|
+@router.post("/test")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def test_datasource_connection(ds: schemas.JobJdbcDatasourceCreate, db: Session = Depends(get_db)):
|
|
|
+def test_datasource_connection(ds: schemas.JobJdbcDatasourceCreate,\
|
|
|
+ token_data: schemas.TokenData = Depends(verify_super_admin),\
|
|
|
+ db: Session = Depends(get_db)):
|
|
|
return crud.test_datasource_connection(db, ds)
|
|
|
|
|
|
|
|
|
-@router.post("/preview", dependencies=[Depends(verify_special)])
|
|
|
+@router.post("/preview")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def get_preview_data(ds_id: int, table_name: str, limit: int = 100, db: Session = Depends(get_db)):
|
|
|
+def get_preview_data(ds_id: int, table_name: str, limit: int = 100, token_data: schemas.TokenData = Depends(verify_special), db: Session = Depends(get_db)):
|
|
|
return crud.get_preview_data(db, ds_id, table_name, limit)
|
|
|
|
|
|
|
|
|
-@router.post("/table_names", description="获取所有表名", dependencies=[Depends(verify_special)])
|
|
|
+@router.post("/table_names", description="获取所有表名")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def get_table_names(ds_id: int, db: Session = Depends(get_db)):
|
|
|
+def get_table_names(ds_id: int, token_data: schemas.TokenData = Depends(verify_special), db: Session = Depends(get_db)):
|
|
|
return crud.get_table_names(db, ds_id)
|
|
|
|
|
|
-@router.post("/table_schema", description="获取表结构信息", dependencies=[Depends(verify_special)])
|
|
|
+@router.post("/table_schema", description="获取表结构信息")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def get_table_schema(ds_id: int, table_name: str, db: Session = Depends(get_db)):
|
|
|
+def get_table_schema(ds_id: int, table_name: str, token_data: schemas.TokenData = Depends(verify_special), db: Session = Depends(get_db)):
|
|
|
return crud.get_table_schema(db, ds_id, table_name)
|
|
|
|
|
|
-@router.post("/", dependencies=[Depends(verify_super_admin)])
|
|
|
+@router.post("/")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def create_datasource(ds: schemas.JobJdbcDatasourceCreate, db: Session = Depends(get_db)):
|
|
|
+def create_datasource(ds: schemas.JobJdbcDatasourceCreate, token_data: schemas.TokenData = Depends(verify_super_admin), db: Session = Depends(get_db)):
|
|
|
return crud.create_job_jdbc_datasource(db, ds)
|
|
|
|
|
|
-@router.get("/", dependencies=[Depends(verify_special)])
|
|
|
+@router.get("/")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def get_datasources(datasource_type: Optional[str] = None, params: Params=Depends(), db: Session = Depends(get_db)):
|
|
|
+def get_datasources(datasource_type: Optional[str] = None, params: Params=Depends(), token_data: schemas.TokenData = Depends(verify_special), db: Session = Depends(get_db)):
|
|
|
return paginate(crud.get_job_jdbc_datasources(db, datasource_type), params)
|
|
|
|
|
|
-@router.get("/info", dependencies=[Depends(verify_special)])
|
|
|
+@router.get("/info")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def get_datasources_info(ds_id: int, db: Session = Depends(get_db)):
|
|
|
+def get_datasources_info(ds_id: int, token_data: schemas.TokenData = Depends(verify_special), db: Session = Depends(get_db)):
|
|
|
return crud.get_job_jdbc_datasources_info(db, ds_id)
|
|
|
|
|
|
-@router.put("/{ds_id}", dependencies=[Depends(verify_super_admin)])
|
|
|
+@router.put("/{ds_id}")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def update_datasource(ds_id: int, ds: schemas.JobJdbcDatasourceUpdate, db: Session = Depends(get_db)):
|
|
|
+def update_datasource(ds_id: int, ds: schemas.JobJdbcDatasourceUpdate, token_data: schemas.TokenData = Depends(verify_super_admin), db: Session = Depends(get_db)):
|
|
|
return crud.update_job_jdbc_datasources(db, ds_id, ds)
|
|
|
|
|
|
-@router.delete("/{ds_id}", dependencies=[Depends(verify_super_admin)])
|
|
|
+@router.delete("/{ds_id}")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def delete_job_jdbc_datasource(ds_id: int, db: Session = Depends(get_db)):
|
|
|
+def delete_job_jdbc_datasource(ds_id: int, token_data: schemas.TokenData = Depends(verify_super_admin), db: Session = Depends(get_db)):
|
|
|
return crud.delete_job_jdbc_datasource(db, ds_id)
|
|
|
|
|
|
-@router.post("/import_datalake", dependencies=[Depends(verify_super_admin)])
|
|
|
+@router.post("/import_datalake")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def import_datalake(item: schemas.ImportDataLake, db: Session = Depends(get_db)):
|
|
|
+def import_datalake(item: schemas.ImportDataLake, token_data: schemas.TokenData = Depends(verify_super_admin), db: Session = Depends(get_db)):
|
|
|
return crud.import_datalake(db, item)
|
|
|
|
|
|
-@router.put("/update_datalake/{dl_id}", dependencies=[Depends(verify_super_admin)])
|
|
|
+@router.put("/update_datalake/{dl_id}")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def update_datalake(dl_id: int,item: schemas.ImportDataLake, db: Session = Depends(get_db)):
|
|
|
+def update_datalake(dl_id: int,item: schemas.ImportDataLake, token_data: schemas.TokenData = Depends(verify_super_admin), db: Session = Depends(get_db)):
|
|
|
return crud.update_datalake(db, dl_id, item)
|
|
|
|
|
|
-@router.delete("/delete_datalake/{dl_id}", dependencies=[Depends(verify_super_admin)])
|
|
|
+@router.delete("/delete_datalake/{dl_id}")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def delete_datalake(dl_id: int, db: Session = Depends(get_db)):
|
|
|
+def delete_datalake(dl_id: int, token_data: schemas.TokenData = Depends(verify_super_admin), db: Session = Depends(get_db)):
|
|
|
return crud.delete_datalake(db, dl_id)
|
|
|
|
|
|
-@router.post("/share_ailab", dependencies=[Depends(verify_special)])
|
|
|
+@router.post("/share_ailab")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def share_ailab(item: schemas.ShareAilab, db: Session = Depends(get_db)):
|
|
|
+def share_ailab(item: schemas.ShareAilab, token_data: schemas.TokenData = Depends(verify_special), db: Session = Depends(get_db)):
|
|
|
return crud.share_ailab(db, item)
|
|
|
|
|
|
-@router.post("/create_table", dependencies=[Depends(verify_all)])
|
|
|
+@router.post("/create_table")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def create_table(item: schemas.CreateAilab, db: Session = Depends(get_db)):
|
|
|
+def create_table(item: schemas.CreateAilab, token_data: schemas.TokenData = Depends(verify_users), db: Session = Depends(get_db)):
|
|
|
return crud.create_table(db, item)
|
|
|
|
|
|
+@router.get("/ailab_source")
|
|
|
+@web_try()
|
|
|
+@sxtimeit
|
|
|
+def get_ailab_source(token_data: schemas.TokenData = Depends(verify_users), ):
|
|
|
+ return [{
|
|
|
+ 'database_name': DATABASE_NAME,
|
|
|
+ 'datasource': "hive",
|
|
|
+ 'datasource_name': DATABASE_NAME,
|
|
|
+ 'id': -1
|
|
|
+ }]
|
|
|
|
|
|
-@router.get("/ailab_table", dependencies=[Depends(verify_all)])
|
|
|
+@router.get("/ailab_table")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def get_ailab_table(project_id: int, db: Session = Depends(get_db)):
|
|
|
- return crud.get_ailab_table(db, project_id)
|
|
|
+def get_ailab_table(token_data: schemas.TokenData = Depends(verify_users), db: Session = Depends(get_db)):
|
|
|
+ return crud.get_ailab_table(db, token_data.project_id)
|
|
|
|
|
|
-@router.get("/ailab_table_schema", dependencies=[Depends(verify_all)])
|
|
|
+@router.get("/ailab_table_schema")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def get_ailab_table_schema(table_name: str, db: Session = Depends(get_db)):
|
|
|
+def get_ailab_table_schema(table_name: str, token_data: schemas.TokenData = Depends(verify_users), db: Session = Depends(get_db)):
|
|
|
return crud.get_ailab_table_schema(db, table_name)
|
|
|
|
|
|
-@router.get("/preview_ailab_table", dependencies=[Depends(verify_all)])
|
|
|
+@router.get("/preview_ailab_table")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def get_preview_ailab_table(table_name: str, db: Session = Depends(get_db)):
|
|
|
+def get_preview_ailab_table(table_name: str, token_data: schemas.TokenData = Depends(verify_users), db: Session = Depends(get_db)):
|
|
|
return crud.get_preview_ailab_table(db, table_name)
|
|
|
|
|
|
-@router.get("/lake_table", dependencies=[Depends(verify_special)])
|
|
|
+@router.get("/lake_table")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def get_lake_table(project_id: int, db: Session = Depends(get_db)):
|
|
|
- return crud.get_lake_table(db, project_id)
|
|
|
+def get_lake_table(token_data: schemas.TokenData = Depends(verify_special), db: Session = Depends(get_db)):
|
|
|
+ return crud.get_lake_table(db, token_data.project_id)
|
|
|
|
|
|
|
|
|
-@router.get("/lake_table_info", dependencies=[Depends(verify_special)])
|
|
|
+@router.get("/lake_table_info")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def get_lake_table_info(dl_id: int, db: Session = Depends(get_db)):
|
|
|
+def get_lake_table_info(dl_id: int, token_data: schemas.TokenData = Depends(verify_special), db: Session = Depends(get_db)):
|
|
|
return crud.get_lake_table_info(db, dl_id)
|
|
|
|
|
|
-@router.get("/lake_table_schema", dependencies=[Depends(verify_special)])
|
|
|
+@router.get("/lake_table_schema")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def get_lake_table_schema(table_name: str, db: Session = Depends(get_db)):
|
|
|
+def get_lake_table_schema(table_name: str, token_data: schemas.TokenData = Depends(verify_special), db: Session = Depends(get_db)):
|
|
|
return crud.get_ailab_table_schema(db, table_name)
|
|
|
|
|
|
-@router.get("/preview_lake_table", dependencies=[Depends(verify_special)])
|
|
|
+@router.get("/preview_lake_table")
|
|
|
@web_try()
|
|
|
@sxtimeit
|
|
|
-def get_preview_lake_table(table_name: str, db: Session = Depends(get_db)):
|
|
|
+def get_preview_lake_table(table_name: str, token_data: schemas.TokenData = Depends(verify_special), db: Session = Depends(get_db)):
|
|
|
return crud.get_preview_ailab_table(db, table_name)
|
|
|
|
|
|
|