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

apoc.periodic.PeriodicExtended Maven / Gradle / Ivy

package apoc.periodic;

import apoc.Description;
import apoc.Extended;
import apoc.Pools;
import apoc.util.Util;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.logging.Log;
import org.neo4j.procedure.Context;
import org.neo4j.procedure.Mode;
import org.neo4j.procedure.Name;
import org.neo4j.procedure.Procedure;

import java.util.Map;
import java.util.stream.Stream;

import static org.neo4j.graphdb.QueryExecutionType.QueryType.READ_ONLY;
import static org.neo4j.graphdb.QueryExecutionType.QueryType.READ_WRITE;
import static org.neo4j.graphdb.QueryExecutionType.QueryType.WRITE;
import static org.neo4j.graphdb.QueryExecutionType.QueryType.SCHEMA_WRITE;

@Extended
public class PeriodicExtended {

    @Context
    public GraphDatabaseService db;
    
    @Context
    public Log log;
    
    @Context
    public Pools pools;

    @Procedure(mode = Mode.SCHEMA)
    @Description("apoc.periodic.submitSchema(name, statement, $config) - equivalent to apoc.periodic.submit which can also accept schema operations")
    public Stream submitSchema(@Name("name") String name, @Name("statement") String statement, @Name(value = "params", defaultValue = "{}") Map config) {
        validateQuery(statement);
        return PeriodicUtils.submitProc(name, statement, config, db, log, pools);
    }
    
    private void validateQuery(String statement) {
        Util.validateQuery(db, statement,
                READ_ONLY, WRITE, READ_WRITE, SCHEMA_WRITE);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy