[ 
https://issues.apache.org/jira/browse/TINKERPOP3-479?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14388687#comment-14388687
 ] 

Curtis Allen commented on TINKERPOP3-479:
-----------------------------------------

Sometimes we find it useful to know if a vertex was found or created. When 
we've implemented a {{ensure}} function it typically returns a small wrapper 
that will provide the vertex and a boolean signifying if the returned vertex 
was found or created. 
e.g.
{code:java}
public class ElementBucket<E extends 
org.apache.tinkerpop.gremlin.structure.Element> {
    private final E element;
    private final boolean created;
...
}
{code}
Our {{ensure}} method will return a type of {{ElementBucket}} so your client 
code will look something like
{code:java}
ElementBucket<Vertex> vertex = GraphTraversalContext.ensure(Constriant.UNIQUE, 
"userId", "1234")
if(vertex.isCreated){
    // add additional props
}
{code}
It would be nice if there was a way to tell if the {{ensure}} method found or 
created the  graph element. 

> Consider Providing "getOrCreate" Functionality
> ----------------------------------------------
>
>                 Key: TINKERPOP3-479
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP3-479
>             Project: TinkerPop 3
>          Issue Type: Improvement
>          Components: structure
>            Reporter: stephen mallette
>
> One of the most commonly written functions used is good ol' "getOrCreate" 
> where you want to get a {{Vertex}} if it exists or create it with supplied 
> properties if it does not.  We currently have a "helper" function for this on 
> {{ElementHelper}} 
> https://github.com/tinkerpop/tinkerpop3/blob/6d0f00865f673cb0739f6f310e1868425f732924/gremlin-core/src/main/java/com/tinkerpop/gremlin/structure/util/ElementHelper.java#L62
> but perhaps it is time to treat this issue as a first class citizen as part 
> of the Graph API.  I think that some vendors might actually be able to 
> optimize this function as well.  
> Another aspect of "getOrCreate" is "upsert" as well as options to ensure 
> uniqueness.  All of these things we've at some point or another built 
> variations of outside of TinkerPop for applications, data loading, etc.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to