How it WorksΒΆ

This package creates an extended msdss_base_api.core.API application using msdss_data_api.core.DataAPI. The DataAPI class uses msdss_data_api.routers.get_data_router() to setup routes for managing data. Data management is handled by managers in msdss_data_api.managers, which uses handlers in msdss_data_api.handlers to check route inputs. The general process is: handlers -> managers -> get_data_router -> DataAPI.

Other notes:

digraph methods {
compound=true;
rankdir=TB;
graph [pad="0.75", nodesep="0.25", ranksep="1"];

baseapi[label="msdss-base-api" URL="https://rrwen.github.io/msdss-base-api/" style=filled];
basedb[label="msdss-base-database" URL="https://rrwen.github.io/msdss-base-database/" style=filled];
usersapi[label="msdss-users-api" URL="https://rrwen.github.io/msdss-users-api/" style=filled];

datacreatemodel[label="DataCreate" shape=rect];
metadataupdatemodel[label="MetadataUpdate" shape=rect];

datamanager[label="DataManager" shape=rect];
datahandler[label="DataHandler" shape=rect];
metadatamanager[label="MetadataManager" shape=rect];

metadatafunc[label="create_metadata_manager_func" shape=rect style=rounded];
datamanagerfunc[label="create_data_manager_func" shape=rect style=rounded];
getdatarouter[label="get_data_router" shape=rect style=rounded];

subgraph cluster0 {
   label=< <B>msdss_data_api.core.DataAPI</B> >;
   style=rounded;

   subgraph cluster1 {
      label=< <B>msdss_data_api.models</B> >;
      datacreatemodel;
      metadataupdatemodel;
   }
   metadataupdatemodel -> getdatarouter[lhead=cluster1 ltail=cluster1];

   subgraph cluster2 {
      label=< <B>msdss_data_api.managers</B> >;
      datamanager;
      metadatamanager;
   }
   datamanager -> getdatarouter[lhead=cluster2 ltail=cluster2];
   datahandler -> datamanager[lhead=cluster2 ltail=cluster2];
   basedb -> {datahandler;metadatamanager}[lhead=cluster2 ltail=cluster2];

   subgraph cluster3 {
      label=< <B>msdss_data_api.tools</B> >;
      datamanagerfunc;
      metadatafunc;
   }
   datamanagerfunc -> getdatarouter[lhead=cluster3 ltail=cluster3];

   {usersapi;getdatarouter} -> baseapi;
}
}