For a couple of days, I was working on the code refactoring of Table and it's child nodes.
Problem: In pgAdmin4 child nodes of the table can be created/modified from table dialog as well as from individual node. For example: Primary Key constraint can be created/updated from tables as well as from individual primary key node.
After analyzing the code it seems that we have duplicate logic/functions in 'tables/utils.py' and '__init__.py' of the respective node.
So because of the above-described problem, if there is a bug at one place we need to fix it on both the places.
Purpose:
Remove duplicate logic.
Child node specific logic should be inside the child node and table node gets the required information from the respective child node.
Solution:
Create 'utils.py' for each child node.
Move the common logic from 'tables/utils.py' and '__init__.py' of the respective node to 'utils.py'.
Both table and its respective child access the functions from the respective 'utils.py'.
Note: Refactoring of columns node still remaining I'll start working on it.
Please review/test the patch thoroughly for tables and it's child nodes.