SchemaDiffRegistry It is more of a registry for different type of nodes for schema diff.
| 9 | |
| 10 | |
| 11 | class SchemaDiffRegistry(): |
| 12 | """ |
| 13 | SchemaDiffRegistry |
| 14 | |
| 15 | It is more of a registry for different type of nodes for schema diff. |
| 16 | """ |
| 17 | _registered_nodes = dict() |
| 18 | _schema_diff_compare_mode = None |
| 19 | |
| 20 | def __init__(self, node_name, node_view, parent_node='schema'): |
| 21 | if node_name not in SchemaDiffRegistry._registered_nodes: |
| 22 | SchemaDiffRegistry._registered_nodes[node_name] = { |
| 23 | 'view': node_view, |
| 24 | 'parent': parent_node |
| 25 | } |
| 26 | |
| 27 | @classmethod |
| 28 | def get_registered_nodes(cls, node_name=None, parent_node='schema'): |
| 29 | """ |
| 30 | This function will return the node's view object if node name |
| 31 | is specified or return the complete list of registered nodes. |
| 32 | |
| 33 | :param node_name: Name of the node ex: Database, Schema, etc.. |
| 34 | :return: |
| 35 | """ |
| 36 | if node_name is not None: |
| 37 | if node_name in cls._registered_nodes: |
| 38 | return cls._registered_nodes[node_name]['view'] |
| 39 | else: |
| 40 | return None |
| 41 | |
| 42 | registered_nodes = {} |
| 43 | for key, value in cls._registered_nodes.items(): |
| 44 | if value['parent'] == parent_node: |
| 45 | registered_nodes[key] = value['view'] |
| 46 | |
| 47 | return registered_nodes |
| 48 | |
| 49 | @classmethod |
| 50 | def get_node_view(cls, node_name): |
| 51 | """ |
| 52 | This function will return the view object for the "nodes" |
| 53 | command as per the specified node name. |
| 54 | |
| 55 | :param node_name: Name of the node ex: Database, Schema, etc.. |
| 56 | :return: |
| 57 | """ |
| 58 | cmd = {"cmd": "nodes, compare, ddl_compare"} |
| 59 | module = SchemaDiffRegistry.get_registered_nodes(node_name) |
| 60 | if not module: |
| 61 | return None |
| 62 | return module(**cmd) |
| 63 | |
| 64 | @classmethod |
| 65 | def set_schema_diff_compare_mode(cls, mode): |
| 66 | cls._schema_diff_compare_mode = mode |
| 67 | |
| 68 | @classmethod |
no outgoing calls
no test coverage detected