async def describe_table(service_id: str, table_name: str, sync: bool = False, ttl: int = 3600, db: databases.Database = Depends(models.get_db)): service = await services.get_service(service_id, db) if service.driver: driver = await drivers.get_driver(service.driver) return drivers.service_stack(driver, service, "get", f"/table/{table_name}", sync=sync, ttl=ttl) raise errors.ServiceException(service.id, errors.NO_DRV_ERROR, "Service has no driver assigned")
async def post_table(service_id: str, table: schemas.Table, sync: bool = False, ttl: int = 3600, db: databases.Database = Depends(models.get_db)): service = await services.get_service(service_id, db) if service.driver: driver = await drivers.get_driver(service.driver) return drivers.service_stack(driver, service, "post", "/table", data=table.dict(), sync=sync, ttl=ttl) raise errors.ServiceException(service.id, errors.NO_DRV_ERROR, "Service has no driver assigned")
async def list_records(service_id: str, table_name: str, sync: bool = False, ttl: int = 3600, dql_options: str = "", db: databases.Database = Depends(models.get_db)): service = await services.get_service(service_id, db) if service.driver: driver = await drivers.get_driver(service.driver) path = f"/table/{table_name}/record" if dql_options: try: json.loads(dql_options) except json.decoder.JSONDecodeError: raise errors.ServiceException(dql_options, errors.DATA_ERROR, "Value is not JSON decodable") return drivers.service_stack(driver, service, "get", path, data={"dql": dql_options}, sync=sync, ttl=ttl) raise errors.ServiceException(service.id, errors.NO_DRV_ERROR, "Service has no driver assigned")
async def delete_records(service_id: str, table_name: str, dml_options: schemas.RecordDMLOptions, sync: bool = False, ttl: int = 3600, db: databases.Database = Depends(models.get_db)): service = await services.get_service(service_id, db) if service.driver: driver = await drivers.get_driver(service.driver) path = f"/table/{table_name}/record" return drivers.service_stack(driver, service, "delete", path, data=dml_options.dict(), sync=sync, ttl=ttl) raise errors.ServiceException(service.id, errors.NO_DRV_ERROR, "Service has no driver assigned")
async def ping_service(service_id: str, db: databases.Database = Depends(models.get_db)): service = await get_service(service_id, db) if service.driver: driver = await drivers.get_driver(service.driver) return drivers.service_stack(driver, service, "get", "/ping", sync=True) raise errors.ServiceException(service.id, errors.NO_DRV_ERROR, "Service has no driver assigned")
async def predict(service_id: str, image_file: UploadFile = File(...), sync: bool = False, ttl: int = 3600, db: databases.Database = Depends(models.get_db)): service = await services.get_service(service_id, db) if service.driver: driver = await drivers.get_driver(service.driver) return drivers.service_stack(driver, service, "post", "/predict", data=image_file, sync=sync, ttl=ttl) raise errors.ServiceException(service.id, errors.NO_DRV_ERROR, "Service has no driver assigned")