Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
node_registry.py62 linesDownload Raw Back to schema_diff
1##########################################################################2#3# pgAdmin 4 - PostgreSQL Tools4#5# Copyright (C) 2013 - 2024, The pgAdmin Development Team6# This software is released under the PostgreSQL Licence7#8##########################################################################9 10 11class SchemaDiffRegistry():12    """13    SchemaDiffRegistry14 15    It is more of a registry for different type of nodes for schema diff.16    """17    _registered_nodes = dict()18 19    def __init__(self, node_name, node_view, parent_node='schema'):20        if node_name not in SchemaDiffRegistry._registered_nodes:21            SchemaDiffRegistry._registered_nodes[node_name] = {22                'view': node_view,23                'parent': parent_node24            }25 26    @classmethod27    def get_registered_nodes(cls, node_name=None, parent_node='schema'):28        """29        This function will return the node's view object if node name30        is specified or return the complete list of registered nodes.31 32        :param node_name: Name of the node ex: Database, Schema, etc..33        :return:34        """35        if node_name is not None:36            if node_name in cls._registered_nodes:37                return cls._registered_nodes[node_name]['view']38            else:39                return None40 41        registered_nodes = {}42        for key, value in cls._registered_nodes.items():43            if value['parent'] == parent_node:44                registered_nodes[key] = value['view']45 46        return registered_nodes47 48    @classmethod49    def get_node_view(cls, node_name):50        """51        This function will return the view object for the "nodes"52        command as per the specified node name.53 54        :param node_name: Name of the node ex: Database, Schema, etc..55        :return:56        """57        cmd = {"cmd": "nodes, compare, ddl_compare"}58        module = SchemaDiffRegistry.get_registered_nodes(node_name)59        if not module:60            return None61        return module(**cmd)62 
codekingpro/portable-devtools · Team Ai