def extract_sql()

in client/migrationx/migrationx-transformer/src/main/python/python2sql/py2sql.py [0:0]


def extract_sql(file):
    file_exists = os.path.exists(file)
    if not file_exists:
        print(f'file {file} not exists')

    with open(file, 'r', encoding='utf-8') as f:
        node = ast.parse(f.read(), file)

    values = []
    for item in node.body:
        if isinstance(item, ast.If) and isinstance(item.test, ast.Compare):
            if (isinstance(item.test.left, ast.Name) and item.test.left.id == '__name__' and
                    any(isinstance(op, ast.Eq) for op in item.test.ops) and
                    any(isinstance(comp, ast.Constant) and comp.value == '__main__' for comp in item.test.comparators)):
                for main_item in item.body:
                    if isinstance(main_item, ast.Assign):
                        for target in main_item.targets:
                            if isinstance(target, ast.Name):
                                if in_sql_names(target.id):
                                    if isinstance(main_item.value, ast.JoinedStr):
                                        for v in main_item.value.values:
                                            if isinstance(v, ast.Constant):
                                                replaced = handle_source_replacement(v.value)
                                                values.append(replaced)
                                            elif isinstance(v, ast.FormattedValue):
                                                if isinstance(v.value, ast.Name):
                                                    values.append("${" + replace_formatted_name(v.value.id) + "}")
    return values