Exemple #1
0
    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()
Exemple #2
0
    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