def _create_column_nodes(self, col: ColumnMetadata) -> Iterator[GraphNode]: column_node = GraphNode(key=self._get_col_key(col), label=ColumnMetadata.COLUMN_NODE_LABEL, attributes={ ColumnMetadata.COLUMN_NAME: col.name, ColumnMetadata.COLUMN_TYPE: col.type, ColumnMetadata.COLUMN_ORDER: col.sort_order }) yield column_node if col.description: node_key = self._get_col_description_key(col, col.description) yield col.description.get_node(node_key) if col.badges: col_badge_metadata = BadgeMetadata( start_label=ColumnMetadata.COLUMN_NODE_LABEL, start_key=self._get_col_key(col), badges=col.badges) badge_nodes = col_badge_metadata.get_badge_nodes() for node in badge_nodes: yield node type_metadata = col.get_type_metadata() if type_metadata: yield from type_metadata.create_node_iterator()
def _create_next_node(self) -> Iterator[GraphNode]: yield self._create_table_node() if self.description: node_key = self._get_table_description_key(self.description) yield self.description.get_node(node_key) # Create the table tag nodes if self.tags: for tag in self.tags: tag_node = TagMetadata(tag).get_node() yield tag_node for col in self.columns: column_node = GraphNode(key=self._get_col_key(col), label=ColumnMetadata.COLUMN_NODE_LABEL, attributes={ ColumnMetadata.COLUMN_NAME: col.name, ColumnMetadata.COLUMN_TYPE: col.type, ColumnMetadata.COLUMN_ORDER: col.sort_order }) yield column_node if col.description: node_key = self._get_col_description_key(col, col.description) yield col.description.get_node(node_key) if col.badges: col_badge_metadata = BadgeMetadata( start_label=ColumnMetadata.COLUMN_NODE_LABEL, start_key=self._get_col_key(col), badges=col.badges) badge_nodes = col_badge_metadata.get_badge_nodes() for node in badge_nodes: yield node # Database, cluster, schema others = [ GraphNode(key=self._get_database_key(), label=TableMetadata.DATABASE_NODE_LABEL, attributes={'name': self.database}), GraphNode(key=self._get_cluster_key(), label=TableMetadata.CLUSTER_NODE_LABEL, attributes={'name': self.cluster}), GraphNode(key=self._get_schema_key(), label=TableMetadata.SCHEMA_NODE_LABEL, attributes={'name': self.schema}) ] for node_tuple in others: if node_tuple.key not in TableMetadata.serialized_nodes_keys: TableMetadata.serialized_nodes_keys.add(node_tuple.key) yield node_tuple