# Simple create

CREATE person

==>

SurrealQL(CreateStatement(Keyword,Ident))

# Create ONLY

CREATE ONLY person

==>

SurrealQL(CreateStatement(Keyword,Keyword,Ident))

# Create with SET

CREATE person SET name = "Tobie", age = 30

==>

SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String),FieldAssignment(Ident,Operator,Number(Int)))))

# Create with CONTENT

CREATE person CONTENT {name: "Tobie", age: 30}

==>

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

# Create with RETURN fields

CREATE person SET name = "Tobie" RETURN name

==>

SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String)),ReturnClause(Keyword,Fields(Predicate(Ident)))))

# Create with RETURN AFTER

CREATE person SET name = "Tobie" RETURN AFTER

==>

SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String)),ReturnClause(Keyword,Literal)))

# Create with RETURN BEFORE

CREATE person SET name = "Tobie" RETURN BEFORE

==>

SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String)),ReturnClause(Keyword,Literal)))

# Create with RETURN DIFF

CREATE person SET name = "Tobie" RETURN DIFF

==>

SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String)),ReturnClause(Keyword,Literal)))

# Create with TIMEOUT

CREATE person SET name = "Tobie" TIMEOUT 5s

==>

SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String)),TimeoutClause(Keyword,Duration(DurationPart))))

# Create with PARALLEL

CREATE person SET name = "Tobie" PARALLEL

==>

SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String)),ParallelClause(Keyword)))

# Create with record ID target

CREATE person:tobie

==>

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

# Create with variable target

CREATE $table

==>

SurrealQL(CreateStatement(Keyword,VariableName))

# Create multiple targets

CREATE person, animal

==>

SurrealQL(CreateStatement(Keyword,Ident,Ident))
