Skip to content
Snippets Groups Projects
Select Git revision
  • 7e86c1f9349d16349a29cb80eb3a42b51b54f0c4
  • develop default protected
  • feature/webrtc
  • feature/mesh-based-reprojection
  • feature/linux-fixes
  • feature/dual-layer-reprojection
  • feature/frame-invalidation
  • feature/plot-script
  • bug/jittering
  • feature/indirect-sky
  • feature/depth-peeling-reprojection protected
  • master
12 results

vr_application.hpp

Blame
  • from_sql.py 4.90 KiB
    from uuid import UUID
    
    from mitm_tooling.extraction.sql.data_models import DBMetaInfo
    from mitm_tooling.extraction.sql.data_models.db_meta import DBMetaInfoBase
    from mitm_tooling.extraction.sql.db import connect_and_reflect
    from .asset_bundles import SupersetDatasourceBundle, \
        SupersetMitMDatasetBundle, DatasourceIdentifierBundle, MitMDatasetIdentifierBundle, SupersetVisualizationBundle
    from .common import DBConnectionInfo, MitMDatasetInfo
    from .common import _mk_sqlite_engine, SQLiteFileOrEngine
    from .factories.database import mk_database
    from .factories.dataset import mk_dataset
    from .factories.mitm_dataset import mk_mitm_dataset
    
    
    def db_meta_into_superset_datasource_bundle(db_meta: DBMetaInfoBase,
                                                db_conn_info: DBConnectionInfo,
                                                identifiers: DatasourceIdentifierBundle | None = None) -> SupersetDatasourceBundle:
        sqlalchemy_uri = db_conn_info.sql_alchemy_uri
        db_name = db_conn_info.db_name
        dialect = db_conn_info.dialect_cls()
        identifiers = identifiers or DatasourceIdentifierBundle()
    
        database = mk_database(name=db_name,
                               sqlalchemy_uri=sqlalchemy_uri,
                               uniquify_name=True,
                               uuid=identifiers.database_uuid)
    
        database_uuid = database.uuid
        datasets = []
        ds_id_map = identifiers.ds_id_map or {}
    
        def ds_uuid(tn: str) -> UUID | None:
            if (ds_id := ds_id_map.get(tn)) is not None:
                return ds_id.uuid
            else:
                return None
    
        for schema_name, schema_tables in db_meta.db_structure.items():
            for table_name, tm in schema_tables.items():
                datasets.append(mk_dataset(tm, database_uuid, dialect=dialect, uuid=ds_uuid(table_name)))
    
        return SupersetDatasourceBundle(database=database, datasets=datasets)
    
    
    def db_meta_into_mitm_dataset_bundle(db_meta: DBMetaInfoBase,
                                         db_conn_info: DBConnectionInfo,
                                         dataset_info: MitMDatasetInfo,
                                         identifiers: MitMDatasetIdentifierBundle | None = None) -> SupersetMitMDatasetBundle:
        identifiers = identifiers or MitMDatasetIdentifierBundle()
    
        datasource_bundle = db_meta_into_superset_datasource_bundle(db_meta,
                                                                    db_conn_info,
                                                                    identifiers)
    
        mitm_dataset = mk_mitm_dataset(dataset_info.dataset_name, dataset_info.mitm,
                                       uuid=identifiers.mitm_dataset_uuid,
                                       header=dataset_info.header,
                                       database_uuid=datasource_bundle.database_uuid,
                                       table_uuids=datasource_bundle.dataset_uuids)
    
        viz_bundle = SupersetVisualizationBundle(named_charts=identifiers.ch_id_map, viz_collections=identifiers.viz_id_map)
        return SupersetMitMDatasetBundle(mitm_dataset=mitm_dataset, datasource_bundle=datasource_bundle, visualization_bundle=viz_bundle)
    
    
    def db_into_superset_datasource_bundle(arg: SQLiteFileOrEngine,
                                           db_conn_info: DBConnectionInfo,
                                           identifiers: DatasourceIdentifierBundle | None = None) -> SupersetDatasourceBundle:
        identifiers = identifiers or DatasourceIdentifierBundle()
    
        engine = _mk_sqlite_engine(arg)
    
        meta, _ = connect_and_reflect(engine, allowed_schemas=[db_conn_info.schema_name])
        db_meta = DBMetaInfo.from_sa_meta(meta, default_schema=db_conn_info.schema_name)
    
        return db_meta_into_superset_datasource_bundle(db_meta,
                                                       db_conn_info,
                                                       identifiers)
    
    
    def db_into_mitm_dataset_bundle(arg: SQLiteFileOrEngine,
                                    db_conn_info: DBConnectionInfo,
                                    dataset_info: MitMDatasetInfo,
                                    identifiers: MitMDatasetIdentifierBundle | None = None) -> SupersetMitMDatasetBundle:
        identifiers = identifiers or MitMDatasetIdentifierBundle()
    
        datasource_bundle = db_into_superset_datasource_bundle(arg,
                                                               db_conn_info,
                                                               identifiers)
        mitm_dataset = mk_mitm_dataset(dataset_info.dataset_name, dataset_info.mitm, uuid=identifiers.mitm_dataset_uuid,
                                       header=dataset_info.header,
                                       database_uuid=datasource_bundle.database_uuid,
                                       table_uuids=datasource_bundle.dataset_uuids)
        viz_bundle = SupersetVisualizationBundle(named_charts=identifiers.ch_id_map, viz_collections=identifiers.viz_id_map)
        return SupersetMitMDatasetBundle(mitm_dataset=mitm_dataset, datasource_bundle=datasource_bundle, visualization_bundle=viz_bundle)