def METHOD_NAME(
    self,
    payload: List[Dict[str, Any]],
    destination_table: Optional[str] = None,
    target: str = None,
    collection_id: Optional[str] = None,
    metadata: Optional[IIngesterPlugin.IngestionMetadata] = None,
) -> None:
    """
    Performs the ingestion
    """
    target = target or self.conf.get_duckdb_file()
    if not target:
        errors.log_and_throw(
            errors.ResolvableBy.USER_ERROR,
            log,
            "Failed to proceed with ingestion.",
            "Target was not supplied as a parameter.",
            "Will not proceed with ingestion.",
            "Set the correct target parameter.",
        )
    if not payload:
        log.debug(
            f"Payload is empty. "
            f"Nothing to ingest into {target}, table {destination_table} and collection_id: {collection_id}"
        )
        return
    log.info(
        f"Ingesting payloads for target: {target}; "
        f"collection_id: {collection_id}"
    )
    with DuckDBConnection(duckdb_file=target).new_connection() as conn:
        with closing(conn.cursor()) as cur:
            if self.conf.get_auto_create_table_enabled():
                self.__create_table_if_not_exists(cur, destination_table, payload)
            else:
                self.__check_destination_table_exists(destination_table, cur)
            self.__ingest_payload(destination_table, payload, cur)