Build Logs
leviysoft/oolong • 3.8.0-RC6:2026-01-08
Errors
0
Warnings
101
Total Lines
1944
1##################################
2Clonning https://github.com/leviysoft/oolong.git into /build/repo using revision v0.5.0
3##################################
4Note: switching to '4c5643b1bda8f0ddfe95def22813c231ef952bd1'.
5
6You are in 'detached HEAD' state. You can look around, make experimental
7changes and commit them, and you can discard any commits you make in this
8state without impacting any branches by switching back to a branch.
9
10If you want to create a new branch to retain commits you create, you may
11do so (now or later) by using -c with the switch command. Example:
12
13 git switch -c <new-branch-name>
14
15Or undo this operation with:
16
17 git switch -
18
19Turn off this advice by setting config variable advice.detachedHead to false
20
21----
22Preparing build for 3.8.0-RC6
23Scala binary version found: 3.8
24Implicitly using source version 3.8
25Scala binary version found: 3.8
26Implicitly using source version 3.8
27Would try to apply common scalacOption (best-effort, sbt/mill only):
28Append: ,REQUIRE:-source:3.8
29Remove: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
30----
31Starting build for 3.8.0-RC6
32Execute tests: true
33sbt project found:
34Sbt version 1.9.9 is not supported, minimal supported version is 1.11.5
35Enforcing usage of sbt in version 1.11.5
36No prepare script found for project leviysoft/oolong
37##################################
38Scala version: 3.8.0-RC6
39Targets: io.github.leviysoft%oolong-bson io.github.leviysoft%oolong-bson-refined io.github.leviysoft%oolong-core io.github.leviysoft%oolong-mongo
40Project projectConfig: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}
41##################################
42Using extra scalacOptions: ,REQUIRE:-source:3.8
43Filtering out scalacOptions: ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
44[sbt_options] declare -a sbt_options=()
45[process_args] java_version = '17'
46[copyRt] java9_rt = '/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8/rt.jar'
47# Executing command line:
48java
49-Dfile.encoding=UTF-8
50-Doolong.print.ast=true
51-Dcommunitybuild.scala=3.8.0-RC6
52-Dcommunitybuild.project.dependencies.add=
53-Xmx7G
54-Xms4G
55-Xss8M
56-Dsbt.script=/root/.sdkman/candidates/sbt/current/bin/sbt
57-Dscala.ext.dirs=/root/.sbt/1.0/java9-rt-ext-eclipse_adoptium_17_0_8
58-jar
59/root/.sdkman/candidates/sbt/1.11.5/bin/sbt-launch.jar
60"setCrossScalaVersions 3.8.0-RC6"
61"++3.8.0-RC6 -v"
62"mapScalacOptions ",REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s" ",-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e""
63"set every credentials := Nil"
64"excludeLibraryDependency com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}"
65"removeScalacOptionsStartingWith -P:wartremover"
66
67moduleMappings
68"runBuild 3.8.0-RC6 """{"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}""" io.github.leviysoft%oolong-bson io.github.leviysoft%oolong-bson-refined io.github.leviysoft%oolong-core io.github.leviysoft%oolong-mongo"
69
70[info] welcome to sbt 1.11.5 (Eclipse Adoptium Java 17.0.8)
71[info] loading settings for project repo-build from akka.sbt, plugins.sbt...
72[info] loading project definition from /build/repo/project
73[info] compiling 3 Scala sources to /build/repo/project/target/scala-2.12/sbt-1.0/classes ...
74[info] Non-compiled module 'compiler-bridge_2.12' for Scala 2.12.20. Compiling...
75[info] Compilation completed in 8.731s.
76[info] done compiling
77[info] loading settings for project root from build.sbt...
78[info] set current project to root (in build file:/build/repo/)
79[warn] there's a key that's not used by any other settings/tasks:
80[warn]
81[warn] * ThisBuild / organization
82[warn] +- /build/repo/build.sbt:4
83[warn]
84[warn] note: a setting might still be used by a command; to exclude a key from this `lintUnused` check
85[warn] either append it to `Global / excludeLintKeys` or call .withRank(KeyRanks.Invisible) on the key
86Execute setCrossScalaVersions: 3.8.0-RC6
87OpenCB::Changing crossVersion 3.3.4 -> 3.8.0-RC6 in oolong-bson/crossScalaVersions
88OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC6) in oolong-bson/crossScalaVersions
89OpenCB::Changing crossVersion 3.3.4 -> 3.8.0-RC6 in root/crossScalaVersions
90OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC6) in root/crossScalaVersions
91OpenCB::Changing crossVersion 3.3.4 -> 3.8.0-RC6 in oolong-core/crossScalaVersions
92OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC6) in oolong-core/crossScalaVersions
93OpenCB::Changing crossVersion 3.3.4 -> 3.8.0-RC6 in oolong-bson-refined/crossScalaVersions
94OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC6) in oolong-bson-refined/crossScalaVersions
95OpenCB::Changing crossVersion 3.3.4 -> 3.8.0-RC6 in oolong-mongo-it/crossScalaVersions
96OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC6) in oolong-mongo-it/crossScalaVersions
97OpenCB::Changing crossVersion 3.3.4 -> 3.8.0-RC6 in oolong-mongo/crossScalaVersions
98OpenCB::Limitting incorrect crossVersions List(2.12.20) -> List(3.8.0-RC6) in oolong-mongo/crossScalaVersions
99[info] set current project to root (in build file:/build/repo/)
100[info] Setting Scala version to 3.8.0-RC6 on 6 projects.
101[info] Switching Scala version on:
102[info] oolong-bson (3.8.0-RC6)
103[info] * root (3.8.0-RC6)
104[info] oolong-bson-refined (3.8.0-RC6)
105[info] oolong-mongo-it (3.8.0-RC6)
106[info] oolong-mongo (3.8.0-RC6)
107[info] oolong-core (3.8.0-RC6)
108[info] Excluding projects:
109[info] Reapplying settings...
110[info] set current project to root (in build file:/build/repo/)
111Execute mapScalacOptions: ,REQUIRE:-source:3.8,-Wconf:msg=can be rewritten automatically under:s ,-deprecation,-feature,-Xfatal-warnings,-Werror,MATCH:.*-Wconf.*any:e
112[info] Reapplying settings...
113[info] set current project to root (in build file:/build/repo/)
114[info] Defining Global / credentials, credentials and 4 others.
115[info] The new values will be used by Compile / scalafmtOnly, Global / pgpSelectPassphrase and 48 others.
116[info] Run `last` for details.
117[info] Reapplying settings...
118[info] set current project to root (in build file:/build/repo/)
119Execute excludeLibraryDependency: com.github.ghik:zerowaste_{scalaVersion} com.olegpy:better-monadic-for_3 org.polyvariant:better-tostring_{scalaVersion} org.wartremover:wartremover_{scalaVersion}
120[info] Reapplying settings...
121OpenCB::Failed to reapply settings in excludeLibraryDependency: Reference to undefined setting:
122
123 Global / allExcludeDependencies from Global / allExcludeDependencies (CommunityBuildPlugin.scala:331)
124 Did you mean allExcludeDependencies ?
125 , retry without global scopes
126[info] Reapplying settings...
127[info] set current project to root (in build file:/build/repo/)
128Execute removeScalacOptionsStartingWith: -P:wartremover
129[info] Reapplying settings...
130[info] set current project to root (in build file:/build/repo/)
131[success] Total time: 0 s, completed Jan 8, 2026, 2:30:22 AM
132Build config: {"projects":{"exclude":[],"overrides":{}},"java":{"version":"17"},"sbt":{"commands":[],"options":[]},"mill":{"options":[]},"tests":"full","migrationVersions":[],"sourcePatches":[]}
133Parsed config: Success(ProjectBuildConfig(ProjectsConfig(List(),Map()),Full,List()))
134Starting build...
135Projects: Set(oolong-bson, oolong-bson-refined, oolong-core, oolong-mongo)
136Starting build for ProjectRef(file:/build/repo/,oolong-bson) (oolong-bson)... [0/4]
137OpenCB::Exclude Scala3 specific scalacOption `REQUIRE:-source:3.8` in Scala 2.12.20 module Global
138OpenCB::Filter out '-deprecation', matches setting pattern '^-?-deprecation'
139OpenCB::Filter out '-feature', matches setting pattern '^-?-feature'
140Compile scalacOptions: -encoding, utf8, -explain-types, -language:higherKinds, -language:implicitConversions, -Xunchecked-java-output-version:17, -unchecked, -Ykind-projector, -Xcheck-macros, -Yretain-trees, -Wunused:all, -Xsemanticdb, -semanticdb-target, /build/repo/oolong-bson/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
141[info] compiling 12 Scala sources to /build/repo/oolong-bson/target/scala-3.8.0-RC6/classes ...
142[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
143[warn] -- [E198] Unused Symbol Warning: /build/repo/oolong-bson/src/main/scala/oolong/bson/BsonDecoder.scala:64:26
144[warn] 64 | import quotes.reflect.*
145[warn] | ^
146[warn] | unused import
147[warn] -- [E198] Unused Symbol Warning: /build/repo/oolong-bson/src/main/scala/oolong/bson/BsonDecoder.scala:127:21
148[warn] 127 | def toSum[T: Type](mirror: Expr[Mirror.SumOf[T]], elemInstances: List[Expr[BsonDecoder[_]]])(using
149[warn] | ^^^^^^
150[warn] | unused explicit parameter
151[warn] -- [E198] Unused Symbol Warning: /build/repo/oolong-bson/src/main/scala/oolong/bson/BsonDecoder.scala:169:26
152[warn] 169 | import quotes.reflect.*
153[warn] | ^
154[warn] | unused import
155[warn] -- [E198] Unused Symbol Warning: /build/repo/oolong-bson/src/main/scala/oolong/bson/BsonEncoder.scala:36:26
156[warn] 36 | import quotes.reflect.*
157[warn] | ^
158[warn] | unused import
159[warn] -- [E198] Unused Symbol Warning: /build/repo/oolong-bson/src/main/scala/oolong/bson/BsonEncoder.scala:55:6
160[warn] 55 | mirror: Expr[Mirror.ProductOf[T]],
161[warn] | ^^^^^^
162[warn] | unused explicit parameter
163[warn] -- [E198] Unused Symbol Warning: /build/repo/oolong-bson/src/main/scala/oolong/bson/BsonEncoder.scala:117:26
164[warn] 117 | import quotes.reflect.*
165[warn] | ^
166[warn] | unused import
167[warn] -- [E198] Unused Symbol Warning: /build/repo/oolong-bson/src/main/scala/oolong/bson/annotation/BsonDiscriminator.scala:23:53
168[warn] 23 | .collect { case bd @ '{ new BsonDiscriminator($name, $fun) } =>
169[warn] | ^^^^
170[warn] | unused pattern variable
171[warn] -- [E198] Unused Symbol Warning: /build/repo/oolong-bson/src/main/scala/oolong/bson/annotation/BsonDiscriminator.scala:23:60
172[warn] 23 | .collect { case bd @ '{ new BsonDiscriminator($name, $fun) } =>
173[warn] | ^^^
174[warn] | unused pattern variable
175[warn] -- [E198] Unused Symbol Warning: /build/repo/oolong-bson/src/main/scala/oolong/bson/meta/QueryMeta.scala:18:23
176[warn] 18 | import q.reflect.*
177[warn] | ^
178[warn] | unused import
179[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/oolong-bson/src/main/scala/oolong/bson/utils/utils.scala:79:10
180[warn] 79 | (baseFieldType.asType, fieldType.asType) match
181[warn] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
182[warn] | match may not be exhaustive.
183[warn] |
184[warn] | It would fail on pattern case: (_, _)
185[warn] |
186[warn] | longer explanation available when compiling with `-explain`
187[warn] -- [E029] Pattern Match Exhaustivity Warning: /build/repo/oolong-bson/src/main/scala/oolong/bson/utils/utils.scala:103:12
188[warn] 103 | (baseType.asType, projFieldType.asType) match
189[warn] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
190[warn] | match may not be exhaustive.
191[warn] |
192[warn] | It would fail on pattern case: (_, _)
193[warn] |
194[warn] | longer explanation available when compiling with `-explain`
195[warn] 12 warnings found
196[info] done compiling
197[info] compiling 6 Scala sources to /build/repo/oolong-bson/target/scala-3.8.0-RC6/test-classes ...
198[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
199[warn] -- Warning: /build/repo/oolong-bson/src/test/scala/oolong/bson/meta/QueryMetaSpec.scala:10:1
200[warn] 10 |@nowarn("msg=unused local definition") // checks macro before expansion
201[warn] |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
202[warn] |@nowarn annotation does not suppress any warnings
203[warn] two warnings found
204[info] done compiling
205[info] BsonEncoderSpec:
206[info] - encode XXXCaseClass
207[info] - complex entity test
208[info] - container test
209[info] RoundRobinSpec:
210[info] - Regex serialization
211[info] QueryMetaSpec:
212[info] - QueryMeta[LowLevel] is correct
213[info] - QueryMeta[MiddleLevel] is correct
214[info] - QueryMeta[UpperLevel] is correct
215[info] - QueryMeta[MiddleLevelOption] is correct for Option[_] fields
216[info] - QueryMeta is correct if intermediate class meta is not specified
217[info] - QueryMeta is correct for snakeCase
218[info] - QueryMeta is correct for camelCase
219[info] - QueryMeta is correct for upperCamelCase
220[info] - QueryMeta.identity doesn't change names
221[info] - QueryMeta with renaming
222[info] - Query meta derived for projection
223[info] BsonMergeSpec:
224[info] - :+ document merge
225[info] - +: document merge
226[info] BsonDecoderSpec:
227[info] - decode XXXCaseClass
228[info] - complex entity test
229[info] - complex entity with defaults test
230[info] - container test
231Starting build for ProjectRef(file:/build/repo/,oolong-bson-refined) (oolong-bson-refined)... [1/4]
232Compile scalacOptions: -encoding, utf8, -explain-types, -language:higherKinds, -language:implicitConversions, -Xunchecked-java-output-version:17, -unchecked, -Ykind-projector, -Xcheck-macros, -Yretain-trees, -Wunused:all, -Xsemanticdb, -semanticdb-target, /build/repo/oolong-bson-refined/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
233[info] compiling 1 Scala source to /build/repo/oolong-bson-refined/target/scala-3.8.0-RC6/classes ...
234[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
235[warn] one warning found
236[info] done compiling
237[info] compiling 1 Scala source to /build/repo/oolong-bson-refined/target/scala-3.8.0-RC6/test-classes ...
238[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
239[warn] one warning found
240[info] done compiling
241[info] RoundRobinSpec:
242[info] - Refined serialization
243Starting build for ProjectRef(file:/build/repo/,oolong-core) (oolong-core)... [2/4]
244Compile scalacOptions: -encoding, utf8, -explain-types, -language:higherKinds, -language:implicitConversions, -Xunchecked-java-output-version:17, -unchecked, -Ykind-projector, -Xcheck-macros, -Yretain-trees, -Wunused:all, -Xsemanticdb, -semanticdb-target, /build/repo/oolong-core/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
245[info] compiling 8 Scala sources to /build/repo/oolong-core/target/scala-3.8.0-RC6/classes ...
246[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
247[warn] -- [E198] Unused Symbol Warning: /build/repo/oolong-core/src/main/scala/oolong/Backend.scala:27:45
248[warn] 27 | def optimize(query: OptimizableRepr)(using quotes: Quotes): OptimizableRepr = query
249[warn] | ^^^^^^
250[warn] | unused implicit parameter
251[warn] two warnings found
252[info] done compiling
253[info] compiling 2 Scala sources to /build/repo/oolong-core/target/scala-3.8.0-RC6/test-classes ...
254[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
255[warn] one warning found
256[warn] one warning found
257[info] done compiling
258[info] PropSelectorSpec:
259[info] - basic field selector
260[info] - long field selector
261[info] - one optional field selector
262[info] - repeated optional field selector
263Starting build for ProjectRef(file:/build/repo/,oolong-mongo) (oolong-mongo)... [3/4]
264Compile scalacOptions: -encoding, utf8, -explain-types, -language:higherKinds, -language:implicitConversions, -Xunchecked-java-output-version:17, -unchecked, -Ykind-projector, -Xcheck-macros, -Yretain-trees, -Wunused:all, -Xsemanticdb, -semanticdb-target, /build/repo/oolong-mongo/target/scala-3.8.0-RC6/meta, -Wconf:msg=can be rewritten automatically under:s, -source:3.8
265[info] compiling 9 Scala sources to /build/repo/oolong-mongo/target/scala-3.8.0-RC6/classes ...
266[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
267[warn] -- [E092] Pattern Match Unchecked Warning: /build/repo/oolong-mongo/src/main/scala/oolong/mongo/RenderUtils.scala:107:13
268[warn] 107 | case AsIterable(list) => list.map(parseConstant(_)(definitions)).mkString("[", ", ", "]")
269[warn] | ^
270[warn] |the type test for scala.quoted.Expr[Iterable[Any]] cannot be checked at runtime because its type arguments can't be determined from scala.quoted.Expr[Any]
271[warn] |
272[warn] | longer explanation available when compiling with `-explain`
273[warn] -- [E092] Pattern Match Unchecked Warning: /build/repo/oolong-mongo/src/main/scala/oolong/mongo/RenderUtils.scala:108:13
274[warn] 108 | case AsSome(value) => parseConstant(value)(definitions)
275[warn] | ^
276[warn] |the type test for scala.quoted.Expr[Option[Any]] cannot be checked at runtime because its type arguments can't be determined from scala.quoted.Expr[Any]
277[warn] |
278[warn] | longer explanation available when compiling with `-explain`
279[warn] three warnings found
280[info] done compiling
281[info] compiling 7 Scala sources to /build/repo/oolong-mongo/target/scala-3.8.0-RC6/test-classes ...
282[warn] Option -Ykind-projector is deprecated: Use -Xkind-projector instead.
283[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/ProjectionSpec.scala:34:25
284[info] 34 | val proj = projection[BaseClass, ProjectionClass]
285[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
286[info] |Optimized AST:
287[info] |Projection(fields = Vector("stringField1", "timeField", "innerClassField.fieldToKeep"))
288[info] |Generated Mongo query:
289[info] |{ "stringField1": 1, "timeField": 1, "innerClassField.fieldToKeep": 1 }
290[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:47:31
291[info] 47 | val q = query[TestClass](_.intField == 2)
292[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
293[info] | Optimized AST:
294[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 2))
295[info] | Generated Mongo query:
296[info] | { "intField": 2 }
297[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:48:28
298[info] 48 | val q = query[TestClass](_.intField == 2)
299[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
300[info] | Optimized AST:
301[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 2))
302[info] | Generated Mongo query:
303[info] | { "int_field": 2 }
304[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:55:28
305[info] 55 | val q = query[TestClass](_.intField > 2)
306[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
307[info] | Optimized AST:
308[info] | Gt(x = Prop(path = "intField"), y = Constant(s = 2))
309[info] | Generated Mongo query:
310[info] | { "int_field": { "$gt": 2 } }
311[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:62:28
312[info] 62 | val q = query[TestClass](_.intField >= 2)
313[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
314[info] | Optimized AST:
315[info] | Gte(x = Prop(path = "intField"), y = Constant(s = 2))
316[info] | Generated Mongo query:
317[info] | { "int_field": { "$gte": 2 } }
318[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:69:28
319[info] 69 | val q = query[TestClass](f => List(1, 2, 3).contains(f.intField))
320[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
321[info] |Optimized AST:
322[info] |In(x = Prop(path = "intField"), y = List(Constant(s = 1), Constant(s = 2), Constant(s = 3)))
323[info] |Generated Mongo query:
324[info] |{ "int_field": { "$in": [1, 2, 3] } }
325[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:80:28
326[info] 80 | val q = query[TestClass](f => !List(4, 5, 6).contains(f.intField))
327[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
328[info] |Optimized AST:
329[info] |Nin(x = Prop(path = "intField"), y = List(Constant(s = 4), Constant(s = 5), Constant(s = 6)))
330[info] |Generated Mongo query:
331[info] |{ "int_field": { "$nin": [4, 5, 6] } }
332[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:91:28
333[info] 91 | val q = query[TestClass](_.intField < 2)
334[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
335[info] | Optimized AST:
336[info] | Lt(x = Prop(path = "intField"), y = Constant(s = 2))
337[info] | Generated Mongo query:
338[info] | { "int_field": { "$lt": 2 } }
339[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:98:28
340[info] 98 | val q = query[TestClass](_.intField <= 2)
341[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
342[info] | Optimized AST:
343[info] | Lte(x = Prop(path = "intField"), y = Constant(s = 2))
344[info] | Generated Mongo query:
345[info] | { "int_field": { "$lte": 2 } }
346[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:105:28
347[info] 105 | val q = query[TestClass](_.stringField != "some")
348[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
349[info] | Optimized AST:
350[info] | Ne(x = Prop(path = "stringField"), y = Constant(s = "some"))
351[info] | Generated Mongo query:
352[info] | { "string_field": { "$ne": "some" } }
353[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:111:28
354[info] 111 | val q = query[TestClass](_.dateField == lift(LocalDate.of(2020, 12, 12)))
355[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
356[info] |Optimized AST:
357[info] |Eq(x = Prop(path = "dateField"), y = ScalaCode(code = scala.quoted.runtime.impl.ExprImpl@13ebb306))
358[info] |Generated Mongo query:
359[info] |{ "date_field": ? }
360[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:129:28
361[info] 129 | val q = query[TestClass](_.innerClassField == lift(InnerClass("one", 2)))
362[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
363[info] | Optimized AST:
364[info] | Eq(
365[info] | x = Prop(path = "innerClassField"),
366[info] | y = ScalaCode(code = scala.quoted.runtime.impl.ExprImpl@7f0d9b4d)
367[info] | )
368[info] | Generated Mongo query:
369[info] | { "inner_class_field": {"fieldOne": "one", "fieldTwo": 2} }
370[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:140:28
371[info] 140 | val q = query[TestClass](f => lift(List(1, 2, 3).filter(_ != 2)).contains(f.intField))
372[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
373[info] |Optimized AST:
374[info] |In(
375[info] | x = Prop(path = "intField"),
376[info] | y = ScalaCodeIterable(code = scala.quoted.runtime.impl.ExprImpl@2e9441d6)
377[info] |)
378[info] |Generated Mongo query:
379[info] |{ "int_field": { "$in": [?] } }
380[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:151:28
381[info] 151 | val q = query[TestClass](f => lift(List(1, 2, 3).filter(_ != 2)).contains(f.intField))
382[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
383[info] |Optimized AST:
384[info] |In(
385[info] | x = Prop(path = "intField"),
386[info] | y = ScalaCodeIterable(code = scala.quoted.runtime.impl.ExprImpl@677d406d)
387[info] |)
388[info] |Generated Mongo query:
389[info] |{ "int_field": { "$in": [?] } }
390[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:161:28
391[info] 161 | val q = query[TestClass](f => f.intField == 3 && f.stringField != "some")
392[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
393[info] | Optimized AST:
394[info] | And(
395[info] | children = List(
396[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 3)),
397[info] | Ne(x = Prop(path = "stringField"), y = Constant(s = "some"))
398[info] | )
399[info] | )
400[info] | Generated Mongo query:
401[info] | { "int_field": 3, "string_field": { "$ne": "some" } }
402[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:171:28
403[info] 171 | val q = query[TestClass](f => f.intField > 3 && f.intField != 5 && f.optionField.isEmpty)
404[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
405[info] |Optimized AST:
406[info] |And(
407[info] | children = List(
408[info] | Gt(x = Prop(path = "intField"), y = Constant(s = 3)),
409[info] | Ne(x = Prop(path = "intField"), y = Constant(s = 5)),
410[info] | Exists(x = Prop(path = "optionField"), y = Constant(s = false))
411[info] | )
412[info] |)
413[info] |Generated Mongo query:
414[info] |{ "$and": [ { "int_field": { "$gt": 3 } }, { "int_field": { "$ne": 5 } }, { "option_field": { "$exists": false } } ] }
415[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:186:28
416[info] 186 | val q = query[TestClass](f => f.intField == 3 || f.stringField != "some")
417[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
418[info] |Optimized AST:
419[info] |Or(
420[info] | children = List(
421[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 3)),
422[info] | Ne(x = Prop(path = "stringField"), y = Constant(s = "some"))
423[info] | )
424[info] |)
425[info] |Generated Mongo query:
426[info] |{ "$or": [ { "int_field": 3 }, { "string_field": { "$ne": "some" } } ] }
427[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:201:28
428[info] 201 | val q = query[TestClass](f => (f.intField == 3 || f.stringField != "some") && f.listField.isEmpty)
429[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
430[info] |Optimized AST:
431[info] |And(
432[info] | children = List(
433[info] | Or(
434[info] | children = List(
435[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 3)),
436[info] | Ne(x = Prop(path = "stringField"), y = Constant(s = "some"))
437[info] | )
438[info] | ),
439[info] | Size(x = Prop(path = "listField"), y = Constant(s = 0))
440[info] | )
441[info] |)
442[info] |Generated Mongo query:
443[info] |{ "$or": [ { "int_field": 3 }, { "string_field": { "$ne": "some" } } ], "list_field": { "$size": 0 } }
444[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:217:28
445[info] 217 | val q = query[TestClass](f => f.intField == 3 || f.stringField != "some" && f.listField.isEmpty)
446[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
447[info] |Optimized AST:
448[info] |Or(
449[info] | children = List(
450[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 3)),
451[info] | And(
452[info] | children = List(
453[info] | Ne(x = Prop(path = "stringField"), y = Constant(s = "some")),
454[info] | Size(x = Prop(path = "listField"), y = Constant(s = 0))
455[info] | )
456[info] | )
457[info] | )
458[info] |)
459[info] |Generated Mongo query:
460[info] |{ "$or": [ { "int_field": 3 }, { "string_field": { "$ne": "some" }, "list_field": { "$size": 0 } } ] }
461[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:235:28
462[info] 235 | val q = query[TestClass](f => !(f.intField == 3))
463[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
464[info] | Optimized AST:
465[info] | Ne(x = Prop(path = "intField"), y = Constant(s = 3))
466[info] | Generated Mongo query:
467[info] | { "int_field": { "$ne": 3 } }
468[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:245:28
469[info] 245 | val q = query[TestClass](f => !(f.intField > 3))
470[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
471[info] | Optimized AST:
472[info] | Not(x = Gt(x = Prop(path = "intField"), y = Constant(s = 3)))
473[info] | Generated Mongo query:
474[info] | { "int_field": { "$not": { "$gt": 3 } } }
475[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:255:28
476[info] 255 | val q = query[TestClass](f => f.optionField.isDefined)
477[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
478[info] | Optimized AST:
479[info] | Exists(x = Prop(path = "optionField"), y = Constant(s = true))
480[info] | Generated Mongo query:
481[info] | { "option_field": { "$exists": true } }
482[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:260:28
483[info] 260 | val q = query[TestClass](f => f.optionField.isEmpty)
484[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
485[info] | Optimized AST:
486[info] | Exists(x = Prop(path = "optionField"), y = Constant(s = false))
487[info] | Generated Mongo query:
488[info] | { "option_field": { "$exists": false } }
489[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:265:28
490[info] 265 | val q = query[TestClass](
491[info] | ^
492[info] | Optimized AST:
493[info] | And(
494[info] | children = List(
495[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 2)),
496[info] | Subquery(code = scala.quoted.runtime.impl.ExprImpl@7ee540ae)
497[info] | )
498[info] | )
499[info] | Generated Mongo query:
500[info] | { "int_field": 2, {...} }
501[info] 266 | _.intField == 2 && unchecked(
502[info] 267 | BsonDocument(
503[info] 268 | "innerClassField" -> BsonDocument("fieldOne" -> BsonString("one"), "fieldTwo" -> BsonInt32(2))
504[info] 269 | )
505[info] 270 | )
506[info] 271 | )
507[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:283:28
508[info] 283 | val q = query[TestClass](_.optionInnerClassField.!!.fieldTwo == 2)
509[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
510[info] |Optimized AST:
511[info] |Eq(x = Prop(path = "optionInnerClassField.fieldTwo"), y = Constant(s = 2))
512[info] |Generated Mongo query:
513[info] |{ "option_inner_class_field.field_two": 2 }
514[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:289:28
515[info] 289 | val q = query[TestClass](_.listField.isEmpty)
516[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
517[info] | Optimized AST:
518[info] | Size(x = Prop(path = "listField"), y = Constant(s = 0))
519[info] | Generated Mongo query:
520[info] | { "list_field": { "$size": 0 } }
521[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:295:28
522[info] 295 | val q = query[TestClass](_.listField.size == 2)
523[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
524[info] | Optimized AST:
525[info] | Size(x = Prop(path = "listField"), y = Constant(s = 2))
526[info] | Generated Mongo query:
527[info] | { "list_field": { "$size": 2 } }
528[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:301:28
529[info] 301 | val q = query[TestClass](_.listField.length == 2)
530[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
531[info] | Optimized AST:
532[info] | Size(x = Prop(path = "listField"), y = Constant(s = 2))
533[info] | Generated Mongo query:
534[info] | { "list_field": { "$size": 2 } }
535[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:308:28
536[info] 308 | val q = query[TestClass](_.listField.contains(1.1))
537[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
538[info] | Optimized AST:
539[info] | Eq(x = Prop(path = "listField"), y = Constant(s = 1.1))
540[info] | Generated Mongo query:
541[info] | { "list_field": 1.1 }
542[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:319:28
543[info] 319 | val q = query[TestClass](!_.listField.contains(1.1))
544[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
545[info] | Optimized AST:
546[info] | Ne(x = Prop(path = "listField"), y = Constant(s = 1.1))
547[info] | Generated Mongo query:
548[info] | { "list_field": { "$ne": 1.1 } }
549[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:330:28
550[info] 330 | val q = query[TestClass](_.optionField.contains(2L))
551[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
552[info] | Optimized AST:
553[info] | Eq(x = Prop(path = "optionField"), y = Constant(s = 2L))
554[info] | Generated Mongo query:
555[info] | { "option_field": 2 }
556[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:339:28
557[info] 339 | val q = query[TestClass](!_.optionField.contains(2L))
558[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
559[info] | Optimized AST:
560[info] | Ne(x = Prop(path = "optionField"), y = Constant(s = 2L))
561[info] | Generated Mongo query:
562[info] | { "option_field": { "$ne": 2 } }
563[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:352:28
564[info] 352 | val q = query[TestClass](mySubquery1(_))
565[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
566[info] | Optimized AST:
567[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 123))
568[info] | Generated Mongo query:
569[info] | { "int_field": 123 }
570[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:361:28
571[info] 361 | val q = query[TestClass](x => mySubquery1(x))
572[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
573[info] | Optimized AST:
574[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 123))
575[info] | Generated Mongo query:
576[info] | { "int_field": 123 }
577[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:374:28
578[info] 374 | val q = query[TestClass](myFilter(_))
579[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
580[info] | Optimized AST:
581[info] | Eq(x = Prop(path = "optionField"), y = Constant(s = 123L))
582[info] | Generated Mongo query:
583[info] | { "option_field": 123 }
584[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:387:28
585[info] 387 | val q = query[TestClass](genericSubquery(_))
586[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
587[info] | Optimized AST:
588[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 123))
589[info] | Generated Mongo query:
590[info] | { "int_field": 123 }
591[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:400:28
592[info] 400 | val q = query[TestClass](myFilter(_))
593[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
594[info] | Optimized AST:
595[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 123))
596[info] | Generated Mongo query:
597[info] | { "int_field": 123 }
598[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:411:28
599[info] 411 | val q = query[TestClass](x => x.stringField == "qqq" && mySubquery1(x))
600[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
601[info] | Optimized AST:
602[info] | And(
603[info] | children = List(
604[info] | Eq(x = Prop(path = "stringField"), y = Constant(s = "qqq")),
605[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 123))
606[info] | )
607[info] | )
608[info] | Generated Mongo query:
609[info] | { "string_field": "qqq", "int_field": 123 }
610[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:425:28
611[info] 425 | val q = query[TestClass](mySubquery2(_))
612[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
613[info] | Optimized AST:
614[info] | Or(
615[info] | children = List(
616[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 123)),
617[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 456))
618[info] | )
619[info] | )
620[info] | Generated Mongo query:
621[info] | { "$or": [ { "int_field": 123 }, { "int_field": 456 } ] }
622[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:440:28
623[info] 440 | val q = query[TestClass](_.stringField.matches("(?ix)SomeString"))
624[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
625[info] |Optimized AST:
626[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@141cf39e)
627[info] |Generated Mongo query:
628[info] |{ "string_field": { "$regex": "SomeString", "$options": "ix" } }
629[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:449:28
630[info] 449 | val q = query[TestClass](s => Pattern.matches("SomeString", s.stringField))
631[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
632[info] |Optimized AST:
633[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@45a9f2e6)
634[info] |Generated Mongo query:
635[info] |{ "string_field": { "$regex": "SomeString" } }
636[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:458:28
637[info] 458 | val q = query[TestClass](_.intField.isInstanceOf[MongoType.INT32])
638[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
639[info] |Optimized AST:
640[info] |TypeCheck(x = Prop(path = "intField"), typeInfo = oolong.DefaultAstParser$$anon$1@6987001f)
641[info] |Generated Mongo query:
642[info] |{ "int_field": { "$type": 16 } }
643[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:468:28
644[info] 468 | val q = query[TestClass](_.innerClassField.isInstanceOf[MongoType.DOCUMENT])
645[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
646[info] |Optimized AST:
647[info] |TypeCheck(x = Prop(path = "innerClassField"), typeInfo = oolong.DefaultAstParser$$anon$1@24a7711e)
648[info] |Generated Mongo query:
649[info] |{ "inner_class_field": { "$type": 3 } }
650[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:478:28
651[info] 478 | val q = query[TestClass](_.intField % lift(4) == 5.2)
652[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
653[info] |Optimized AST:
654[info] |Mod(
655[info] | x = Prop(path = "intField"),
656[info] | divisor = ScalaCode(code = scala.quoted.runtime.impl.ExprImpl@514f179b),
657[info] | remainder = Constant(s = 5.2)
658[info] |)
659[info] |Generated Mongo query:
660[info] |{ "int_field": { "$mod": [?,5.2] } }
661[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QueryWithMetaSpec.scala:495:28
662[info] 495 | val q = query[TestClass](_.doubleField % 5.2 == lift(123L))
663[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
664[info] |Optimized AST:
665[info] |Mod(
666[info] | x = Prop(path = "doubleField"),
667[info] | divisor = Constant(s = 5.2),
668[info] | remainder = ScalaCode(code = scala.quoted.runtime.impl.ExprImpl@6284dd20)
669[info] |)
670[info] |Generated Mongo query:
671[info] |{ "double_field": { "$mod": [5.2,?] } }
672[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:44:32
673[info] 44 | val q = update[TestClass](_.set(_.intField, 2))
674[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
675[info] |AST:
676[info] |Update(ops = List(Set(prop = Prop(path = "intField"), expr = Constant(t = 2))))
677[info] |Generated Mongo query:
678[info] |{
679[info] | "$set": { "intField": 2 }
680[info] |}
681[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateWithMetaSpec.scala:46:29
682[info] 46 | val q = update[TestClass](_.set(_.intField, 2))
683[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
684[info] |AST:
685[info] |Update(ops = List(Set(prop = Prop(path = "intField"), expr = Constant(t = 2))))
686[info] |Generated Mongo query:
687[info] |{
688[info] | "$set": { "int_field": 2 }
689[info] |}
690[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateWithMetaSpec.scala:52:29
691[info] 52 | val q = update[TestClass](_.setOpt(_.optionField, 2L))
692[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
693[info] |AST:
694[info] |Update(ops = List(Set(prop = Prop(path = "optionField"), expr = Constant(t = 2L))))
695[info] |Generated Mongo query:
696[info] |{
697[info] | "$set": { "option_field": 2 }
698[info] |}
699[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateWithMetaSpec.scala:58:29
700[info] 58 | val q = update[TestClass](
701[info] | ^
702[info] |AST:
703[info] |Update(
704[info] | ops = List(
705[info] | Set(
706[info] | prop = Prop(path = "optionInnerClassField"),
707[info] | expr = ScalaCode(code = scala.quoted.runtime.impl.ExprImpl@6aff954f)
708[info] | )
709[info] | )
710[info] |)
711[info] |Generated Mongo query:
712[info] |{
713[info] | "$set": { "option_inner_class_field": {"fieldOne": "some", "fieldTwo": 2, "fieldThree": null, "fieldFour": Function(LocalDate.now()), "fieldFive": {"fieldOne": 3}, "fieldSix": ["1", "2"]} }
714[info] |}
715[info] 59 | _.set(
716[info] 60 | _.optionInnerClassField.!!,
717[info] 61 | lift(InnerClass("some", 2, fieldSix = List("1", "2"), fieldFive = SecondInnerClass()))
718[info] 62 | )
719[info] 63 | )
720[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateWithMetaSpec.scala:82:29
721[info] 82 | val q = update[TestClass](_.inc(_.intField, 1))
722[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
723[info] |AST:
724[info] |Update(ops = List(Inc(prop = Prop(path = "intField"), expr = Constant(t = 1))))
725[info] |Generated Mongo query:
726[info] |{
727[info] | "$inc": { "int_field": 1 }
728[info] |}
729[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateWithMetaSpec.scala:88:29
730[info] 88 | val q = update[TestClass](_.mul(_.intField, 10))
731[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
732[info] |AST:
733[info] |Update(ops = List(Mul(prop = Prop(path = "intField"), expr = Constant(t = 10))))
734[info] |Generated Mongo query:
735[info] |{
736[info] | "$mul": { "int_field": 10 }
737[info] |}
738[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateWithMetaSpec.scala:94:29
739[info] 94 | val q = update[TestClass](_.max(_.intField, 10))
740[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
741[info] |AST:
742[info] |Update(ops = List(Max(prop = Prop(path = "intField"), expr = Constant(t = 10))))
743[info] |Generated Mongo query:
744[info] |{
745[info] | "$max": { "int_field": 10 }
746[info] |}
747[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateWithMetaSpec.scala:100:29
748[info] 100 | val q = update[TestClass](_.min(_.intField, 10))
749[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
750[info] |AST:
751[info] |Update(ops = List(Min(prop = Prop(path = "intField"), expr = Constant(t = 10))))
752[info] |Generated Mongo query:
753[info] |{
754[info] | "$min": { "int_field": 10 }
755[info] |}
756[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateWithMetaSpec.scala:106:29
757[info] 106 | val q = update[TestClass](_.rename(_.intField, "newFieldName"))
758[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
759[info] |AST:
760[info] |Update(ops = List(Rename(prop = Prop(path = "intField"), expr = Constant(t = "newFieldName"))))
761[info] |Generated Mongo query:
762[info] |{
763[info] | "$rename": { "int_field": "newFieldName" }
764[info] |}
765[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateWithMetaSpec.scala:112:29
766[info] 112 | val q = update[TestClass](_.unset(_.intField))
767[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
768[info] | AST:
769[info] | Update(ops = List(Unset(prop = Prop(path = "intField"))))
770[info] | Generated Mongo query:
771[info] | {
772[info] | "$unset": { "int_field": "" }
773[info] | }
774[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateWithMetaSpec.scala:118:29
775[info] 118 | val q = update[TestClass](_.setOnInsert(_.intField, 14))
776[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
777[info] |AST:
778[info] |Update(ops = List(SetOnInsert(prop = Prop(path = "intField"), expr = Constant(t = 14))))
779[info] |Generated Mongo query:
780[info] |{
781[info] | "$setOnInsert": { "int_field": 14 }
782[info] |}
783[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateWithMetaSpec.scala:124:29
784[info] 124 | val q = update[TestClass](
785[info] | ^
786[info] | AST:
787[info] | Update(
788[info] | ops = List(
789[info] | Unset(prop = Prop(path = "dateField")),
790[info] | Set(prop = Prop(path = "optionField"), expr = Constant(t = 2L)),
791[info] | Set(prop = Prop(path = "intField"), expr = Constant(t = 19))
792[info] | )
793[info] | )
794[info] | Generated Mongo query:
795[info] | {
796[info] | "$set": { "option_field": 2, "int_field": 19 },
797[info] | "$unset": { "date_field": "" }
798[info] | }
799[info] 125 | _.unset(_.dateField)
800[info] 126 | .setOpt(_.optionField, 2L)
801[info] 127 | .set(_.intField, 19)
802[info] 128 | )
803[warn] -- Warning: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/ProjectionSpec.scala:13:1
804[warn] 13 |@nowarn("msg=unused local definition")
805[warn] |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
806[warn] |@nowarn annotation does not suppress any warnings
807[warn] two warnings found
808[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/ProjectionSpec.scala:49:25
809[info] 49 | val proj = projection[BaseClass, ProjectionClass]
810[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
811[info] |Optimized AST:
812[info] |Projection(fields = Vector("stringField1", "timeField", "innerClassField.fieldToKeep"))
813[info] |Generated Mongo query:
814[info] |{ "string_field1": 1, "time_field": 1, "inner_class_field.field_to_keep": 1 }
815[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/ProjectionSpec.scala:98:25
816[info] 98 | val proj = projection[Base, Projection]
817[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
818[info] |Optimized AST:
819[info] |Projection(
820[info] | fields = Vector(
821[info] | "fieldTheSame",
822[info] | "fieldFullProjection",
823[info] | "fieldProjection.inner1.field1",
824[info] | "fieldProjection.inner2"
825[info] | )
826[info] |)
827[info] |Generated Mongo query:
828[info] |{ "fieldTheSame": 1, "fieldFullProjection": 1, "fieldProjection.inner1.field1": 1, "fieldProjection.inner2": 1 }
829[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/ProjectionSpec.scala:126:25
830[info] 126 | val proj = projection[Student, StudentDTO]
831[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
832[info] | Optimized AST:
833[info] | Projection(fields = Vector())
834[info] | Generated Mongo query:
835[info] | { }
836[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:55:31
837[info] 55 | val q = query[TestClass](_.intField > 2)
838[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
839[info] | Optimized AST:
840[info] | Gt(x = Prop(path = "intField"), y = Constant(s = 2))
841[info] | Generated Mongo query:
842[info] | { "intField": { "$gt": 2 } }
843[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:63:31
844[info] 63 | val q = query[TestClass](_.intField >= 2)
845[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
846[info] | Optimized AST:
847[info] | Gte(x = Prop(path = "intField"), y = Constant(s = 2))
848[info] | Generated Mongo query:
849[info] | { "intField": { "$gte": 2 } }
850[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:72:31
851[info] 72 | val q = query[TestClass](f => List(1, 2, 3).contains(f.intField))
852[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
853[info] |Optimized AST:
854[info] |In(x = Prop(path = "intField"), y = List(Constant(s = 1), Constant(s = 2), Constant(s = 3)))
855[info] |Generated Mongo query:
856[info] |{ "intField": { "$in": [1, 2, 3] } }
857[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:75:32
858[info] 75 | val q1 = query[TestClass](_.listField.contains(1.1))
859[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
860[info] | Optimized AST:
861[info] | Eq(x = Prop(path = "listField"), y = Constant(s = 1.1))
862[info] | Generated Mongo query:
863[info] | { "listField": 1.1 }
864[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:78:32
865[info] 78 | val q2 = query[TestClass](!_.listField.contains(1.1))
866[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
867[info] | Optimized AST:
868[info] | Ne(x = Prop(path = "listField"), y = Constant(s = 1.1))
869[info] | Generated Mongo query:
870[info] | { "listField": { "$ne": 1.1 } }
871[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:105:31
872[info] 105 | val q = query[TestClass](f => !List(4, 5, 6).contains(f.intField))
873[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
874[info] |Optimized AST:
875[info] |Nin(x = Prop(path = "intField"), y = List(Constant(s = 4), Constant(s = 5), Constant(s = 6)))
876[info] |Generated Mongo query:
877[info] |{ "intField": { "$nin": [4, 5, 6] } }
878[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:119:31
879[info] 119 | val q = query[TestClass](_.intField < 2)
880[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
881[info] | Optimized AST:
882[info] | Lt(x = Prop(path = "intField"), y = Constant(s = 2))
883[info] | Generated Mongo query:
884[info] | { "intField": { "$lt": 2 } }
885[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:132:31
886[info] 132 | val q = query[TestClass](_.intField <= 2)
887[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
888[info] | Optimized AST:
889[info] | Lte(x = Prop(path = "intField"), y = Constant(s = 2))
890[info] | Generated Mongo query:
891[info] | { "intField": { "$lte": 2 } }
892[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:145:31
893[info] 145 | val q = query[TestClass](_.stringField != "some")
894[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
895[info] | Optimized AST:
896[info] | Ne(x = Prop(path = "stringField"), y = Constant(s = "some"))
897[info] | Generated Mongo query:
898[info] | { "stringField": { "$ne": "some" } }
899[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:156:31
900[info] 156 | val q = query[TestClass](_.dateField == lift(LocalDate.of(2020, 12, 12)))
901[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
902[info] |Optimized AST:
903[info] |Eq(x = Prop(path = "dateField"), y = ScalaCode(code = scala.quoted.runtime.impl.ExprImpl@1d9b6e0))
904[info] |Generated Mongo query:
905[info] |{ "dateField": ? }
906[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:179:31
907[info] 179 | val q = query[TestClass](_.innerClassField == lift(InnerClass("one", 2)))
908[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
909[info] | Optimized AST:
910[info] | Eq(
911[info] | x = Prop(path = "innerClassField"),
912[info] | y = ScalaCode(code = scala.quoted.runtime.impl.ExprImpl@3d708e93)
913[info] | )
914[info] | Generated Mongo query:
915[info] | { "innerClassField": {"fieldOne": "one", "fieldTwo": 2} }
916[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:192:31
917[info] 192 | val q = query[TestClass](f => lift(List(1, 2, 3).filter(_ != 2)).contains(f.intField))
918[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
919[info] |Optimized AST:
920[info] |In(
921[info] | x = Prop(path = "intField"),
922[info] | y = ScalaCodeIterable(code = scala.quoted.runtime.impl.ExprImpl@7869410e)
923[info] |)
924[info] |Generated Mongo query:
925[info] |{ "intField": { "$in": [?] } }
926[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:208:31
927[info] 208 | val q = query[TestClass](f => lift(List(1, 2, 3).filter(_ != 2)).contains(f.intField))
928[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
929[info] |Optimized AST:
930[info] |In(
931[info] | x = Prop(path = "intField"),
932[info] | y = ScalaCodeIterable(code = scala.quoted.runtime.impl.ExprImpl@22994ee5)
933[info] |)
934[info] |Generated Mongo query:
935[info] |{ "intField": { "$in": [?] } }
936[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:222:31
937[info] 222 | val q = query[TestClass](f => f.intField == 3 && f.stringField != "some")
938[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
939[info] | Optimized AST:
940[info] | And(
941[info] | children = List(
942[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 3)),
943[info] | Ne(x = Prop(path = "stringField"), y = Constant(s = "some"))
944[info] | )
945[info] | )
946[info] | Generated Mongo query:
947[info] | { "intField": 3, "stringField": { "$ne": "some" } }
948[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:237:31
949[info] 237 | val q = query[TestClass](f => f.intField > 3 && f.intField != 5 && f.optionField.isEmpty)
950[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
951[info] |Optimized AST:
952[info] |And(
953[info] | children = List(
954[info] | Gt(x = Prop(path = "intField"), y = Constant(s = 3)),
955[info] | Ne(x = Prop(path = "intField"), y = Constant(s = 5)),
956[info] | Exists(x = Prop(path = "optionField"), y = Constant(s = false))
957[info] | )
958[info] |)
959[info] |Generated Mongo query:
960[info] |{ "$and": [ { "intField": { "$gt": 3 } }, { "intField": { "$ne": 5 } }, { "optionField": { "$exists": false } } ] }
961[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:257:31
962[info] 257 | val q = query[TestClass](f => f.intField == 3 || f.stringField != "some")
963[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
964[info] |Optimized AST:
965[info] |Or(
966[info] | children = List(
967[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 3)),
968[info] | Ne(x = Prop(path = "stringField"), y = Constant(s = "some"))
969[info] | )
970[info] |)
971[info] |Generated Mongo query:
972[info] |{ "$or": [ { "intField": 3 }, { "stringField": { "$ne": "some" } } ] }
973[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:276:31
974[info] 276 | val q = query[TestClass](f => (f.intField == 3 || f.stringField != "some") && f.listField.isEmpty)
975[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
976[info] |Optimized AST:
977[info] |And(
978[info] | children = List(
979[info] | Or(
980[info] | children = List(
981[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 3)),
982[info] | Ne(x = Prop(path = "stringField"), y = Constant(s = "some"))
983[info] | )
984[info] | ),
985[info] | Size(x = Prop(path = "listField"), y = Constant(s = 0))
986[info] | )
987[info] |)
988[info] |Generated Mongo query:
989[info] |{ "$or": [ { "intField": 3 }, { "stringField": { "$ne": "some" } } ], "listField": { "$size": 0 } }
990[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:295:31
991[info] 295 | val q = query[TestClass](f => f.intField == 3 || f.stringField != "some" && f.listField.isEmpty)
992[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
993[info] |Optimized AST:
994[info] |Or(
995[info] | children = List(
996[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 3)),
997[info] | And(
998[info] | children = List(
999[info] | Ne(x = Prop(path = "stringField"), y = Constant(s = "some")),
1000[info] | Size(x = Prop(path = "listField"), y = Constant(s = 0))
1001[info] | )
1002[info] | )
1003[info] | )
1004[info] |)
1005[info] |Generated Mongo query:
1006[info] |{ "$or": [ { "intField": 3 }, { "stringField": { "$ne": "some" }, "listField": { "$size": 0 } } ] }
1007[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:317:31
1008[info] 317 | val q = query[TestClass](f => !(f.intField == 3))
1009[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1010[info] | Optimized AST:
1011[info] | Ne(x = Prop(path = "intField"), y = Constant(s = 3))
1012[info] | Generated Mongo query:
1013[info] | { "intField": { "$ne": 3 } }
1014[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:330:31
1015[info] 330 | val q = query[TestClass](f => !(f.intField > 3))
1016[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1017[info] | Optimized AST:
1018[info] | Not(x = Gt(x = Prop(path = "intField"), y = Constant(s = 3)))
1019[info] | Generated Mongo query:
1020[info] | { "intField": { "$not": { "$gt": 3 } } }
1021[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:344:31
1022[info] 344 | val q = query[TestClass](f => f.optionField.isDefined)
1023[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1024[info] | Optimized AST:
1025[info] | Exists(x = Prop(path = "optionField"), y = Constant(s = true))
1026[info] | Generated Mongo query:
1027[info] | { "optionField": { "$exists": true } }
1028[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:355:31
1029[info] 355 | val q = query[TestClass](f => f.optionField.isEmpty)
1030[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1031[info] | Optimized AST:
1032[info] | Exists(x = Prop(path = "optionField"), y = Constant(s = false))
1033[info] | Generated Mongo query:
1034[info] | { "optionField": { "$exists": false } }
1035[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:366:28
1036[info] 366 | val q = query[TestClass](
1037[info] | ^
1038[info] | Optimized AST:
1039[info] | And(
1040[info] | children = List(
1041[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 2)),
1042[info] | Subquery(code = scala.quoted.runtime.impl.ExprImpl@7ff56813)
1043[info] | )
1044[info] | )
1045[info] | Generated Mongo query:
1046[info] | { "intField": 2, {...} }
1047[info] 367 | _.intField == 2 && unchecked(
1048[info] 368 | BsonDocument(
1049[info] 369 | "innerClassField" -> BsonDocument("fieldOne" -> BsonString("one"), "fieldTwo" -> BsonInt32(2))
1050[info] 370 | )
1051[info] 371 | )
1052[info] 372 | )
1053[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:394:31
1054[info] 394 | val q = query[TestClass](_.optionInnerClassField.!!.fieldTwo == 2)
1055[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1056[info] |Optimized AST:
1057[info] |Eq(x = Prop(path = "optionInnerClassField.fieldTwo"), y = Constant(s = 2))
1058[info] |Generated Mongo query:
1059[info] |{ "optionInnerClassField.fieldTwo": 2 }
1060[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:406:31
1061[info] 406 | val q = query[TestClass](_.listField.isEmpty)
1062[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1063[info] | Optimized AST:
1064[info] | Size(x = Prop(path = "listField"), y = Constant(s = 0))
1065[info] | Generated Mongo query:
1066[info] | { "listField": { "$size": 0 } }
1067[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:418:31
1068[info] 418 | val q = query[TestClass](_.listField.size == 2)
1069[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1070[info] | Optimized AST:
1071[info] | Size(x = Prop(path = "listField"), y = Constant(s = 2))
1072[info] | Generated Mongo query:
1073[info] | { "listField": { "$size": 2 } }
1074[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:430:31
1075[info] 430 | val q = query[TestClass](_.listField.length == 2)
1076[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1077[info] | Optimized AST:
1078[info] | Size(x = Prop(path = "listField"), y = Constant(s = 2))
1079[info] | Generated Mongo query:
1080[info] | { "listField": { "$size": 2 } }
1081[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:443:31
1082[info] 443 | val q = query[TestClass](_.listField.contains(1.1))
1083[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1084[info] | Optimized AST:
1085[info] | Eq(x = Prop(path = "listField"), y = Constant(s = 1.1))
1086[info] | Generated Mongo query:
1087[info] | { "listField": 1.1 }
1088[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:458:31
1089[info] 458 | val q = query[TestClass](!_.listField.contains(1.1))
1090[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1091[info] | Optimized AST:
1092[info] | Ne(x = Prop(path = "listField"), y = Constant(s = 1.1))
1093[info] | Generated Mongo query:
1094[info] | { "listField": { "$ne": 1.1 } }
1095[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:473:31
1096[info] 473 | val q = query[TestClass](_.optionField.contains(2L))
1097[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1098[info] | Optimized AST:
1099[info] | Eq(x = Prop(path = "optionField"), y = Constant(s = 2L))
1100[info] | Generated Mongo query:
1101[info] | { "optionField": 2 }
1102[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:488:31
1103[info] 488 | val q = query[TestClass](!_.optionField.contains(2L))
1104[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1105[info] | Optimized AST:
1106[info] | Ne(x = Prop(path = "optionField"), y = Constant(s = 2L))
1107[info] | Generated Mongo query:
1108[info] | { "optionField": { "$ne": 2 } }
1109[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:504:31
1110[info] 504 | val q = query[TestClass](mySubquery1(_))
1111[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1112[info] | Optimized AST:
1113[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 123))
1114[info] | Generated Mongo query:
1115[info] | { "intField": 123 }
1116[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:518:31
1117[info] 518 | val q = query[TestClass](x => mySubquery1(x))
1118[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1119[info] | Optimized AST:
1120[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 123))
1121[info] | Generated Mongo query:
1122[info] | { "intField": 123 }
1123[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:534:31
1124[info] 534 | val q = query[TestClass](myFilter(_))
1125[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1126[info] | Optimized AST:
1127[info] | Eq(x = Prop(path = "optionField"), y = Constant(s = 123L))
1128[info] | Generated Mongo query:
1129[info] | { "optionField": 123 }
1130[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:550:31
1131[info] 550 | val q = query[TestClass](genericSubquery(_))
1132[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1133[info] | Optimized AST:
1134[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 123))
1135[info] | Generated Mongo query:
1136[info] | { "intField": 123 }
1137[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:567:31
1138[info] 567 | val q = query[TestClass](myFilter(_))
1139[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1140[info] | Optimized AST:
1141[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 123))
1142[info] | Generated Mongo query:
1143[info] | { "intField": 123 }
1144[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:581:31
1145[info] 581 | val q = query[TestClass](x => x.stringField == "qqq" && mySubquery1(x))
1146[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1147[info] | Optimized AST:
1148[info] | And(
1149[info] | children = List(
1150[info] | Eq(x = Prop(path = "stringField"), y = Constant(s = "qqq")),
1151[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 123))
1152[info] | )
1153[info] | )
1154[info] | Generated Mongo query:
1155[info] | { "stringField": "qqq", "intField": 123 }
1156[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:599:31
1157[info] 599 | val q = query[TestClass](mySubquery2(_))
1158[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1159[info] | Optimized AST:
1160[info] | Or(
1161[info] | children = List(
1162[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 123)),
1163[info] | Eq(x = Prop(path = "intField"), y = Constant(s = 456))
1164[info] | )
1165[info] | )
1166[info] | Generated Mongo query:
1167[info] | { "$or": [ { "intField": 123 }, { "intField": 456 } ] }
1168[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:617:31
1169[info] 617 | val q = query[TestClass](_.stringField.matches("(?ix)SomeString"))
1170[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1171[info] |Optimized AST:
1172[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@34889096)
1173[info] |Generated Mongo query:
1174[info] |{ "stringField": { "$regex": "SomeString", "$options": "ix" } }
1175[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:631:31
1176[info] 631 | val q = query[TestClass](s => Pattern.compile("(?ix)SomeString").matcher(s.stringField).matches())
1177[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1178[info] |Optimized AST:
1179[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@1c3cf215)
1180[info] |Generated Mongo query:
1181[info] |{ "stringField": { "$regex": "SomeString", "$options": "ix" } }
1182[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:644:28
1183[info] 644 | val q = query[TestClass](s =>
1184[info] | ^
1185[info] |Optimized AST:
1186[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@489e62da)
1187[info] |Generated Mongo query:
1188[info] |{ "stringField": { "$regex": "SomeString", "$options": "ix" } }
1189[info] 645 | Pattern.compile("SomeString", Pattern.CASE_INSENSITIVE | Pattern.COMMENTS).matcher(s.stringField).matches()
1190[info] 646 | )
1191[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:661:31
1192[info] 661 | val q = query[TestClass](s => Pattern.matches("(?ix)SomeString", s.stringField))
1193[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1194[info] |Optimized AST:
1195[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@6115e030)
1196[info] |Generated Mongo query:
1197[info] |{ "stringField": { "$regex": "SomeString", "$options": "ix" } }
1198[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:674:31
1199[info] 674 | val q = query[TestClass](_.stringField.matches("(?ixmu)SomeString"))
1200[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1201[info] |Optimized AST:
1202[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@74896824)
1203[info] |Generated Mongo query:
1204[info] |{ "stringField": { "$regex": "SomeString", "$options": "imx" } }
1205[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:687:31
1206[info] 687 | val q = query[TestClass](s => Pattern.compile("(?ixmu)SomeString").matcher(s.stringField).matches())
1207[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1208[info] |Optimized AST:
1209[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@5dee98ef)
1210[info] |Generated Mongo query:
1211[info] |{ "stringField": { "$regex": "SomeString", "$options": "imx" } }
1212[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:700:28
1213[info] 700 | val q = query[TestClass](s =>
1214[info] | ^
1215[info] |Optimized AST:
1216[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@181373c4)
1217[info] |Generated Mongo query:
1218[info] |{ "stringField": { "$regex": "SomeString", "$options": "imx" } }
1219[info] 701 | Pattern
1220[info] 702 | .compile("SomeString", Pattern.CASE_INSENSITIVE | Pattern.COMMENTS | Pattern.MULTILINE | Pattern.UNICODE_CASE)
1221[info] 703 | .matcher(s.stringField)
1222[info] 704 | .matches()
1223[info] 705 | )
1224[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:723:31
1225[info] 723 | val q = query[TestClass](s => Pattern.matches("(?ixmu)SomeString", s.stringField))
1226[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1227[info] |Optimized AST:
1228[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@4d44644f)
1229[info] |Generated Mongo query:
1230[info] |{ "stringField": { "$regex": "SomeString", "$options": "imx" } }
1231[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:736:31
1232[info] 736 | val q = query[TestClass](s => Pattern.matches("SomeString", s.stringField))
1233[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1234[info] |Optimized AST:
1235[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@43f3619a)
1236[info] |Generated Mongo query:
1237[info] |{ "stringField": { "$regex": "SomeString" } }
1238[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:749:31
1239[info] 749 | val q = query[TestClass](s => Pattern.compile("SomeString").matcher(s.stringField).matches())
1240[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1241[info] |Optimized AST:
1242[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@2afa60f0)
1243[info] |Generated Mongo query:
1244[info] |{ "stringField": { "$regex": "SomeString" } }
1245[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:762:31
1246[info] 762 | val q = query[TestClass](s => Pattern.matches("SomeString", s.stringField))
1247[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1248[info] |Optimized AST:
1249[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@64cefcfc)
1250[info] |Generated Mongo query:
1251[info] |{ "stringField": { "$regex": "SomeString" } }
1252[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:779:31
1253[info] 779 | val q = query[TestClass](s => pattern.matcher(s.stringField).matches())
1254[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1255[info] |Optimized AST:
1256[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@6ee8bf76)
1257[info] |Generated Mongo query:
1258[info] |{ "stringField": { "$regex": "SomeString", "$options": "ix" } }
1259[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:794:34
1260[info] 794 | val q = query[TestClass](_.stringField.matches(pattern))
1261[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1262[info] |Optimized AST:
1263[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@ada70d7)
1264[info] |Generated Mongo query:
1265[info] |{ "stringField": { "$regex": "?" "$options": "?" } }
1266[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:811:34
1267[info] 811 | val q = query[TestClass](s => pattern.matcher(s.stringField).matches())
1268[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1269[info] |Optimized AST:
1270[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@6c73262)
1271[info] |Generated Mongo query:
1272[info] |{ "stringField": { "$regex": "?" "$options": "?" } }
1273[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:828:34
1274[info] 828 | val q = query[TestClass](s => pattern.matcher(s.stringField).matches())
1275[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1276[info] |Optimized AST:
1277[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@3f1cb1aa)
1278[info] |Generated Mongo query:
1279[info] |{ "stringField": { "$regex": "?" "$options": "?" } }
1280[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:843:34
1281[info] 843 | val q = query[TestClass](s => Pattern.matches(pattern, s.stringField))
1282[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1283[info] |Optimized AST:
1284[info] |Regex(x = Prop(path = "stringField"), pattern = scala.quoted.runtime.impl.ExprImpl@40821024)
1285[info] |Generated Mongo query:
1286[info] |{ "stringField": { "$regex": "?" "$options": "?" } }
1287[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:858:31
1288[info] 858 | val q = query[TestClass](_.intField.isInstanceOf[MongoType.INT32])
1289[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1290[info] |Optimized AST:
1291[info] |TypeCheck(x = Prop(path = "intField"), typeInfo = oolong.DefaultAstParser$$anon$1@7b464844)
1292[info] |Generated Mongo query:
1293[info] |{ "intField": { "$type": 16 } }
1294[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:871:31
1295[info] 871 | val q = query[TestClass](_.innerClassField.isInstanceOf[MongoType.DOCUMENT])
1296[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1297[info] |Optimized AST:
1298[info] |TypeCheck(x = Prop(path = "innerClassField"), typeInfo = oolong.DefaultAstParser$$anon$1@2fbc9487)
1299[info] |Generated Mongo query:
1300[info] |{ "innerClassField": { "$type": 3 } }
1301[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:884:31
1302[info] 884 | val q = query[TestClass](_.intField % lift(4) == 5.2)
1303[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1304[info] |Optimized AST:
1305[info] |Mod(
1306[info] | x = Prop(path = "intField"),
1307[info] | divisor = ScalaCode(code = scala.quoted.runtime.impl.ExprImpl@2466e5d4),
1308[info] | remainder = Constant(s = 5.2)
1309[info] |)
1310[info] |Generated Mongo query:
1311[info] |{ "intField": { "$mod": [?,5.2] } }
1312[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:906:31
1313[info] 906 | val q = query[TestClass](_.doubleField % 5.2 == lift(123L))
1314[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1315[info] |Optimized AST:
1316[info] |Mod(
1317[info] | x = Prop(path = "doubleField"),
1318[info] | divisor = Constant(s = 5.2),
1319[info] | remainder = ScalaCode(code = scala.quoted.runtime.impl.ExprImpl@7b8b28d)
1320[info] |)
1321[info] |Generated Mongo query:
1322[info] |{ "doubleField": { "$mod": [5.2,?] } }
1323[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:938:26
1324[info] 938 | val q = query[Test](_.field % 2 == 2)
1325[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1326[info] |Optimized AST:
1327[info] |Mod(x = Prop(path = "field"), divisor = Constant(s = 2), remainder = Constant(s = 2))
1328[info] |Generated Mongo query:
1329[info] |{ "field": { "$mod": [2,2] } }
1330[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:961:26
1331[info] 961 | val q = query[Test](_.array.exists(s => s.a > 2 && s.b == "123"))
1332[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1333[info] | Optimized AST:
1334[info] | ElemMatch(
1335[info] | x = Prop(path = "array"),
1336[info] | y = And(
1337[info] | children = List(
1338[info] | Gt(x = Prop(path = "a"), y = Constant(s = 2)),
1339[info] | Eq(x = Prop(path = "b"), y = Constant(s = "123"))
1340[info] | )
1341[info] | )
1342[info] | )
1343[info] | Generated Mongo query:
1344[info] | { "array": { "$elemMatch": { "a": { "$gt": 2 }, "b": "123" } } }
1345[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:981:26
1346[info] 981 | val q = query[Test](_.array.exists(s => s > 2 && s <= 100))
1347[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1348[info] | Optimized AST:
1349[info] | ElemMatch(
1350[info] | x = Prop(path = "array"),
1351[info] | y = And(
1352[info] | children = List(
1353[info] | Gt(x = Prop(path = ""), y = Constant(s = 2)),
1354[info] | Lte(x = Prop(path = ""), y = Constant(s = 100))
1355[info] | )
1356[info] | )
1357[info] | )
1358[info] | Generated Mongo query:
1359[info] | { "array": { "$elemMatch": { "$gt": 2, "$lte": 100 } } }
1360[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:1002:26
1361[info] 1002 | val q = query[Test](_.array.exists(s => s.a > 2 && s.a < 100 && s.b == "123"))
1362[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1363[info] |Optimized AST:
1364[info] |ElemMatch(
1365[info] | x = Prop(path = "array"),
1366[info] | y = And(
1367[info] | children = List(
1368[info] | Gt(x = Prop(path = "a"), y = Constant(s = 2)),
1369[info] | Lt(x = Prop(path = "a"), y = Constant(s = 100)),
1370[info] | Eq(x = Prop(path = "b"), y = Constant(s = "123"))
1371[info] | )
1372[info] | )
1373[info] |)
1374[info] |Generated Mongo query:
1375[info] |{ "array": { "$elemMatch": { "$and": [ { "a": { "$gt": 2 } }, { "a": { "$lt": 100 } }, { "b": "123" } ] } } }
1376[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:1027:26
1377[info] 1027 | val q = query[Test](_.array.exists(s => s < 100))
1378[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1379[info] |Optimized AST:
1380[info] |ElemMatch(x = Prop(path = "array"), y = Lt(x = Prop(path = ""), y = Constant(s = 100)))
1381[info] |Generated Mongo query:
1382[info] |{ "array": { "$lt": 100 } }
1383[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:1041:26
1384[info] 1041 | val q = query[Base](_.array0.exists(_.array1.exists(_ > 100)))
1385[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1386[info] |Optimized AST:
1387[info] |ElemMatch(
1388[info] | x = Prop(path = "array0"),
1389[info] | y = ElemMatch(x = Prop(path = "array1"), y = Gt(x = Prop(path = ""), y = Constant(s = 100)))
1390[info] |)
1391[info] |Generated Mongo query:
1392[info] |{ "array0.array1": { "$gt": 100 } }
1393[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:1058:35
1394[info] 1058 | val q = query[LotteryTicket](lt => winningNumbers.forall(lt.numbers.contains))
1395[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1396[info] | Optimized AST:
1397[info] | All(
1398[info] | x = Prop(path = "numbers"),
1399[info] | y = List(
1400[info] | Constant(s = 4),
1401[info] | Constant(s = 8),
1402[info] | Constant(s = 15),
1403[info] | Constant(s = 16),
1404[info] | Constant(s = 23),
1405[info] | Constant(s = 42)
1406[info] | )
1407[info] | )
1408[info] | Generated Mongo query:
1409[info] | { "numbers": { "$all": [4, 8, 15, 16, 23, 42] } }
1410[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:1084:35
1411[info] 1084 | val q = query[LotteryTicket](lt => lift(winningNumbers).forall(lt.numbers.contains))
1412[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1413[info] |Optimized AST:
1414[info] |All(
1415[info] | x = Prop(path = "numbers"),
1416[info] | y = ScalaCodeIterable(code = scala.quoted.runtime.impl.ExprImpl@702d17cb)
1417[info] |)
1418[info] |Generated Mongo query:
1419[info] |{ "numbers": { "$all": [?] } }
1420[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:1111:33
1421[info] 1111 | val q = query[LotteryTickets](lts =>
1422[info] | ^
1423[info] |Optimized AST:
1424[info] |And(
1425[info] | children = List(
1426[info] | ElemMatch(
1427[info] | x = Prop(path = "tickets"),
1428[info] | y = Size(x = Prop(path = "numbers"), y = Constant(s = 20))
1429[info] | ),
1430[info] | ElemMatch(
1431[info] | x = Prop(path = "tickets"),
1432[info] | y = And(
1433[info] | children = List(
1434[info] | Size(x = Prop(path = "numbers"), y = Constant(s = 10)),
1435[info] | Eq(x = Prop(path = "series"), y = Constant(s = 99L))
1436[info] | )
1437[info] | )
1438[info] | )
1439[info] | )
1440[info] |)
1441[info] |Generated Mongo query:
1442[info] |{ "tickets": { "$all": [{ "$elemMatch": { "numbers": { "$size": 20 } } }, { "$elemMatch": { "numbers": { "$size": 10 }, "series": 99 } }] } }
1443[info] 1112 | lts.tickets.exists(_.numbers.size == 20) && lts.tickets.exists(ticket =>
1444[info] 1113 | ticket.numbers.size == 10 && ticket.series == 99L
1445[info] 1114 | )
1446[info] 1115 | )
1447[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:1153:33
1448[info] 1153 | val q = query[LottoTicket](lt => Vector(firstColumn, secondColumn).forall(lt.numbers.contains))
1449[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1450[info] |Optimized AST:
1451[info] |All(
1452[info] | x = Prop(path = "numbers"),
1453[info] | y = List(
1454[info] | Collection(s = List(Constant(s = 1), Constant(s = 7), Constant(s = 9))),
1455[info] | Collection(s = List(Constant(s = 11), Constant(s = 17), Constant(s = 18)))
1456[info] | )
1457[info] |)
1458[info] |Generated Mongo query:
1459[info] |{ "numbers": { "$all": [[ 1,7,9 ], [ 11,17,18 ]] } }
1460[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:1172:28
1461[info] 1172 | val q = query[BDTest](_.field == BigDecimal(4.2))
1462[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1463[info] | Optimized AST:
1464[info] | Eq(x = Prop(path = "field"), y = Constant(s = 4.2))
1465[info] | Generated Mongo query:
1466[info] | { "field": 4.2 }
1467[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:1186:28
1468[info] 1186 | val q = query[BITest](_.field == BigInt(2_000_000_000L))
1469[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1470[info] | Optimized AST:
1471[info] | Eq(x = Prop(path = "field"), y = Constant(s = 2000000000L))
1472[info] | Generated Mongo query:
1473[info] | { "field": 2000000000 }
1474[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:1202:36
1475[info] 1202 | val q = query[InstantTest](_.field.isBefore(lift(instant)))
1476[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1477[info] |Optimized AST:
1478[info] |Lt(x = Prop(path = "field"), y = ScalaCode(code = scala.quoted.runtime.impl.ExprImpl@52dfd549))
1479[info] |Generated Mongo query:
1480[info] |{ "field": { "$lt": ? } }
1481[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:1219:36
1482[info] 1219 | val q = query[InstantTest](_.field.isAfter(lift(instant)))
1483[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1484[info] |Optimized AST:
1485[info] |Gt(x = Prop(path = "field"), y = ScalaCode(code = scala.quoted.runtime.impl.ExprImpl@3e65a7da))
1486[info] |Generated Mongo query:
1487[info] |{ "field": { "$gt": ? } }
1488[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/QuerySpec.scala:1237:21
1489[info] 1237 | query[NameTest](nt => Pattern.compile(n, Pattern.CASE_INSENSITIVE).matcher(nt.name).matches())
1490[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1491[info] |Optimized AST:
1492[info] |Regex(x = Prop(path = "name"), pattern = scala.quoted.runtime.impl.ExprImpl@3a507f69)
1493[info] |Generated Mongo query:
1494[info] |{ "name": { "$regex": "?" "$options": "?" } }
1495[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:55:32
1496[info] 55 | val q = update[TestClass](_.setOpt(_.optionField, 2L))
1497[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1498[info] |AST:
1499[info] |Update(ops = List(Set(prop = Prop(path = "optionField"), expr = Constant(t = 2L))))
1500[info] |Generated Mongo query:
1501[info] |{
1502[info] | "$set": { "optionField": 2 }
1503[info] |}
1504[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:66:29
1505[info] 66 | val q = update[TestClass](
1506[info] | ^
1507[info] |AST:
1508[info] |Update(
1509[info] | ops = List(
1510[info] | Set(
1511[info] | prop = Prop(path = "optionInnerClassField"),
1512[info] | expr = ScalaCode(code = scala.quoted.runtime.impl.ExprImpl@62292d79)
1513[info] | )
1514[info] | )
1515[info] |)
1516[info] |Generated Mongo query:
1517[info] |{
1518[info] | "$set": { "optionInnerClassField": {"fieldOne": "some", "fieldTwo": 2, "fieldThree": null, "fieldFour": Function(LocalDate.now()), "fieldFive": {"fieldOne": 3}, "fieldSix": ["1", "2"]} }
1519[info] |}
1520[info] 67 | _.set(
1521[info] 68 | _.optionInnerClassField.!!,
1522[info] 69 | lift(InnerClass("some", 2, fieldSix = List("1", "2"), fieldFive = SecondInnerClass()))
1523[info] 70 | )
1524[info] 71 | )
1525[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:100:32
1526[info] 100 | val q = update[TestClass](_.inc(_.intField, 1))
1527[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1528[info] |AST:
1529[info] |Update(ops = List(Inc(prop = Prop(path = "intField"), expr = Constant(t = 1))))
1530[info] |Generated Mongo query:
1531[info] |{
1532[info] | "$inc": { "intField": 1 }
1533[info] |}
1534[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:111:32
1535[info] 111 | val q = update[TestClass](_.mul(_.intField, 10))
1536[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1537[info] |AST:
1538[info] |Update(ops = List(Mul(prop = Prop(path = "intField"), expr = Constant(t = 10))))
1539[info] |Generated Mongo query:
1540[info] |{
1541[info] | "$mul": { "intField": 10 }
1542[info] |}
1543[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:122:32
1544[info] 122 | val q = update[TestClass](_.max(_.intField, 10))
1545[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1546[info] |AST:
1547[info] |Update(ops = List(Max(prop = Prop(path = "intField"), expr = Constant(t = 10))))
1548[info] |Generated Mongo query:
1549[info] |{
1550[info] | "$max": { "intField": 10 }
1551[info] |}
1552[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:133:32
1553[info] 133 | val q = update[TestClass](_.min(_.intField, 10))
1554[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1555[info] |AST:
1556[info] |Update(ops = List(Min(prop = Prop(path = "intField"), expr = Constant(t = 10))))
1557[info] |Generated Mongo query:
1558[info] |{
1559[info] | "$min": { "intField": 10 }
1560[info] |}
1561[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:144:32
1562[info] 144 | val q = update[TestClass](_.rename(_.intField, "newFieldName"))
1563[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1564[info] |AST:
1565[info] |Update(ops = List(Rename(prop = Prop(path = "intField"), expr = Constant(t = "newFieldName"))))
1566[info] |Generated Mongo query:
1567[info] |{
1568[info] | "$rename": { "intField": "newFieldName" }
1569[info] |}
1570[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:155:32
1571[info] 155 | val q = update[TestClass](_.unset(_.intField))
1572[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1573[info] | AST:
1574[info] | Update(ops = List(Unset(prop = Prop(path = "intField"))))
1575[info] | Generated Mongo query:
1576[info] | {
1577[info] | "$unset": { "intField": "" }
1578[info] | }
1579[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:166:32
1580[info] 166 | val q = update[TestClass](_.setOnInsert(_.intField, 14))
1581[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1582[info] |AST:
1583[info] |Update(ops = List(SetOnInsert(prop = Prop(path = "intField"), expr = Constant(t = 14))))
1584[info] |Generated Mongo query:
1585[info] |{
1586[info] | "$setOnInsert": { "intField": 14 }
1587[info] |}
1588[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:177:32
1589[info] 177 | val q = update[TestClass](_.addToSet(_.listField, 1))
1590[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1591[info] |AST:
1592[info] |Update(
1593[info] | ops = List(
1594[info] | AddToSet(prop = Prop(path = "listField"), expr = Constant(t = 1), multipleValues = false)
1595[info] | )
1596[info] |)
1597[info] |Generated Mongo query:
1598[info] |{
1599[info] | "$addToSet": { "listField": 1 }
1600[info] |}
1601[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:187:32
1602[info] 187 | val q = update[TestClass](_.addToSet(_.nestedListField, List(1, 2, 3)))
1603[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1604[info] |AST:
1605[info] |Update(
1606[info] | ops = List(
1607[info] | AddToSet(
1608[info] | prop = Prop(path = "nestedListField"),
1609[info] | expr = UIterable(t = List(Constant(t = 1), Constant(t = 2), Constant(t = 3))),
1610[info] | multipleValues = false
1611[info] | )
1612[info] | )
1613[info] |)
1614[info] |Generated Mongo query:
1615[info] |{
1616[info] | "$addToSet": { "nestedListField": [1,2,3] }
1617[info] |}
1618[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:197:32
1619[info] 197 | val q = update[TestClass](_.addToSetAll(_.listField, List(1)))
1620[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1621[info] | AST:
1622[info] | Update(
1623[info] | ops = List(
1624[info] | AddToSet(
1625[info] | prop = Prop(path = "listField"),
1626[info] | expr = UIterable(t = List(Constant(t = 1))),
1627[info] | multipleValues = true
1628[info] | )
1629[info] | )
1630[info] | )
1631[info] | Generated Mongo query:
1632[info] | {
1633[info] | "$addToSet": { "listField": { "$each" : [1] } }
1634[info] | }
1635[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:207:32
1636[info] 207 | val q = update[TestClass](_.addToSetAll(_.nestedListField, lift(List(List(1, 2, 3)))))
1637[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1638[info] |AST:
1639[info] |Update(
1640[info] | ops = List(
1641[info] | AddToSet(
1642[info] | prop = Prop(path = "nestedListField"),
1643[info] | expr = ScalaCodeIterable(code = scala.quoted.runtime.impl.ExprImpl@6a111af),
1644[info] | multipleValues = true
1645[info] | )
1646[info] | )
1647[info] |)
1648[info] |Generated Mongo query:
1649[info] |{
1650[info] | "$addToSet": { "nestedListField": { "$each" : [ ? ] } }
1651[info] |}
1652[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:222:32
1653[info] 222 | val q = update[TestClass](_.popHead(_.nestedListField))
1654[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1655[info] |AST:
1656[info] |Update(ops = List(Pop(prop = Prop(path = "nestedListField"), remove = First)))
1657[info] |Generated Mongo query:
1658[info] |{
1659[info] | "$pop": { "nestedListField": -1 }
1660[info] |}
1661[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:236:32
1662[info] 236 | val q = update[TestClass](_.popLast(_.nestedListField))
1663[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1664[info] |AST:
1665[info] |Update(ops = List(Pop(prop = Prop(path = "nestedListField"), remove = Last)))
1666[info] |Generated Mongo query:
1667[info] |{
1668[info] | "$pop": { "nestedListField": 1 }
1669[info] |}
1670[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:250:32
1671[info] 250 | val q = update[TestClass](_.pull(_.listField, _ == 2))
1672[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1673[info] |AST:
1674[info] |Update(
1675[info] | ops = List(
1676[info] | Pull(prop = Prop(path = "listField"), cond = Eq(x = Prop(path = ""), y = Constant(s = 2)))
1677[info] | )
1678[info] |)
1679[info] |Generated Mongo query:
1680[info] |{
1681[info] | "$pull": { "listField": { "$eq": 2 } }
1682[info] |}
1683[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:264:32
1684[info] 264 | val q = update[TestClass](_.pull(_.classInnerClassField, _.fieldOne == "1"))
1685[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1686[info] | AST:
1687[info] | Update(
1688[info] | ops = List(
1689[info] | Pull(
1690[info] | prop = Prop(path = "classInnerClassField"),
1691[info] | cond = Eq(x = Prop(path = "fieldOne"), y = Constant(s = "1"))
1692[info] | )
1693[info] | )
1694[info] | )
1695[info] | Generated Mongo query:
1696[info] | {
1697[info] | "$pull": { "classInnerClassField": { "fieldOne": "1" } }
1698[info] | }
1699[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:278:32
1700[info] 278 | val q = update[TestClass](_.pullAll(_.listField, Vector(1, 2, 3)))
1701[info] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1702[info] |AST:
1703[info] |Update(
1704[info] | ops = List(
1705[info] | PullAll(
1706[info] | prop = Prop(path = "listField"),
1707[info] | expr = UIterable(t = List(Constant(t = 1), Constant(t = 2), Constant(t = 3)))
1708[info] | )
1709[info] | )
1710[info] |)
1711[info] |Generated Mongo query:
1712[info] |{
1713[info] | "$pullAll": { "listField": [1,2,3] }
1714[info] |}
1715[info] -- Info: /build/repo/oolong-mongo/src/test/scala/oolong/mongo/UpdateSpec.scala:292:29
1716[info] 292 | val q = update[TestClass](
1717[info] | ^
1718[info] | AST:
1719[info] | Update(
1720[info] | ops = List(
1721[info] | Unset(prop = Prop(path = "dateField")),
1722[info] | Set(prop = Prop(path = "optionField"), expr = Constant(t = 2L)),
1723[info] | Set(prop = Prop(path = "intField"), expr = Constant(t = 19))
1724[info] | )
1725[info] | )
1726[info] | Generated Mongo query:
1727[info] | {
1728[info] | "$set": { "optionField": 2, "intField": 19 },
1729[info] | "$unset": { "dateField": "" }
1730[info] | }
1731[info] 293 | _.unset(_.dateField)
1732[info] 294 | .setOpt(_.optionField, 2L)
1733[info] 295 | .set(_.intField, 19)
1734[info] 296 | )
1735[warn] two warnings found
1736[info] done compiling
1737[info] QueryWithMetaSpec:
1738[info] - =
1739[info] - $gt
1740[info] - $gte
1741[info] - $in
1742[info] - $nin
1743[info] - $lt
1744[info] - $lte
1745[info] - $ne
1746[info] - test with lift(...) for custom types
1747[info] - test with lift(...) for case classes
1748[info] - test with lift(...) for arrays
1749[info] - test with lift(...) for sets
1750[info] - $and condition in queries flattens
1751[info] - $and with field having more than one condition is in full form
1752[info] - $or
1753[info] - both $and and $or #1
1754[info] - both $and and $or #2
1755[info] - $not = transforms into $ne
1756[info] - $not
1757[info] - $exists true
1758[info] - $exists false
1759[info] - raw Bson in a query
1760[info] - query with !! operator for Option[_] fields
1761[info] - $size with .empty
1762[info] - $size with .size == ?
1763[info] - $size with .length == ?
1764[info] - = for element in collection
1765[info] - $ne for element in collection
1766[info] - = for element in Option[_] field
1767[info] - $ne for element in Option[_] field
1768[info] - calling an 'inline def' with the '(_)' syntax
1769[info] - calling an 'inline def' with the '(x => f(x))' syntax
1770[info] - 'inline def' with '!!'
1771[info] - generic 'inline def' with '<:' constraint
1772[info] - 'inline def' without explicit return type
1773[info] - composing queries via 'inline def' #1
1774[info] - composing queries via 'inline def' #2
1775[info] - regex with options
1776[info] - regex without options
1777[info] - test $type for int
1778[info] - test $type for document
1779[info] - test $mod for int with lift(...)
1780[info] - test $mod for double with lift(...)
1781[info] UpdateWithMetaSpec:
1782[info] - $set for regular fields
1783[info] - $set for Option[_] fields
1784[info] - $set for Option[_] inner class fields
1785[info] - $inc
1786[info] - $mul
1787[info] - $max
1788[info] - $min
1789[info] - $rename
1790[info] - $unset
1791[info] - $setOnInsert
1792[info] - several update operators combined
1793[info] UpdateSpec:
1794[info] - $set for regular fields
1795[info] - $set for Option[_] fields
1796[info] - $set for Option[_] inner class fields
1797[info] - $inc
1798[info] - $mul
1799[info] - $max
1800[info] - $min
1801[info] - $rename
1802[info] - $unset
1803[info] - $setOnInsert
1804[info] - $addToSet
1805[info] - $addToSet nested
1806[info] - $addToSet with $each
1807[info] - $addToSet with $each nested
1808[info] - $pop first
1809[info] - $pop last
1810[info] - $pull #1
1811[info] - $pull #2
1812[info] - $pullAll #1
1813[info] - several update operators combined
1814[info] QuerySpec:
1815[info] - = is flat bson
1816[info] - $gt
1817[info] - $gte
1818[info] - $in
1819[info] - $nin
1820[info] - $lt
1821[info] - $lte
1822[info] - $ne
1823[info] - test with lift(...) for custom types
1824[info] - test with lift(...) for case classes
1825[info] - test with lift(...) for arrays
1826[info] - test with lift(...) for sets
1827[info] - $and condition in queries flattens
1828[info] - $and with field having more than one condition is in full form
1829[info] - $or
1830[info] - both $and and $or #1
1831[info] - both $and and $or #2
1832[info] - $not = transforms into $ne
1833[info] - $not
1834[info] - $exists true
1835[info] - $exists false
1836[info] - raw Bson in a query
1837[info] - query with !! operator for Option[_] fields
1838[info] - $size with .empty
1839[info] - $size with .size == ?
1840[info] - $size with .length == ?
1841[info] - = for element in collection
1842[info] - $ne for element in collection
1843[info] - = for element in Option[_] field
1844[info] - $ne for element in Option[_] field
1845[info] - calling an 'inline def' with the '(_)' syntax
1846[info] - calling an 'inline def' with the '(x => f(x))' syntax
1847[info] - 'inline def' with '!!'
1848[info] - generic 'inline def' with '<:' constraint
1849[info] - 'inline def' without explicit return type
1850[info] - composing queries via 'inline def' #1
1851[info] - composing queries via 'inline def' #2
1852[info] - regex #1
1853[info] - regex #2
1854[info] - regex #3
1855[info] - regex #4
1856[info] - regex unknown flags not passed #1
1857[info] - regex unknown flags not passed #2
1858[info] - regex unknown flags not passed #3
1859[info] - regex unknown flags not passed #4
1860[info] - regex without flags #1
1861[info] - regex without flags #2
1862[info] - regex without flags #3
1863[info] - inlined pattern in regex
1864[info] - regex dynamic pattern #1
1865[info] - regex dynamic pattern #2
1866[info] - regex dynamic pattern #3
1867[info] - regex dynamic pattern #4
1868[info] - test $type for int
1869[info] - test $type for document
1870[info] - test $mod for int with lift(...)
1871[info] - test $mod for double with lift(...)
1872[info] - $mod for % in extension
1873[info] - $elemMatch for array containing objects
1874[info] - $elemMatch for array primitives
1875[info] - $elemMatch for array with $and with same field twice
1876[info] - $elemMatch querying a single field
1877[info] - nested $elemMatch
1878[info] - $all
1879[info] - $all lifted
1880[info] - $all with $elemMatch
1881[info] - $all with nested array
1882[info] - BigDecimal is supported without lift
1883[info] - BigInt is supported without lift
1884[info] - Instant.ifBefore is supported
1885[info] - Instant.isAfter is supported
1886[info] - Conditional query with Pattern does not require lifting spec
1887[info] ProjectionSpec:
1888[info] - projection
1889[info] - projection with BaseClass QueryMeta
1890[info] - projection fails
1891[info] - short path for classes with identical structure
1892[info] - Full projection returns empty document
1893
1894************************
1895Build summary:
1896[{
1897 "module": "oolong-bson",
1898 "compile": {"status": "ok", "tookMs": 10721, "warnings": 11, "errors": 0, "sourceVersion": "3.8"},
1899 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1900 "test-compile": {"status": "ok", "tookMs": 6012, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
1901 "test": {"status": "ok", "tookMs": 1185, "passed": 21, "failed": 0, "ignored": 0, "skipped": 0, "total": 21, "byFramework": [{"framework": "unknown", "stats": {"passed": 21, "failed": 0, "ignored": 0, "skipped": 0, "total": 21}}]},
1902 "publish": {"status": "skipped", "tookMs": 0},
1903 "metadata": {
1904 "crossScalaVersions": ["2.12.20"]
1905}
1906},{
1907 "module": "oolong-bson-refined",
1908 "compile": {"status": "ok", "tookMs": 659, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1909 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1910 "test-compile": {"status": "ok", "tookMs": 1159, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1911 "test": {"status": "ok", "tookMs": 840, "passed": 1, "failed": 0, "ignored": 0, "skipped": 0, "total": 1, "byFramework": [{"framework": "unknown", "stats": {"passed": 1, "failed": 0, "ignored": 0, "skipped": 0, "total": 1}}]},
1912 "publish": {"status": "skipped", "tookMs": 0},
1913 "metadata": {
1914 "crossScalaVersions": ["2.12.20"]
1915}
1916},{
1917 "module": "oolong-core",
1918 "compile": {"status": "ok", "tookMs": 3620, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
1919 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1920 "test-compile": {"status": "ok", "tookMs": 1270, "warnings": 0, "errors": 0, "sourceVersion": "3.8"},
1921 "test": {"status": "ok", "tookMs": 889, "passed": 4, "failed": 0, "ignored": 0, "skipped": 0, "total": 4, "byFramework": [{"framework": "unknown", "stats": {"passed": 4, "failed": 0, "ignored": 0, "skipped": 0, "total": 4}}]},
1922 "publish": {"status": "skipped", "tookMs": 0},
1923 "metadata": {
1924 "crossScalaVersions": ["2.12.20"]
1925}
1926},{
1927 "module": "oolong-mongo",
1928 "compile": {"status": "ok", "tookMs": 3637, "warnings": 2, "errors": 0, "sourceVersion": "3.8"},
1929 "doc": {"status": "skipped", "tookMs": 0, "files": 0, "totalSizeKb": 0},
1930 "test-compile": {"status": "ok", "tookMs": 12387, "warnings": 1, "errors": 0, "sourceVersion": "3.8"},
1931 "test": {"status": "ok", "tookMs": 1334, "passed": 151, "failed": 0, "ignored": 0, "skipped": 0, "total": 151, "byFramework": [{"framework": "unknown", "stats": {"passed": 151, "failed": 0, "ignored": 0, "skipped": 0, "total": 151}}]},
1932 "publish": {"status": "skipped", "tookMs": 0},
1933 "metadata": {
1934 "crossScalaVersions": ["2.12.20"]
1935}
1936}]
1937************************
1938[success] Total time: 48 s, completed Jan 8, 2026, 2:31:10 AM
1939[0JChecking patch project/plugins.sbt...
1940Checking patch project/build.properties...
1941Checking patch build.sbt...
1942Applied patch project/plugins.sbt cleanly.
1943Applied patch project/build.properties cleanly.
1944Applied patch build.sbt cleanly.