def __init__( self, table_name, geometry_type, geometry_column="geometry", postgres_conn_id="postgres_default", task_id="check_geo", **kwargs, ): check_safe_name(table_name) check_safe_name(geometry_column) super().__init__( # using GeometryType() returns "POINT", ST_GeometryType() returns 'ST_Point' sql=("SELECT 1 WHERE NOT EXISTS (" f'SELECT FROM "{table_name}" WHERE' f' "{geometry_column}" IS null ' f' OR NOT ST_IsValid("{geometry_column}") ' f' OR GeometryType("{geometry_column}") != %s' ")"), parameters=(geometry_type.upper(), ), # params is jinja, parameters == sql! conn_id=postgres_conn_id, task_id=task_id, **kwargs, )
def __init__( self, table_name: str, postgres_conn_id="postgres_default", task_id="table_init", drop_table=False, **kwargs, ): check_safe_name(table_name) super().__init__( task_id=task_id, sql=[], postgres_conn_id=postgres_conn_id, **kwargs ) self.table_name = table_name self.drop_table = drop_table
def __init__( self, old_table_name: str, new_table_name: str, postgres_conn_id="postgres_default", task_id="rename_table", **kwargs, ): check_safe_name(old_table_name) check_safe_name(new_table_name) super().__init__(task_id=task_id, sql=[], postgres_conn_id=postgres_conn_id, **kwargs) self.old_table_name = old_table_name self.new_table_name = new_table_name
def __init__( self, table_name, min_count, postgres_conn_id="postgres_default", task_id="check_count", **kwargs, ): check_safe_name(table_name) super().__init__( sql=f'SELECT COUNT(*) >= %s FROM "{table_name}"', parameters=(min_count, ), # params is jinja, parameters == sql! conn_id=postgres_conn_id, task_id=task_id, **kwargs, )
def __init__( self, table_name, column_names, conn_id="postgres_default", task_id="check_column_names", **kwargs, ): check_safe_name(table_name) super().__init__( sql=("SELECT column_name FROM information_schema.columns" " WHERE table_schema = 'public' AND table_name = %s" " ORDER BY column_name"), parameters=(table_name, ), # params is jinja, parameters == sql! pass_value=[[col] for col in sorted(column_names) ], # each col is in a separate row conn_id=conn_id, task_id=task_id, **kwargs, )
def __init__( self, source_table_name: str, target_table_name: str, postgres_conn_id="postgres_default", task_id="copy_table", ind_drop=True, **kwargs, ): check_safe_name(source_table_name) check_safe_name(target_table_name) super().__init__( task_id=task_id, sql=[], postgres_conn_id=postgres_conn_id, **kwargs, ) self.source_table_name = source_table_name self.target_table_name = target_table_name self.ind_drop = ind_drop