def generate()

in sql_generators/search_v2/__init__.py [0:0]


def generate(output_dir, target_project, use_cloud_function):
    """Generate mobile search clients daily query and print to stdout."""

    base_dir = Path(__file__).parent

    output_dir = Path(output_dir) / target_project

    env = Environment(loader=FileSystemLoader(base_dir / "templates"))

    android_query_template = env.get_template("fenix.template.sql")
    ios_query_template = env.get_template("ios.template.sql")
    android_focus_template = env.get_template("android_focus.template.sql")
    android_klar_template = env.get_template("android_klar.template.sql")
    ios_focus_template = env.get_template("ios_focus.template.sql")
    ios_klar_template = env.get_template("ios_klar.template.sql")
    metadata_template = "mobile_search_clients_engines_sources_daily.metadata.yaml"

    firefox_android_queries = [
        android_query_template.render(
            namespace=namespace, app_name=app_name, channel=channel
        )
        for namespace, app_name, channel in FIREFOX_ANDROID_TUPLES
    ]

    firefox_ios_queries = [
        ios_query_template.render(
            namespace=namespace, app_name=app_name, channel=channel
        )
        for namespace, app_name, channel in FIREFOX_IOS_TUPLES
    ]

    focus_android_queries = [
        android_focus_template.render(
            namespace=namespace, app_name=app_name, channel=channel
        )
        for namespace, app_name, channel in FOCUS_ANDROID_TUPLES
    ]

    klar_android_queries = [
        android_klar_template.render(
            namespace=namespace, app_name=app_name, channel=channel
        )
        for namespace, app_name, channel in KLAR_ANDROID_TUPLES
    ]

    focus_ios_queries = [
        ios_focus_template.render(
            namespace=namespace, app_name=app_name, channel=channel
        )
        for namespace, app_name, channel in FOCUS_iOS_TUPLES
    ]

    klar_ios_queries = [
        ios_klar_template.render(
            namespace=namespace, app_name=app_name, channel=channel
        )
        for namespace, app_name, channel in KLAR_iOS_TUPLES
    ]

    queries = (
        firefox_android_queries
        + firefox_ios_queries
        + focus_android_queries
        + klar_android_queries
        + focus_ios_queries
        + klar_ios_queries
    )

    search_query_template = env.get_template("mobile_search_clients_daily.template.sql")


    fenix_combined_baseline = union_statements(
        [
            f"SELECT * FROM baseline_{namespace}"
            for namespace, _, _ in FIREFOX_ANDROID_TUPLES
        ]
    )
    
    ios_combined_baseline = union_statements(
        [f"SELECT * FROM baseline_{namespace}" for namespace, _, _ in FIREFOX_IOS_TUPLES]
    )
    android_focus_combined_baseline = union_statements(
        [
            f"SELECT * FROM baseline_{namespace}"
            for namespace, _, _ in FOCUS_ANDROID_TUPLES
        ]
    )
    android_klar_combined_baseline = union_statements(
        [
            f"SELECT * FROM baseline_{namespace}"
            for namespace, _, _ in KLAR_ANDROID_TUPLES
        ]
    )

    ios_focus_combined_baseline = union_statements(
        [f"SELECT * FROM baseline_{namespace}" for namespace, _, _ in FOCUS_iOS_TUPLES]
    )
    ios_klar_combined_baseline = union_statements(
        [f"SELECT * FROM baseline_{namespace}" for namespace, _, _ in KLAR_iOS_TUPLES]
    )

    search_query = search_query_template.render(
        baseline_by_namespace="\n".join(queries),
        fenix_baseline=fenix_combined_baseline,
        ios_metrics=ios_combined_baseline,
        android_focus_metrics=android_focus_combined_baseline,
        android_klar_metrics=android_klar_combined_baseline,
        ios_focus_metrics=ios_focus_combined_baseline,
        ios_klar_metrics=ios_klar_combined_baseline,
    )

    write_sql(
        output_dir=output_dir,
        full_table_id=f"{target_project}.{DATASET}.{TABLE_NAME}",
        basename="query.sql",
        sql=reformat(search_query),
        skip_existing=False,
    )

    write_sql(
            output_dir=output_dir,
            full_table_id=f"{target_project}.{DATASET}.{TABLE_NAME}",
            basename="metadata.yaml",
            sql=render(
                metadata_template,
                template_folder=base_dir / "templates",
                format=False,
            ),
            skip_existing=False,
    )