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