routers¶
get_data_router¶
- msdss_data_api.routers.get_data_router(users_api=None, database=None, route_settings={'columns': {'_enable': True, '_get_user': {}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}/columns'}, 'create': {'_enable': True, '_get_user': {'superuser': True}, '_restricted_tables': ['data', 'user'], 'path': '/'}, 'delete': {'_enable': True, '_get_user': {'superuser': True}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}'}, 'id': {'_enable': True, '_get_user': {}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}/id/{id}'}, 'insert': {'_enable': True, '_get_user': {'superuser': True}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}/insert'}, 'metadata': {'_enable': True, '_get_user': {}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}/metadata', 'tags': ['metadata']}, 'metadata_update': {'_enable': True, '_get_user': {'superuser': True}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}/metadata', 'tags': ['metadata']}, 'query': {'_enable': True, '_get_user': {}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}'}, 'rows': {'_enable': True, '_get_user': {}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}/rows'}, 'search': {'_enable': True, '_get_user': {}, '_restricted_tables': ['data', 'user'], 'path': '/'}, 'update': {'_enable': True, '_get_user': {'superuser': True}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}'}}, prefix='/data', tags=['data'], *args, **kwargs)[source]¶
Get a data router.
- Parameters
users_api (
msdss_users_api.core.UsersAPI
or None) – Users API object to enable user authentication for data routes. IfNone
, user authentication will not be used for data routes.database (
msdss_base_database.core.Database
or None) – Amsdss_base_database.core.Database
object for managing data. IfNone
, a default database will be used.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:
{'columns': {'_enable': True, '_get_user': {}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}/columns'}, 'create': {'_enable': True, '_get_user': {'superuser': True}, '_restricted_tables': ['data', 'user'], 'path': '/'}, 'delete': {'_enable': True, '_get_user': {'superuser': True}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}'}, 'id': {'_enable': True, '_get_user': {}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}/id/{id}'}, 'insert': {'_enable': True, '_get_user': {'superuser': True}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}/insert'}, 'metadata': {'_enable': True, '_get_user': {}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}/metadata', 'tags': ['metadata']}, 'metadata_update': {'_enable': True, '_get_user': {'superuser': True}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}/metadata', 'tags': ['metadata']}, 'query': {'_enable': True, '_get_user': {}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}'}, 'rows': {'_enable': True, '_get_user': {}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}/rows'}, 'search': {'_enable': True, '_get_user': {}, '_restricted_tables': ['data', 'user'], 'path': '/'}, 'update': {'_enable': True, '_get_user': {'superuser': True}, '_restricted_tables': ['data', 'user'], 'path': '/{dataset}'}}
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 data routes. See FastAPI bigger apps
- Return type
fastapi:fastapi.routing.APIRouter
Author
Richard Wen <rrwen.dev@gmail.com>
Example
from msdss_base_database import Database from msdss_base_api import API from msdss_users_api import UsersAPI from msdss_data_api.routers import get_data_router # Create database object database = Database( driver='postgresql', user='msdss', password='msdss123', host='localhost', port='5432', database='msdss' ) # Create an app app = API() # Add the data router router = get_data_router(database=database) app.add_router(router) # Add the data router with users # CHANGE SECRETS TO STRONG PHRASES app = API() users_api = UsersAPI( 'cookie-secret', 'jwt-secret', 'reset-secret', 'verification-secret', database=database ) router = get_data_router(users_api, database=database) app.add_router(router) # Host app at https://localhost:8000 # Try it at https://localhost:8000/docs # app.start()