def _create_column_relations( self, col: ColumnMetadata) -> Iterator[GraphRelationship]: column_relationship = GraphRelationship( start_label=TableMetadata.TABLE_NODE_LABEL, start_key=self._get_table_key(), end_label=ColumnMetadata.COLUMN_NODE_LABEL, end_key=self._get_col_key(col), type=TableMetadata.TABLE_COL_RELATION_TYPE, reverse_type=TableMetadata.COL_TABLE_RELATION_TYPE, attributes={}) yield column_relationship if col.description: yield col.description.get_relation( ColumnMetadata.COLUMN_NODE_LABEL, self._get_col_key(col), self._get_col_description_key(col, col.description)) if col.badges: badge_metadata = BadgeMetadata( start_label=ColumnMetadata.COLUMN_NODE_LABEL, start_key=self._get_col_key(col), badges=col.badges) badge_relations = badge_metadata.get_badge_relations() for relation in badge_relations: yield relation type_metadata = col.get_type_metadata() if type_metadata: yield from type_metadata.create_relation_iterator()
def _create_next_relation(self) -> Iterator[GraphRelationship]: schema_table_relationship = GraphRelationship( start_key=self._get_schema_key(), start_label=TableMetadata.SCHEMA_NODE_LABEL, end_key=self._get_table_key(), end_label=TableMetadata.TABLE_NODE_LABEL, type=TableMetadata.SCHEMA_TABLE_RELATION_TYPE, reverse_type=TableMetadata.TABLE_SCHEMA_RELATION_TYPE, attributes={} ) yield schema_table_relationship if self.description: yield self.description.get_relation(TableMetadata.TABLE_NODE_LABEL, self._get_table_key(), self._get_table_description_key(self.description)) if self.tags: for tag in self.tags: tag_relationship = GraphRelationship( start_label=TableMetadata.TABLE_NODE_LABEL, start_key=self._get_table_key(), end_label=TagMetadata.TAG_NODE_LABEL, end_key=TagMetadata.get_tag_key(tag), type=TableMetadata.TABLE_TAG_RELATION_TYPE, reverse_type=TableMetadata.TAG_TABLE_RELATION_TYPE, attributes={} ) yield tag_relationship for col in self.columns: column_relationship = GraphRelationship( start_label=TableMetadata.TABLE_NODE_LABEL, start_key=self._get_table_key(), end_label=ColumnMetadata.COLUMN_NODE_LABEL, end_key=self._get_col_key(col), type=TableMetadata.TABLE_COL_RELATION_TYPE, reverse_type=TableMetadata.COL_TABLE_RELATION_TYPE, attributes={} ) yield column_relationship if col.description: yield col.description.get_relation( ColumnMetadata.COLUMN_NODE_LABEL, self._get_col_key(col), self._get_col_description_key(col, col.description) ) if col.badges: badge_metadata = BadgeMetadata(start_label=ColumnMetadata.COLUMN_NODE_LABEL, start_key=self._get_col_key(col), badges=col.badges) badge_relations = badge_metadata.get_badge_relations() for relation in badge_relations: yield relation others = [ GraphRelationship( start_label=TableMetadata.DATABASE_NODE_LABEL, end_label=TableMetadata.CLUSTER_NODE_LABEL, start_key=self._get_database_key(), end_key=self._get_cluster_key(), type=TableMetadata.DATABASE_CLUSTER_RELATION_TYPE, reverse_type=TableMetadata.CLUSTER_DATABASE_RELATION_TYPE, attributes={} ), GraphRelationship( start_label=TableMetadata.CLUSTER_NODE_LABEL, end_label=TableMetadata.SCHEMA_NODE_LABEL, start_key=self._get_cluster_key(), end_key=self._get_schema_key(), type=TableMetadata.CLUSTER_SCHEMA_RELATION_TYPE, reverse_type=TableMetadata.SCHEMA_CLUSTER_RELATION_TYPE, attributes={} ) ] for rel_tuple in others: if (rel_tuple.start_key, rel_tuple.end_key, rel_tuple.type) not in TableMetadata.serialized_rels_keys: TableMetadata.serialized_rels_keys.add((rel_tuple.start_key, rel_tuple.end_key, rel_tuple.type)) yield rel_tuple