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 or msdss_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. If None, 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 route

    • tags: 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 the msdss_users_api.msdss_users_api.core.UsersAPI.get_current_user() function for the route - only applies if parameter users_api is not None and this settings is not None, otherwise no user authentication will be added for this route

    • **kwargs: Additional arguments passed to fastapi: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.

  • tags (list(str)) – Tags for all routes in 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)