| 30 | |
| 31 | |
| 32 | class Property: |
| 33 | def __init__( |
| 34 | self, name, data_type, is_primary_key=False, property_id=0, comment="" |
| 35 | ): |
| 36 | self.name: str = name |
| 37 | self.data_type: int = data_type |
| 38 | self.is_primary_key: bool = is_primary_key |
| 39 | |
| 40 | self.id: int = property_id |
| 41 | self.comment = comment |
| 42 | |
| 43 | self.inner_id: int = 0 |
| 44 | self.default_value = None |
| 45 | |
| 46 | def as_property_def(self): |
| 47 | pb = graph_def_pb2.PropertyDefPb() |
| 48 | pb.name = self.name |
| 49 | pb.data_type = self.data_type |
| 50 | pb.pk = self.is_primary_key |
| 51 | pb.comment = self.comment |
| 52 | return pb |
| 53 | |
| 54 | @property |
| 55 | def type(self): |
| 56 | return self.data_type |
| 57 | |
| 58 | @classmethod |
| 59 | def from_property_def(cls, pb): |
| 60 | prop = cls(pb.name, pb.data_type, pb.pk, pb.id, pb.comment) |
| 61 | prop.inner_id = pb.inner_id |
| 62 | prop.default_value = pb.default_value |
| 63 | return prop |
| 64 | |
| 65 | def __repr__(self) -> str: |
| 66 | type_str = graph_def_pb2.DataTypePb.Name(self.data_type) |
| 67 | return f"Property({self.id}, {self.name}, {type_str}, {self.is_primary_key}, {self.comment})" |
| 68 | |
| 69 | def __str__(self) -> str: |
| 70 | return self.__repr__() |
| 71 | |
| 72 | def to_dict(self) -> dict: |
| 73 | return { |
| 74 | "property_name": self.name, |
| 75 | "property_id": self.id, |
| 76 | "property_type": data_type_to_unified_type(self.data_type), |
| 77 | "is_primary_key": self.is_primary_key, |
| 78 | "description": self.comment, |
| 79 | } |
| 80 | |
| 81 | |
| 82 | Relation = namedtuple("Relation", "source destination") |