python_arango_ogm.db.pao_edges

 1from __future__ import annotations
 2
 3import os
 4import sys
 5from typing import Dict, Any, Union, Sequence, Type
 6import python_arango_ogm.db
 7from python_arango_ogm.db.pao_db_base import PAODBBase
 8
 9
10class PAOEdgeDef:
11    def __init__(self, from_model: [Type[python_arango_ogm.db.pao_model.PAOModel], str],
12                 to_model: [Type[python_arango_ogm.db.pao_model.PAOModel], str]):
13        self.from_model = from_model
14        self.to_model = to_model
15        if self.to_model is None:
16            raise ValueError("PAOEdgeDef to_model cannot be None")
17
18        app_package = os.getenv('PAO_APP_PACKAGE')
19        if not app_package:
20            raise RuntimeError("PAO_APP_PACKAGE must be defined in the environment (or a .env.test file)")
21        self.models_module_name = f"{app_package}.models"
22
23    def db(self) -> PAODBBase:
24        return self.model_class_from().db
25
26    def insert_edge(
27            self,
28            _from: [str, python_arango_ogm.db.pao_model.PAOModel],
29            _to: Union[str, python_arango_ogm.db.pao_model.PAOModel]
30    ):
31        pass
32
33    def associated_edges(self, lookup_key_dict: Dict[str, Any] = None) -> Sequence[PAOEdgeDef]:
34        from_model_cls = self.model_class_from()
35        to_model_cls = self.model_class_to()
36        from_collection_name = from_model_cls.collection_name()
37        to_collection_name = to_model_cls.collection_name()
38        return from_model_cls.db.get_edge_associations(from_collection_name, to_collection_name, lookup_key_dict)
39
40    def associated_vertices(self, lookup_key_dict: Dict[str, Any], marshall=True) -> Sequence[
41        Type[python_arango_ogm.db.pao_model.PAOModel]]:
42        from_model_cls = self.model_class_from()
43        to_model_cls = self.model_class_to()
44        from_collection_name = from_model_cls.collection_name()
45        to_collection_name = to_model_cls.collection_name()
46        vertices = from_model_cls.db.get_related_vertices(from_collection_name, to_collection_name, lookup_key_dict)
47        return to_model_cls.marshall_row(vertices, marshall)
48
49    def model_class_from(self) -> Type[python_arango_ogm.db.pao_model.PAOModel]:
50        return self.get_model_class(self.from_model)
51
52    def model_class_to(self) -> Type[python_arango_ogm.db.pao_model.PAOModel]:
53        return self.get_model_class(self.to_model)
54
55    @staticmethod
56    def get_model_class(
57            model: Union[str, Type[python_arango_ogm.db.pao_model.PAOModel]]
58    ) -> Type[python_arango_ogm.db.pao_model.PAOModel]:
59        # Get model class, whether it is defined as an actual class or a model:
60        if isinstance(model, str):
61            module = sys.modules[self.models_module_name]
62            result = getattr(module, model)
63        else:
64            result = model
65        return result
class PAOEdgeDef:
11class PAOEdgeDef:
12    def __init__(self, from_model: [Type[python_arango_ogm.db.pao_model.PAOModel], str],
13                 to_model: [Type[python_arango_ogm.db.pao_model.PAOModel], str]):
14        self.from_model = from_model
15        self.to_model = to_model
16        if self.to_model is None:
17            raise ValueError("PAOEdgeDef to_model cannot be None")
18
19        app_package = os.getenv('PAO_APP_PACKAGE')
20        if not app_package:
21            raise RuntimeError("PAO_APP_PACKAGE must be defined in the environment (or a .env.test file)")
22        self.models_module_name = f"{app_package}.models"
23
24    def db(self) -> PAODBBase:
25        return self.model_class_from().db
26
27    def insert_edge(
28            self,
29            _from: [str, python_arango_ogm.db.pao_model.PAOModel],
30            _to: Union[str, python_arango_ogm.db.pao_model.PAOModel]
31    ):
32        pass
33
34    def associated_edges(self, lookup_key_dict: Dict[str, Any] = None) -> Sequence[PAOEdgeDef]:
35        from_model_cls = self.model_class_from()
36        to_model_cls = self.model_class_to()
37        from_collection_name = from_model_cls.collection_name()
38        to_collection_name = to_model_cls.collection_name()
39        return from_model_cls.db.get_edge_associations(from_collection_name, to_collection_name, lookup_key_dict)
40
41    def associated_vertices(self, lookup_key_dict: Dict[str, Any], marshall=True) -> Sequence[
42        Type[python_arango_ogm.db.pao_model.PAOModel]]:
43        from_model_cls = self.model_class_from()
44        to_model_cls = self.model_class_to()
45        from_collection_name = from_model_cls.collection_name()
46        to_collection_name = to_model_cls.collection_name()
47        vertices = from_model_cls.db.get_related_vertices(from_collection_name, to_collection_name, lookup_key_dict)
48        return to_model_cls.marshall_row(vertices, marshall)
49
50    def model_class_from(self) -> Type[python_arango_ogm.db.pao_model.PAOModel]:
51        return self.get_model_class(self.from_model)
52
53    def model_class_to(self) -> Type[python_arango_ogm.db.pao_model.PAOModel]:
54        return self.get_model_class(self.to_model)
55
56    @staticmethod
57    def get_model_class(
58            model: Union[str, Type[python_arango_ogm.db.pao_model.PAOModel]]
59    ) -> Type[python_arango_ogm.db.pao_model.PAOModel]:
60        # Get model class, whether it is defined as an actual class or a model:
61        if isinstance(model, str):
62            module = sys.modules[self.models_module_name]
63            result = getattr(module, model)
64        else:
65            result = model
66        return result
PAOEdgeDef( from_model: [typing.Type[python_arango_ogm.db.pao_model.PAOModel], <class 'str'>], to_model: [typing.Type[python_arango_ogm.db.pao_model.PAOModel], <class 'str'>])
12    def __init__(self, from_model: [Type[python_arango_ogm.db.pao_model.PAOModel], str],
13                 to_model: [Type[python_arango_ogm.db.pao_model.PAOModel], str]):
14        self.from_model = from_model
15        self.to_model = to_model
16        if self.to_model is None:
17            raise ValueError("PAOEdgeDef to_model cannot be None")
18
19        app_package = os.getenv('PAO_APP_PACKAGE')
20        if not app_package:
21            raise RuntimeError("PAO_APP_PACKAGE must be defined in the environment (or a .env.test file)")
22        self.models_module_name = f"{app_package}.models"
from_model
to_model
models_module_name
def db(self) -> python_arango_ogm.db.pao_db_base.PAODBBase:
24    def db(self) -> PAODBBase:
25        return self.model_class_from().db
def insert_edge( self, _from: [<class 'str'>, <class 'python_arango_ogm.db.pao_model.PAOModel'>], _to: Union[str, python_arango_ogm.db.pao_model.PAOModel]):
27    def insert_edge(
28            self,
29            _from: [str, python_arango_ogm.db.pao_model.PAOModel],
30            _to: Union[str, python_arango_ogm.db.pao_model.PAOModel]
31    ):
32        pass
def associated_edges( self, lookup_key_dict: Dict[str, Any] = None) -> Sequence[PAOEdgeDef]:
34    def associated_edges(self, lookup_key_dict: Dict[str, Any] = None) -> Sequence[PAOEdgeDef]:
35        from_model_cls = self.model_class_from()
36        to_model_cls = self.model_class_to()
37        from_collection_name = from_model_cls.collection_name()
38        to_collection_name = to_model_cls.collection_name()
39        return from_model_cls.db.get_edge_associations(from_collection_name, to_collection_name, lookup_key_dict)
def associated_vertices( self, lookup_key_dict: Dict[str, Any], marshall=True) -> Sequence[Type[python_arango_ogm.db.pao_model.PAOModel]]:
41    def associated_vertices(self, lookup_key_dict: Dict[str, Any], marshall=True) -> Sequence[
42        Type[python_arango_ogm.db.pao_model.PAOModel]]:
43        from_model_cls = self.model_class_from()
44        to_model_cls = self.model_class_to()
45        from_collection_name = from_model_cls.collection_name()
46        to_collection_name = to_model_cls.collection_name()
47        vertices = from_model_cls.db.get_related_vertices(from_collection_name, to_collection_name, lookup_key_dict)
48        return to_model_cls.marshall_row(vertices, marshall)
def model_class_from(self) -> Type[python_arango_ogm.db.pao_model.PAOModel]:
50    def model_class_from(self) -> Type[python_arango_ogm.db.pao_model.PAOModel]:
51        return self.get_model_class(self.from_model)
def model_class_to(self) -> Type[python_arango_ogm.db.pao_model.PAOModel]:
53    def model_class_to(self) -> Type[python_arango_ogm.db.pao_model.PAOModel]:
54        return self.get_model_class(self.to_model)
@staticmethod
def get_model_class( model: Union[str, Type[python_arango_ogm.db.pao_model.PAOModel]]) -> Type[python_arango_ogm.db.pao_model.PAOModel]:
56    @staticmethod
57    def get_model_class(
58            model: Union[str, Type[python_arango_ogm.db.pao_model.PAOModel]]
59    ) -> Type[python_arango_ogm.db.pao_model.PAOModel]:
60        # Get model class, whether it is defined as an actual class or a model:
61        if isinstance(model, str):
62            module = sys.modules[self.models_module_name]
63            result = getattr(module, model)
64        else:
65            result = model
66        return result