@surrealdb/lezer 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +3 -3
- package/.turbo/turbo-run-tests.log +500 -42
- package/dist/index.cjs +68 -66
- package/dist/index.js +68 -66
- package/package.json +1 -1
- package/src/parser.js +18 -18
- package/src/parser.terms.js +234 -231
- package/src/surrealql.grammar +88 -80
- package/src/tokens.js +2 -0
- package/test/misc/comments.txt +44 -0
- package/test/misc/functions.txt +63 -0
- package/test/misc/identifiers.txt +22 -0
- package/test/misc/javascript.txt +34 -0
- package/test/misc/operators.txt +213 -0
- package/test/misc/parameters.txt +23 -0
- package/test/misc/subqueries.txt +23 -0
- package/test/statements/alter.txt +47 -0
- package/test/statements/break-continue.txt +15 -0
- package/test/statements/create.txt +103 -0
- package/test/statements/define.txt +281 -0
- package/test/statements/delete.txt +63 -0
- package/test/statements/for.txt +19 -0
- package/test/statements/if-else.txt +47 -0
- package/test/statements/info.txt +63 -0
- package/test/statements/insert.txt +63 -0
- package/test/statements/let.txt +39 -0
- package/test/statements/live.txt +47 -0
- package/test/statements/option.txt +23 -0
- package/test/statements/rebuild.txt +15 -0
- package/test/statements/relate.txt +63 -0
- package/test/statements/remove.txt +95 -0
- package/test/statements/return.txt +39 -0
- package/test/statements/select.txt +231 -0
- package/test/statements/show.txt +31 -0
- package/test/statements/sleep.txt +23 -0
- package/test/statements/throw.txt +23 -0
- package/test/statements/transactions.txt +47 -0
- package/test/statements/update.txt +87 -0
- package/test/statements/upsert.txt +55 -0
- package/test/statements/use.txt +39 -0
- package/test/test-surrealql.js +81 -9
- package/test/values/arrays.txt +47 -0
- package/test/values/casting.txt +95 -0
- package/test/values/closures.txt +39 -0
- package/test/values/durations.txt +41 -0
- package/test/values/format-strings.txt +39 -0
- package/test/values/geometries.txt +23 -0
- package/test/values/idioms.txt +228 -0
- package/test/values/literals.txt +46 -0
- package/test/values/numbers.txt +75 -0
- package/test/values/objects.txt +64 -0
- package/test/values/ranges.txt +31 -0
- package/test/values/record-ids.txt +71 -0
- package/test/values/regex.txt +31 -0
- package/test/values/sets.txt +31 -0
- package/test/values/strings.txt +69 -0
- package/test/statement.txt +0 -132
- package/test/value.txt +0 -259
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Subquery with select
|
|
2
|
+
|
|
3
|
+
(SELECT * FROM test)
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
SurrealQL(SubQuery(SelectStatement(Keyword,Fields(Any),Keyword,Ident)))
|
|
8
|
+
|
|
9
|
+
# Subquery with value
|
|
10
|
+
|
|
11
|
+
(1 + 2)
|
|
12
|
+
|
|
13
|
+
==>
|
|
14
|
+
|
|
15
|
+
SurrealQL(SubQuery(BinaryExpression(Number(Int),Operator,Number(Int))))
|
|
16
|
+
|
|
17
|
+
# Subquery with create
|
|
18
|
+
|
|
19
|
+
(CREATE test)
|
|
20
|
+
|
|
21
|
+
==>
|
|
22
|
+
|
|
23
|
+
SurrealQL(SubQuery(CreateStatement(Keyword,Ident)))
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Alter table basic
|
|
2
|
+
|
|
3
|
+
ALTER TABLE person
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
SurrealQL(AlterStatement(Keyword,Keyword,Ident))
|
|
8
|
+
|
|
9
|
+
# Alter table drop
|
|
10
|
+
|
|
11
|
+
ALTER TABLE person DROP
|
|
12
|
+
|
|
13
|
+
==>
|
|
14
|
+
|
|
15
|
+
SurrealQL(AlterStatement(Keyword,Keyword,Ident,Keyword))
|
|
16
|
+
|
|
17
|
+
# Alter table schemafull
|
|
18
|
+
|
|
19
|
+
ALTER TABLE person SCHEMAFULL
|
|
20
|
+
|
|
21
|
+
==>
|
|
22
|
+
|
|
23
|
+
SurrealQL(AlterStatement(Keyword,Keyword,Ident,Keyword))
|
|
24
|
+
|
|
25
|
+
# Alter table schemaless
|
|
26
|
+
|
|
27
|
+
ALTER TABLE person SCHEMALESS
|
|
28
|
+
|
|
29
|
+
==>
|
|
30
|
+
|
|
31
|
+
SurrealQL(AlterStatement(Keyword,Keyword,Ident,Keyword))
|
|
32
|
+
|
|
33
|
+
# Alter table with comment
|
|
34
|
+
|
|
35
|
+
ALTER TABLE person COMMENT "Updated table"
|
|
36
|
+
|
|
37
|
+
==>
|
|
38
|
+
|
|
39
|
+
SurrealQL(AlterStatement(Keyword,Keyword,Ident,CommentClause(Keyword,String)))
|
|
40
|
+
|
|
41
|
+
# Alter table with permissions none
|
|
42
|
+
|
|
43
|
+
ALTER TABLE person PERMISSIONS NONE
|
|
44
|
+
|
|
45
|
+
==>
|
|
46
|
+
|
|
47
|
+
SurrealQL(AlterStatement(Keyword,Keyword,Ident,PermissionsForClause(Keyword,None)))
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Simple create
|
|
2
|
+
|
|
3
|
+
CREATE person
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
SurrealQL(CreateStatement(Keyword,Ident))
|
|
8
|
+
|
|
9
|
+
# Create ONLY
|
|
10
|
+
|
|
11
|
+
CREATE ONLY person
|
|
12
|
+
|
|
13
|
+
==>
|
|
14
|
+
|
|
15
|
+
SurrealQL(CreateStatement(Keyword,Keyword,Ident))
|
|
16
|
+
|
|
17
|
+
# Create with SET
|
|
18
|
+
|
|
19
|
+
CREATE person SET name = "Tobie", age = 30
|
|
20
|
+
|
|
21
|
+
==>
|
|
22
|
+
|
|
23
|
+
SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String),FieldAssignment(Ident,Operator,Number(Int)))))
|
|
24
|
+
|
|
25
|
+
# Create with CONTENT
|
|
26
|
+
|
|
27
|
+
CREATE person CONTENT {name: "Tobie", age: 30}
|
|
28
|
+
|
|
29
|
+
==>
|
|
30
|
+
|
|
31
|
+
SurrealQL(CreateStatement(Keyword,Ident,ContentClause(Keyword,Object(BraceOpen,ObjectContent(ObjectProperty(ObjectKey(KeyName),Colon,String),ObjectProperty(ObjectKey(KeyName),Colon,Number(Int))),BraceClose))))
|
|
32
|
+
|
|
33
|
+
# Create with RETURN fields
|
|
34
|
+
|
|
35
|
+
CREATE person SET name = "Tobie" RETURN name
|
|
36
|
+
|
|
37
|
+
==>
|
|
38
|
+
|
|
39
|
+
SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String)),ReturnClause(Keyword,Fields(Predicate(Ident)))))
|
|
40
|
+
|
|
41
|
+
# Create with RETURN AFTER
|
|
42
|
+
|
|
43
|
+
CREATE person SET name = "Tobie" RETURN AFTER
|
|
44
|
+
|
|
45
|
+
==>
|
|
46
|
+
|
|
47
|
+
SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String)),ReturnClause(Keyword,Literal)))
|
|
48
|
+
|
|
49
|
+
# Create with RETURN BEFORE
|
|
50
|
+
|
|
51
|
+
CREATE person SET name = "Tobie" RETURN BEFORE
|
|
52
|
+
|
|
53
|
+
==>
|
|
54
|
+
|
|
55
|
+
SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String)),ReturnClause(Keyword,Literal)))
|
|
56
|
+
|
|
57
|
+
# Create with RETURN DIFF
|
|
58
|
+
|
|
59
|
+
CREATE person SET name = "Tobie" RETURN DIFF
|
|
60
|
+
|
|
61
|
+
==>
|
|
62
|
+
|
|
63
|
+
SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String)),ReturnClause(Keyword,Literal)))
|
|
64
|
+
|
|
65
|
+
# Create with TIMEOUT
|
|
66
|
+
|
|
67
|
+
CREATE person SET name = "Tobie" TIMEOUT 5s
|
|
68
|
+
|
|
69
|
+
==>
|
|
70
|
+
|
|
71
|
+
SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String)),TimeoutClause(Keyword,Duration(DurationPart))))
|
|
72
|
+
|
|
73
|
+
# Create with PARALLEL
|
|
74
|
+
|
|
75
|
+
CREATE person SET name = "Tobie" PARALLEL
|
|
76
|
+
|
|
77
|
+
==>
|
|
78
|
+
|
|
79
|
+
SurrealQL(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,String)),ParallelClause(Keyword)))
|
|
80
|
+
|
|
81
|
+
# Create with record ID target
|
|
82
|
+
|
|
83
|
+
CREATE person:tobie
|
|
84
|
+
|
|
85
|
+
==>
|
|
86
|
+
|
|
87
|
+
SurrealQL(CreateStatement(Keyword,RecordId(RecordTbIdent,Colon,RecordIdIdent)))
|
|
88
|
+
|
|
89
|
+
# Create with variable target
|
|
90
|
+
|
|
91
|
+
CREATE $table
|
|
92
|
+
|
|
93
|
+
==>
|
|
94
|
+
|
|
95
|
+
SurrealQL(CreateStatement(Keyword,VariableName))
|
|
96
|
+
|
|
97
|
+
# Create multiple targets
|
|
98
|
+
|
|
99
|
+
CREATE person, animal
|
|
100
|
+
|
|
101
|
+
==>
|
|
102
|
+
|
|
103
|
+
SurrealQL(CreateStatement(Keyword,Ident,Ident))
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# Define namespace
|
|
2
|
+
|
|
3
|
+
DEFINE NAMESPACE test
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident))
|
|
8
|
+
|
|
9
|
+
# Define namespace if not exists
|
|
10
|
+
|
|
11
|
+
DEFINE NAMESPACE IF NOT EXISTS test
|
|
12
|
+
|
|
13
|
+
==>
|
|
14
|
+
|
|
15
|
+
SurrealQL(DefineStatement(Keyword,Keyword,IfNotExistsClause(Keyword,Keyword,Keyword),Ident))
|
|
16
|
+
|
|
17
|
+
# Define namespace overwrite
|
|
18
|
+
|
|
19
|
+
DEFINE NAMESPACE OVERWRITE test
|
|
20
|
+
|
|
21
|
+
==>
|
|
22
|
+
|
|
23
|
+
SurrealQL(DefineStatement(Keyword,Keyword,OverwriteClause(Keyword),Ident))
|
|
24
|
+
|
|
25
|
+
# Define database
|
|
26
|
+
|
|
27
|
+
DEFINE DATABASE test
|
|
28
|
+
|
|
29
|
+
==>
|
|
30
|
+
|
|
31
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident))
|
|
32
|
+
|
|
33
|
+
# Define user
|
|
34
|
+
|
|
35
|
+
DEFINE USER tobie ON ROOT PASSWORD "secret" ROLES owner
|
|
36
|
+
|
|
37
|
+
==>
|
|
38
|
+
|
|
39
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,OnRootNsDbClause(Keyword,Keyword),Keyword,String,Keyword,Ident))
|
|
40
|
+
|
|
41
|
+
# Define event
|
|
42
|
+
|
|
43
|
+
DEFINE EVENT myevent ON TABLE person WHEN $event = "CREATE" THEN (CREATE log)
|
|
44
|
+
|
|
45
|
+
==>
|
|
46
|
+
|
|
47
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,OnTableClause(Keyword,Keyword,Ident),WhenClause(Keyword,BinaryExpression(VariableName,Operator,String)),ThenClause(Keyword,SubQuery(CreateStatement(Keyword,Ident)))))
|
|
48
|
+
|
|
49
|
+
# Define field
|
|
50
|
+
|
|
51
|
+
DEFINE FIELD name ON TABLE person TYPE string
|
|
52
|
+
|
|
53
|
+
==>
|
|
54
|
+
|
|
55
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident),OnTableClause(Keyword,Keyword,Ident),TypeClause(Keyword,TypeName)))
|
|
56
|
+
|
|
57
|
+
# Define field with default
|
|
58
|
+
|
|
59
|
+
DEFINE FIELD age ON TABLE person TYPE number DEFAULT 0
|
|
60
|
+
|
|
61
|
+
==>
|
|
62
|
+
|
|
63
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident),OnTableClause(Keyword,Keyword,Ident),TypeClause(Keyword,TypeName),DefaultClause(Keyword,DefaultAlways,Number(Int))))
|
|
64
|
+
|
|
65
|
+
# Define field with assert
|
|
66
|
+
|
|
67
|
+
DEFINE FIELD email ON TABLE person TYPE string ASSERT $value != NONE
|
|
68
|
+
|
|
69
|
+
==>
|
|
70
|
+
|
|
71
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident),OnTableClause(Keyword,Keyword,Ident),TypeClause(Keyword,TypeName),AssertClause(Keyword,BinaryExpression(VariableName,Operator,None))))
|
|
72
|
+
|
|
73
|
+
# Define field readonly
|
|
74
|
+
|
|
75
|
+
DEFINE FIELD created ON TABLE person TYPE datetime READONLY
|
|
76
|
+
|
|
77
|
+
==>
|
|
78
|
+
|
|
79
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident),OnTableClause(Keyword,Keyword,Ident),TypeClause(Keyword,TypeName),ReadonlyClause(Keyword)))
|
|
80
|
+
|
|
81
|
+
# Define field flexible type
|
|
82
|
+
|
|
83
|
+
DEFINE FIELD data ON TABLE person FLEXIBLE TYPE object
|
|
84
|
+
|
|
85
|
+
==>
|
|
86
|
+
|
|
87
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident),OnTableClause(Keyword,Keyword,Ident),TypeClause(Keyword,Keyword,TypeName)))
|
|
88
|
+
|
|
89
|
+
# Define field with permissions
|
|
90
|
+
|
|
91
|
+
DEFINE FIELD secret ON TABLE person TYPE string PERMISSIONS FOR select, create WHERE $auth.admin = true
|
|
92
|
+
|
|
93
|
+
==>
|
|
94
|
+
|
|
95
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident),OnTableClause(Keyword,Keyword,Ident),TypeClause(Keyword,TypeName),PermissionsForClause(Keyword,PermissionGroup(Keyword,Keyword,Keyword,WhereClause(Keyword,BinaryExpression(Path(VariableName,Subscript(Ident)),Operator,Bool))))))
|
|
96
|
+
|
|
97
|
+
# Define field with reference
|
|
98
|
+
|
|
99
|
+
DEFINE FIELD author ON TABLE post TYPE record REFERENCE
|
|
100
|
+
|
|
101
|
+
==>
|
|
102
|
+
|
|
103
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident),OnTableClause(Keyword,Keyword,Ident),TypeClause(Keyword,TypeName),ReferenceClause(Keyword)))
|
|
104
|
+
|
|
105
|
+
# Define field with computed
|
|
106
|
+
|
|
107
|
+
DEFINE FIELD fullname ON TABLE person COMPUTED $value.first + " " + $value.last
|
|
108
|
+
|
|
109
|
+
==>
|
|
110
|
+
|
|
111
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Idiom(Ident),OnTableClause(Keyword,Keyword,Ident),ComputedClause(Keyword,BinaryExpression(BinaryExpression(Path(VariableName,Subscript(Ident)),Operator,String),Operator,Path(VariableName,Subscript(Ident))))))
|
|
112
|
+
|
|
113
|
+
# Define index unique
|
|
114
|
+
|
|
115
|
+
DEFINE INDEX idx_email ON TABLE person FIELDS email UNIQUE
|
|
116
|
+
|
|
117
|
+
==>
|
|
118
|
+
|
|
119
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,OnTableClause(Keyword,Keyword,Ident),FieldsColumnsClause(Keyword,Idiom(Ident)),IndexClause(UniqueClause(Keyword))))
|
|
120
|
+
|
|
121
|
+
# Define index search analyzer
|
|
122
|
+
|
|
123
|
+
DEFINE INDEX idx_search ON TABLE person FIELDS name SEARCH ANALYZER my_analyzer BM25
|
|
124
|
+
|
|
125
|
+
==>
|
|
126
|
+
|
|
127
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,OnTableClause(Keyword,Keyword,Ident),FieldsColumnsClause(Keyword,Idiom(Ident)),IndexClause(SearchAnalyzerClause(Keyword,Keyword,Ident,Bm25Clause(Keyword)))))
|
|
128
|
+
|
|
129
|
+
# Define index mtree
|
|
130
|
+
|
|
131
|
+
DEFINE INDEX idx_vec ON TABLE person FIELDS embedding MTREE DIMENSION 3
|
|
132
|
+
|
|
133
|
+
==>
|
|
134
|
+
|
|
135
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,OnTableClause(Keyword,Keyword,Ident),FieldsColumnsClause(Keyword,Idiom(Ident)),IndexClause(MtreeClause(Keyword,IndexDimensionClause(Keyword,Number(Int))))))
|
|
136
|
+
|
|
137
|
+
# Define index hnsw
|
|
138
|
+
|
|
139
|
+
DEFINE INDEX idx_vec ON TABLE person FIELDS embedding HNSW DIMENSION 3
|
|
140
|
+
|
|
141
|
+
==>
|
|
142
|
+
|
|
143
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,OnTableClause(Keyword,Keyword,Ident),FieldsColumnsClause(Keyword,Idiom(Ident)),IndexClause(HnswClause(Keyword,IndexDimensionClause(Keyword,Number(Int))))))
|
|
144
|
+
|
|
145
|
+
# Define function
|
|
146
|
+
|
|
147
|
+
DEFINE FUNCTION fn::greet($name: string) {
|
|
148
|
+
RETURN "Hello, " + $name + "!";
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
==>
|
|
152
|
+
|
|
153
|
+
SurrealQL(DefineStatement(Keyword,Keyword,FunctionName,ParamDefinition(VariableName,Colon,Type(TypeName)),Block(BraceOpen,ReturnStatement(Keyword,BinaryExpression(BinaryExpression(String,Operator,VariableName),Operator,String)),BraceClose)))
|
|
154
|
+
|
|
155
|
+
# Define param
|
|
156
|
+
|
|
157
|
+
DEFINE PARAM $endpointBase VALUE "https://dummyjson.com"
|
|
158
|
+
|
|
159
|
+
==>
|
|
160
|
+
|
|
161
|
+
SurrealQL(DefineStatement(Keyword,Keyword,VariableName,Keyword,String))
|
|
162
|
+
|
|
163
|
+
# Define table
|
|
164
|
+
|
|
165
|
+
DEFINE TABLE person
|
|
166
|
+
|
|
167
|
+
==>
|
|
168
|
+
|
|
169
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident))
|
|
170
|
+
|
|
171
|
+
# Define table schemafull
|
|
172
|
+
|
|
173
|
+
DEFINE TABLE person SCHEMAFULL
|
|
174
|
+
|
|
175
|
+
==>
|
|
176
|
+
|
|
177
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,Keyword))
|
|
178
|
+
|
|
179
|
+
# Define table schemaless
|
|
180
|
+
|
|
181
|
+
DEFINE TABLE person SCHEMALESS
|
|
182
|
+
|
|
183
|
+
==>
|
|
184
|
+
|
|
185
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,Keyword))
|
|
186
|
+
|
|
187
|
+
# Define table drop
|
|
188
|
+
|
|
189
|
+
DEFINE TABLE person DROP
|
|
190
|
+
|
|
191
|
+
==>
|
|
192
|
+
|
|
193
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,Keyword))
|
|
194
|
+
|
|
195
|
+
# Define table type relation
|
|
196
|
+
|
|
197
|
+
DEFINE TABLE knows TYPE RELATION IN person OUT person
|
|
198
|
+
|
|
199
|
+
==>
|
|
200
|
+
|
|
201
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,TableTypeClause(Keyword,Keyword,Keyword,Ident,Keyword,Ident,EnforcedClause)))
|
|
202
|
+
|
|
203
|
+
# Define table type normal
|
|
204
|
+
|
|
205
|
+
DEFINE TABLE person TYPE NORMAL
|
|
206
|
+
|
|
207
|
+
==>
|
|
208
|
+
|
|
209
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,TableTypeClause(Keyword,Keyword)))
|
|
210
|
+
|
|
211
|
+
# Define table type any
|
|
212
|
+
|
|
213
|
+
DEFINE TABLE person TYPE ANY
|
|
214
|
+
|
|
215
|
+
==>
|
|
216
|
+
|
|
217
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,TableTypeClause(Keyword,Keyword)))
|
|
218
|
+
|
|
219
|
+
# Define table as view
|
|
220
|
+
|
|
221
|
+
DEFINE TABLE adult AS SELECT * FROM person WHERE age > 18
|
|
222
|
+
|
|
223
|
+
==>
|
|
224
|
+
|
|
225
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,TableViewClause(Keyword,Keyword,Any,Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,Number(Int))))))
|
|
226
|
+
|
|
227
|
+
# Define table with changefeed
|
|
228
|
+
|
|
229
|
+
DEFINE TABLE person CHANGEFEED 1d
|
|
230
|
+
|
|
231
|
+
==>
|
|
232
|
+
|
|
233
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,ChangefeedClause(Keyword,Duration(DurationPart))))
|
|
234
|
+
|
|
235
|
+
# Define table with permissions none
|
|
236
|
+
|
|
237
|
+
DEFINE TABLE person PERMISSIONS NONE
|
|
238
|
+
|
|
239
|
+
==>
|
|
240
|
+
|
|
241
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,PermissionsForClause(Keyword,None)))
|
|
242
|
+
|
|
243
|
+
# Define table with comment
|
|
244
|
+
|
|
245
|
+
DEFINE TABLE person COMMENT "People table"
|
|
246
|
+
|
|
247
|
+
==>
|
|
248
|
+
|
|
249
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident,CommentClause(Keyword,String)))
|
|
250
|
+
|
|
251
|
+
# Define access on database
|
|
252
|
+
|
|
253
|
+
DEFINE ACCESS myaccess ON DATABASE TYPE RECORD SIGNUP (CREATE user SET email = $email) SIGNIN (SELECT * FROM user WHERE email = $email)
|
|
254
|
+
|
|
255
|
+
==>
|
|
256
|
+
|
|
257
|
+
SurrealQL(DefineStatement(Keyword,AccessDefinition(Keyword,Ident,OnRootNsDbClause(Keyword,Keyword),AccessTypeClause(Keyword,Keyword,SignupClause(Keyword,SubQuery(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,VariableName))))),SigninClause(Keyword,SubQuery(SelectStatement(Keyword,Fields(Any),Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,VariableName)))))))))
|
|
258
|
+
|
|
259
|
+
# Define config graphql
|
|
260
|
+
|
|
261
|
+
DEFINE CONFIG GRAPHQL AUTO
|
|
262
|
+
|
|
263
|
+
==>
|
|
264
|
+
|
|
265
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Keyword,Keyword))
|
|
266
|
+
|
|
267
|
+
# Define bucket
|
|
268
|
+
|
|
269
|
+
DEFINE BUCKET mybucket
|
|
270
|
+
|
|
271
|
+
==>
|
|
272
|
+
|
|
273
|
+
SurrealQL(DefineStatement(Keyword,Keyword,Ident))
|
|
274
|
+
|
|
275
|
+
# Define scope
|
|
276
|
+
|
|
277
|
+
DEFINE SCOPE account SESSION 24h SIGNUP (CREATE user SET email = $email) SIGNIN (SELECT * FROM user WHERE email = $email)
|
|
278
|
+
|
|
279
|
+
==>
|
|
280
|
+
|
|
281
|
+
SurrealQL(DefineStatement(Keyword,ScopeDefinition(Keyword,Ident,SessionClause(Keyword,Duration(DurationPart)),SignupClause(Keyword,SubQuery(CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,VariableName))))),SigninClause(Keyword,SubQuery(SelectStatement(Keyword,Fields(Any),Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,VariableName))))))))
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Simple delete
|
|
2
|
+
|
|
3
|
+
DELETE person
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
SurrealQL(DeleteStatement(Keyword,Ident))
|
|
8
|
+
|
|
9
|
+
# Delete ONLY
|
|
10
|
+
|
|
11
|
+
DELETE ONLY person:tobie
|
|
12
|
+
|
|
13
|
+
==>
|
|
14
|
+
|
|
15
|
+
SurrealQL(DeleteStatement(Keyword,Keyword,RecordId(RecordTbIdent,Colon,RecordIdIdent)))
|
|
16
|
+
|
|
17
|
+
# Delete with WHERE
|
|
18
|
+
|
|
19
|
+
DELETE person WHERE age < 18
|
|
20
|
+
|
|
21
|
+
==>
|
|
22
|
+
|
|
23
|
+
SurrealQL(DeleteStatement(Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,Number(Int)))))
|
|
24
|
+
|
|
25
|
+
# Delete with RETURN BEFORE
|
|
26
|
+
|
|
27
|
+
DELETE person RETURN BEFORE
|
|
28
|
+
|
|
29
|
+
==>
|
|
30
|
+
|
|
31
|
+
SurrealQL(DeleteStatement(Keyword,Ident,ReturnClause(Keyword,Literal)))
|
|
32
|
+
|
|
33
|
+
# Delete with TIMEOUT
|
|
34
|
+
|
|
35
|
+
DELETE person TIMEOUT 5s
|
|
36
|
+
|
|
37
|
+
==>
|
|
38
|
+
|
|
39
|
+
SurrealQL(DeleteStatement(Keyword,Ident,TimeoutClause(Keyword,Duration(DurationPart))))
|
|
40
|
+
|
|
41
|
+
# Delete with PARALLEL
|
|
42
|
+
|
|
43
|
+
DELETE person PARALLEL
|
|
44
|
+
|
|
45
|
+
==>
|
|
46
|
+
|
|
47
|
+
SurrealQL(DeleteStatement(Keyword,Ident,ParallelClause(Keyword)))
|
|
48
|
+
|
|
49
|
+
# Delete record ID
|
|
50
|
+
|
|
51
|
+
DELETE person:tobie
|
|
52
|
+
|
|
53
|
+
==>
|
|
54
|
+
|
|
55
|
+
SurrealQL(DeleteStatement(Keyword,RecordId(RecordTbIdent,Colon,RecordIdIdent)))
|
|
56
|
+
|
|
57
|
+
# Delete with WHERE and RETURN
|
|
58
|
+
|
|
59
|
+
DELETE person WHERE active = false RETURN DIFF
|
|
60
|
+
|
|
61
|
+
==>
|
|
62
|
+
|
|
63
|
+
SurrealQL(DeleteStatement(Keyword,Ident,WhereClause(Keyword,BinaryExpression(Ident,Operator,Bool)),ReturnClause(Keyword,Literal)))
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# For loop with array
|
|
2
|
+
|
|
3
|
+
FOR $item IN [1, 2, 3] {
|
|
4
|
+
CREATE item SET value = $item;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
==>
|
|
8
|
+
|
|
9
|
+
SurrealQL(ForStatement(Keyword,VariableName,Keyword,Array("[",Number(Int),Number(Int),Number(Int),"]"),Block(BraceOpen,CreateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,VariableName))),BraceClose)))
|
|
10
|
+
|
|
11
|
+
# For loop with variable
|
|
12
|
+
|
|
13
|
+
FOR $item IN $list {
|
|
14
|
+
UPDATE item SET value = $item;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
==>
|
|
18
|
+
|
|
19
|
+
SurrealQL(ForStatement(Keyword,VariableName,Keyword,VariableName,Block(BraceOpen,UpdateStatement(Keyword,Ident,SetClause(Keyword,FieldAssignment(Ident,Operator,VariableName))),BraceClose)))
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Modern if
|
|
2
|
+
|
|
3
|
+
IF $age > 18 { RETURN "adult" }
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
SurrealQL(IfElseStatement(Keyword,Modern(BinaryExpression(VariableName,Operator,Number(Int)),Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose))))
|
|
8
|
+
|
|
9
|
+
# Modern if else
|
|
10
|
+
|
|
11
|
+
IF $age > 18 { RETURN "adult" } ELSE { RETURN "minor" }
|
|
12
|
+
|
|
13
|
+
==>
|
|
14
|
+
|
|
15
|
+
SurrealQL(IfElseStatement(Keyword,Modern(BinaryExpression(VariableName,Operator,Number(Int)),Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose),Keyword,Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose))))
|
|
16
|
+
|
|
17
|
+
# Modern if else if else
|
|
18
|
+
|
|
19
|
+
IF $age > 65 { RETURN "senior" } ELSE IF $age > 18 { RETURN "adult" } ELSE { RETURN "minor" }
|
|
20
|
+
|
|
21
|
+
==>
|
|
22
|
+
|
|
23
|
+
SurrealQL(IfElseStatement(Keyword,Modern(BinaryExpression(VariableName,Operator,Number(Int)),Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose),Keyword,Keyword,BinaryExpression(VariableName,Operator,Number(Int)),Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose),Keyword,Block(BraceOpen,ReturnStatement(Keyword,String),BraceClose))))
|
|
24
|
+
|
|
25
|
+
# Legacy if then end
|
|
26
|
+
|
|
27
|
+
IF $age > 18 THEN (RETURN "adult") END
|
|
28
|
+
|
|
29
|
+
==>
|
|
30
|
+
|
|
31
|
+
SurrealQL(IfElseStatement(Keyword,Legacy(BinaryExpression(VariableName,Operator,Number(Int)),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword)))
|
|
32
|
+
|
|
33
|
+
# Legacy if then else end
|
|
34
|
+
|
|
35
|
+
IF $age > 18 THEN (RETURN "adult") ELSE (RETURN "minor") END
|
|
36
|
+
|
|
37
|
+
==>
|
|
38
|
+
|
|
39
|
+
SurrealQL(IfElseStatement(Keyword,Legacy(BinaryExpression(VariableName,Operator,Number(Int)),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword)))
|
|
40
|
+
|
|
41
|
+
# Legacy if then else if then else end
|
|
42
|
+
|
|
43
|
+
IF $age > 65 THEN (RETURN "senior") ELSE IF $age > 18 THEN (RETURN "adult") ELSE (RETURN "minor") END
|
|
44
|
+
|
|
45
|
+
==>
|
|
46
|
+
|
|
47
|
+
SurrealQL(IfElseStatement(Keyword,Legacy(BinaryExpression(VariableName,Operator,Number(Int)),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword,Keyword,BinaryExpression(VariableName,Operator,Number(Int)),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword,SubQuery(ReturnStatement(Keyword,String)),Keyword)))
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Info for root
|
|
2
|
+
|
|
3
|
+
INFO FOR ROOT
|
|
4
|
+
|
|
5
|
+
==>
|
|
6
|
+
|
|
7
|
+
SurrealQL(InfoForStatement(Keyword,Keyword,Keyword))
|
|
8
|
+
|
|
9
|
+
# Info for namespace
|
|
10
|
+
|
|
11
|
+
INFO FOR NS
|
|
12
|
+
|
|
13
|
+
==>
|
|
14
|
+
|
|
15
|
+
SurrealQL(InfoForStatement(Keyword,Keyword,Keyword))
|
|
16
|
+
|
|
17
|
+
# Info for namespace long form
|
|
18
|
+
|
|
19
|
+
INFO FOR NAMESPACE
|
|
20
|
+
|
|
21
|
+
==>
|
|
22
|
+
|
|
23
|
+
SurrealQL(InfoForStatement(Keyword,Keyword,Keyword))
|
|
24
|
+
|
|
25
|
+
# Info for database
|
|
26
|
+
|
|
27
|
+
INFO FOR DB
|
|
28
|
+
|
|
29
|
+
==>
|
|
30
|
+
|
|
31
|
+
SurrealQL(InfoForStatement(Keyword,Keyword,Keyword))
|
|
32
|
+
|
|
33
|
+
# Info for database long form
|
|
34
|
+
|
|
35
|
+
INFO FOR DATABASE
|
|
36
|
+
|
|
37
|
+
==>
|
|
38
|
+
|
|
39
|
+
SurrealQL(InfoForStatement(Keyword,Keyword,Keyword))
|
|
40
|
+
|
|
41
|
+
# Info for scope
|
|
42
|
+
|
|
43
|
+
INFO FOR SCOPE myaccount
|
|
44
|
+
|
|
45
|
+
==>
|
|
46
|
+
|
|
47
|
+
SurrealQL(InfoForStatement(Keyword,Keyword,Keyword,Ident))
|
|
48
|
+
|
|
49
|
+
# Info for table
|
|
50
|
+
|
|
51
|
+
INFO FOR TABLE person
|
|
52
|
+
|
|
53
|
+
==>
|
|
54
|
+
|
|
55
|
+
SurrealQL(InfoForStatement(Keyword,Keyword,Keyword,Ident))
|
|
56
|
+
|
|
57
|
+
# Info for table with structure
|
|
58
|
+
|
|
59
|
+
INFO FOR TABLE person STRUCTURE
|
|
60
|
+
|
|
61
|
+
==>
|
|
62
|
+
|
|
63
|
+
SurrealQL(InfoForStatement(Keyword,Keyword,Keyword,Ident,Keyword))
|