def METHOD_NAME(
    self, engine_type: str = "postgres"
) -> t.Tuple[str, t.List[t.Any]]:
    """
    Compiles the template ready for the engine - keeping the arguments
    separate from the template.
    """
    if self._frozen_compiled_strings is not None:
        return self._frozen_compiled_strings
    _, bundled, combined_args = self.bundle(
        start_index=1, bundled=[], combined_args=[]
    )
    if engine_type in ("postgres", "cockroach"):
        string = "".join(
            fragment.prefix
            + ("" if fragment.no_arg else f"${fragment.index}")
            for fragment in bundled
        )
    elif engine_type == "sqlite":
        string = "".join(
            fragment.prefix + ("" if fragment.no_arg else "?")
            for fragment in bundled
        )
    else:
        raise Exception("Engine type not recognised")
    return (string, combined_args)