routers¶
get_models_router¶
- msdss_models_api.routers.get_models_router(bg_manager, users_api=None, route_settings={'cancel': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/{name}/cancel'}, 'create': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/'}, 'delete': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/{name}'}, 'input': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/{name}'}, 'input_db': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/{name}/data'}, 'metadata': {'_enable': True, '_get_user': {}, 'path': '/{name}/metadata', 'tags': ['metadata']}, 'metadata_update': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/{name}/metadata', 'tags': ['metadata']}, 'output': {'_enable': True, '_get_user': {}, 'path': '/{name}/output'}, 'search': {'_enable': True, '_get_user': {}, 'path': '/'}, 'status': {'_enable': True, '_get_user': {}, 'path': '/{name}/status'}, 'update': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/{name}'}, 'update_db': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/{name}/data'}}, prefix='/models', tags=['models'], *args, **kwargs)[source]¶
Get a models router.
- Parameters
bg_manager (
msdss_models_api.managers.ModelsBackgroundManager
ormsdss_models_api.managers.DBModelsBackgroundManager
) – Models background manager for managing model operations.users_api (
msdss_users_api.core.UsersAPI
or None) – Users API object to enable user authentication for routes. IfNone
, user authentication will not be used for routes.route_settings (dict) –
Dictionary of settings for the data routes. Each route consists of the following keys:
path
: resource path for the routetags
: tags for open api spec_enable
(bool): Whether this route should be included or not_restricted_tables
(list(str)): List of table names not accessible by this route_get_user
(dict or None): Additional arguments passed to themsdss_users_api.msdss_users_api.core.UsersAPI.get_current_user()
function for the route - only applies if parameterusers_api
is notNone
and this settings is notNone
, otherwise no user authentication will be added for this route**kwargs
: Additional arguments passed tofastapi:fastapi.FastAPI.get()
for the id route
The default settings are:
{'cancel': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/{name}/cancel'}, 'create': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/'}, 'delete': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/{name}'}, 'input': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/{name}'}, 'input_db': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/{name}/data'}, 'metadata': {'_enable': True, '_get_user': {}, 'path': '/{name}/metadata', 'tags': ['metadata']}, 'metadata_update': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/{name}/metadata', 'tags': ['metadata']}, 'output': {'_enable': True, '_get_user': {}, 'path': '/{name}/output'}, 'search': {'_enable': True, '_get_user': {}, 'path': '/'}, 'status': {'_enable': True, '_get_user': {}, 'path': '/{name}/status'}, 'update': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/{name}'}, 'update_db': {'_enable': True, '_get_user': {'superuser': True}, 'path': '/{name}/data'}}
Any unspecified settings will be replaced by their defaults.
prefix (str) – Prefix path to all routes belonging to this router.
*args – Additional arguments to accept any extra parameters passed to
fastapi:fastapi.routing.APIRouter
.**kwargs – Additional arguments to accept any extra parameters passed to
fastapi:fastapi.routing.APIRouter
.
- Returns
A router object used for model routes. See FastAPI bigger apps
- Return type
fastapi:fastapi.routing.APIRouter
Author
Richard Wen <rrwen.dev@gmail.com>
Example
import tempfile from celery import Celery from msdss_base_database import Database from msdss_data_api.managers import DataManager from msdss_models_api.managers import * from msdss_models_api.defaults import * from msdss_models_api.models import * from msdss_models_api.routers import get_models_router with tempfile.TemporaryDirectory() as folder_path: # Setup available models models = [Model] # Setup database db = Database() # Check if the metadata table exists and drop if it does if db.has_table(DEFAULT_METADATA_TABLE): db.drop_table(DEFAULT_METADATA_TABLE) # Create data manager data_manager = DataManager(database=db) # Create models manager models_manager = ModelsManager(models, folder=folder_path) # Create metadata manager metadata_manager = ModelsMetadataManager(data_manager, models_manager) # Create background manager worker = Celery(broker='redis://localhost:6379/0', backend='redis://localhost:6379/0') # rabbitmq bg_manager = ModelsBackgroundManager(worker, models_manager, metadata_manager=metadata_manager) # Get models router models_router = get_models_router(bg_manager)