# Simple upsert

UPSERT person

==>

SurrealQL(UpsertStatement(Keyword,Ident))

# Upsert ONLY

UPSERT ONLY person:tobie

==>

SurrealQL(UpsertStatement(Keyword,Keyword,RecordId(RecordTbIdent,Colon,RecordIdIdent)))

# Upsert with SET

UPSERT person SET name = "Tobie"

==>

SurrealQL(UpsertStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String))))

# Upsert with CONTENT

UPSERT person CONTENT {name: "Tobie"}

==>

SurrealQL(UpsertStatement(Keyword,Ident,ContentClause(Keyword,Object(BraceOpen,ObjectContent(ObjectProperty(ObjectKey(KeyName),Colon,String)),BraceClose))))

# Upsert with MERGE

UPSERT person MERGE {age: 31}

==>

SurrealQL(UpsertStatement(Keyword,Ident,MergeClause(Keyword,Object(BraceOpen,ObjectContent(ObjectProperty(ObjectKey(KeyName),Colon,Number(Int))),BraceClose))))

# Upsert with WHERE

UPSERT person SET age = 31 WHERE name = "Tobie"

==>

SurrealQL(UpsertStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Number(Int))),WhereClause(Keyword,BinaryExpression(Ident,Operator,String))))

# Upsert with RETURN

UPSERT person SET age = 31 RETURN AFTER

==>

SurrealQL(UpsertStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,Number(Int))),ReturnClause(Keyword,Literal)))
