All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.rapidgraphql.dataloaders.GraphQLMappedBatchLoader Maven / Gradle / Ivy

package org.rapidgraphql.dataloaders;

import org.dataloader.DataLoader;
import org.dataloader.DataLoaderFactory;
import org.dataloader.MappedBatchLoader;
import org.jetbrains.annotations.NotNull;

import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;

public abstract class GraphQLMappedBatchLoader extends AbstractGraphQLBatchLoader  implements MappedBatchLoader {

    /**
     * Synchronous batch load
     * @param keys - Set of keys to load
     * @return Map of entities successfully loaded.
     * Keys that are missing in the map will be treated as null entries
     */
    abstract public Map syncLoad(Set keys);

    /**
     * This method is called by DataLoader framework to load batch of entities
     * We recommend to implement synchronous variant of this: loadSync
     * @param keys the collection of keys to load
     *
     * @return CompletionStage with Map of results
     */
    @Override
    public CompletionStage> load(Set keys) {
        return CompletableFuture.supplyAsync(() -> syncLoad(keys));
    }

    @Override
    @NotNull
    protected DataLoader createNewDataLoader() {
        return DataLoaderFactory.newMappedDataLoader(this, getDataLoaderOptions());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy