uranusjr commented on pull request #17515:
URL: https://github.com/apache/airflow/pull/17515#issuecomment-908235537


   While I understand the superiority in the design aspect of putting 
everything in `RedshiftHook`, it is quite resource-consuming to implement since 
`AwsBaseHook` and `PostgresHook` have very different features and you can’t 
easily subclass them both. So the only choice would be composition, i.e. 
something like
   
   ```python
   class RedshiftHook(BaseHook):
       def __init__(self, ...):
           ...
           self._aws_hook = AwsBaseHook(...)
           self._sql_hook = PostgresHook(...)
   
        # Cluster functions...
       def cluster_status(self, cluster_identifier: str) -> str:
           return self._aws_hook.get_conn()...
   
        # SQL functions...
       def get_records(self, sql, parameters=None):
           return self._sql_hook.get_records(sql, parameters=parameters)
   ```
   
   It would be non-trivial to get everything line up correctly and cause 
maintenance burden. Splitting the AWS and SQL functionalities into two hooks is 
the better engineering solution IMO.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to