use of org.neo4j.procedure.Description in project neo4j by neo4j.
the class BuiltInProcedures method listConstraints.
@Deprecated(since = "4.2.0", forRemoval = true)
@SystemProcedure
@Description("List all constraints in the database.")
@Procedure(name = "db.constraints", mode = READ, deprecatedBy = "SHOW CONSTRAINTS command")
public Stream<ConstraintResult> listConstraints() {
if (callContext.isSystemDatabase()) {
return Stream.empty();
}
SchemaReadCore schemaRead = kernelTransaction.schemaRead().snapshot();
List<ConstraintResult> result = new ArrayList<>();
final List<ConstraintDescriptor> constraintDescriptors = asList(schemaRead.constraintsGetAll());
for (ConstraintDescriptor constraint : constraintDescriptors) {
String description = ConstraintsProcedureUtil.prettyPrint(constraint, kernelTransaction.tokenRead());
String details = constraint.userDescription(kernelTransaction.tokenRead());
result.add(new ConstraintResult(constraint.getName(), description, details));
}
result.sort(Comparator.comparing(r -> r.name));
return result.stream();
}
use of org.neo4j.procedure.Description in project neo4j by neo4j.
the class BuiltInProcedures method listLabels.
@SystemProcedure
@Description("List all available labels in the database.")
@Procedure(name = "db.labels", mode = READ)
public Stream<LabelResult> listLabels() {
if (callContext.isSystemDatabase()) {
return Stream.empty();
}
AccessMode mode = kernelTransaction.securityContext().mode();
TokenRead tokenRead = kernelTransaction.tokenRead();
List<LabelResult> labelsInUse;
try (KernelTransaction.Revertable ignore = kernelTransaction.overrideWith(SecurityContext.AUTH_DISABLED)) {
// Get all labels that are in use as seen by a super user
labelsInUse = stream(LABELS.inUse(kernelTransaction)).filter(label -> mode.allowsTraverseNode(tokenRead.nodeLabel(label.name()))).map(LabelResult::new).collect(Collectors.toList());
}
return labelsInUse.stream();
}
use of org.neo4j.procedure.Description in project neo4j by neo4j.
the class BuiltInProcedures method createIndex.
@Deprecated(since = "4.2.0", forRemoval = true)
@Description("Create a named schema index with specified index provider and configuration (optional). " + "Yield: name, labels, properties, providerName, status")
@Procedure(name = "db.createIndex", mode = SCHEMA, deprecatedBy = "CREATE INDEX command")
public Stream<SchemaIndexInfo> createIndex(@Name("indexName") String indexName, @Name("labels") List<String> labels, @Name("properties") List<String> properties, @Name("providerName") String providerName, @Name(value = "config", defaultValue = "{}") Map<String, Object> config) throws ProcedureException {
IndexProcedures indexProcedures = indexProcedures();
final IndexProviderDescriptor indexProviderDescriptor = getIndexProviderDescriptor(providerName);
return indexProcedures.createIndex(indexName, labels, properties, indexProviderDescriptor, config);
}
use of org.neo4j.procedure.Description in project neo4j by neo4j.
the class FulltextProcedures method queryFulltextForNodes.
@SystemProcedure
@Description("Query the given full-text index. Returns the matching nodes, and their Lucene query score, ordered by score. " + "Valid keys for the options map are: 'skip' to skip the top N results; 'limit' to limit the number of results returned.")
@Procedure(name = "db.index.fulltext.queryNodes", mode = READ)
public Stream<NodeOutput> queryFulltextForNodes(@Name("indexName") String name, @Name("queryString") String query, @Name(value = "options", defaultValue = "{}") Map<String, Object> options) throws Exception {
if (callContext.isSystemDatabase()) {
return Stream.empty();
}
IndexDescriptor indexReference = getValidIndex(name);
awaitOnline(indexReference);
EntityType entityType = indexReference.schema().entityType();
if (entityType != NODE) {
throw new IllegalArgumentException("The '" + name + "' index (" + indexReference + ") is an index on " + entityType + ", so it cannot be queried for nodes.");
}
NodeValueIndexCursor cursor = tx.cursors().allocateNodeValueIndexCursor(tx.cursorContext(), tx.memoryTracker());
IndexReadSession indexSession = tx.dataRead().indexReadSession(indexReference);
IndexQueryConstraints constraints = queryConstraints(options);
tx.dataRead().nodeIndexSeek(indexSession, cursor, constraints, PropertyIndexQuery.fulltextSearch(query));
Spliterator<NodeOutput> spliterator = new SpliteratorAdaptor<>() {
@Override
public boolean tryAdvance(Consumer<? super NodeOutput> action) {
while (cursor.next()) {
long nodeReference = cursor.nodeReference();
float score = cursor.score();
NodeOutput nodeOutput = NodeOutput.forExistingEntityOrNull(transaction, nodeReference, score);
if (nodeOutput != null) {
action.accept(nodeOutput);
return true;
}
}
cursor.close();
return false;
}
};
Stream<NodeOutput> stream = StreamSupport.stream(spliterator, false);
return stream.onClose(cursor::close);
}
use of org.neo4j.procedure.Description in project neo4j by neo4j.
the class FulltextProcedures method drop.
@Deprecated(since = "4.3.0", forRemoval = true)
@Description("Drop the specified index.")
@Procedure(name = "db.index.fulltext.drop", mode = SCHEMA, deprecatedBy = "DROP INDEX command")
public void drop(@Name("indexName") String name) {
IndexDefinition index = transaction.schema().getIndexByName(name);
if (index.getIndexType() != FULLTEXT) {
throw new IllegalArgumentException("The index called '" + name + "' is not a full-text index.");
}
index.drop();
}
Aggregations