Skip to content

Commit 1379e29

Browse files
authored
Merge pull request #344 from AVSystem/cross-compiled-mongo
Cross compilation of @mongoid & MongoEntity(Companion) to JS
2 parents fe1d8fe + 9a792dc commit 1379e29

File tree

95 files changed

+143
-112
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

95 files changed

+143
-112
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ jobs:
7676
run: sbt ++${{ matrix.scala }} test
7777

7878
- name: Compress target directories
79-
run: tar cf targets.tar commons-macros/target commons-core/js/target commons-benchmark/js/target commons-core/target commons-benchmark/target commons-spring/target commons-analyzer/target commons-mongo/target commons-redis/target commons-hocon/target .js/target target commons-jetty/target .jvm/target project/target
79+
run: tar cf targets.tar commons-macros/target commons-core/js/target commons-benchmark/js/target commons-core/target commons-benchmark/target commons-spring/target commons-analyzer/target commons-mongo/target commons-redis/target commons-hocon/target .js/target target commons-jetty/target .jvm/target commons-mongo/js/target project/target
8080

8181
- name: Upload target directories
8282
uses: actions/upload-artifact@v2

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
target
1010
out
1111
.bloop
12+
.bsp
1213

1314
*.sjsir
1415
*.class

build.sbt

Lines changed: 58 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ lazy val `commons-jvm` = project.in(file(".jvm"))
226226
lazy val `commons-js` = project.in(file(".js"))
227227
.aggregate(
228228
`commons-core-js`,
229+
`commons-mongo-js`,
229230
`commons-benchmark-js`,
230231
)
231232
.settings(aggregateProjectSettings)
@@ -288,6 +289,63 @@ lazy val `commons-core-js` = project.in(`commons-core`.base / "js")
288289
)
289290
)
290291

292+
lazy val `commons-mongo` = project
293+
.dependsOn(`commons-core` % CompileAndTest)
294+
.settings(
295+
jvmCommonSettings,
296+
sourceDirsSettings(_ / "jvm"),
297+
libraryDependencies ++= Seq(
298+
"com.google.guava" % "guava" % guavaVersion,
299+
"io.monix" %% "monix" % monixVersion,
300+
"org.mongodb" % "mongodb-driver-core" % mongoVersion,
301+
"org.mongodb" % "mongodb-driver-sync" % mongoVersion % Optional,
302+
"org.mongodb" % "mongodb-driver-reactivestreams" % mongoVersion % Optional,
303+
"org.mongodb.scala" %% "mongo-scala-driver" % mongoVersion % Optional,
304+
),
305+
)
306+
307+
// only to allow @mongoId & MongoEntity to be used in JS/JVM cross-compiled code
308+
lazy val `commons-mongo-js` = project.in(`commons-mongo`.base / "js")
309+
.enablePlugins(ScalaJSPlugin)
310+
.configure(p => if (forIdeaImport) p.dependsOn(`commons-mongo`) else p)
311+
.dependsOn(`commons-core-js`)
312+
.settings(
313+
jsCommonSettings,
314+
sameNameAs(`commons-mongo`),
315+
sourceDirsSettings(_.getParentFile),
316+
)
317+
318+
lazy val `commons-redis` = project
319+
.dependsOn(`commons-core` % CompileAndTest)
320+
.settings(
321+
jvmCommonSettings,
322+
libraryDependencies ++= Seq(
323+
"com.google.guava" % "guava" % guavaVersion,
324+
"com.typesafe.akka" %% "akka-actor" % akkaVersion,
325+
"com.typesafe.akka" %% "akka-stream" % akkaVersion,
326+
"com.typesafe.scala-logging" %% "scala-logging" % scalaLoggingVersion,
327+
),
328+
parallelExecution in Test := false,
329+
)
330+
331+
lazy val `commons-hocon` = project
332+
.dependsOn(`commons-core` % CompileAndTest)
333+
.settings(
334+
jvmCommonSettings,
335+
libraryDependencies ++= Seq(
336+
"com.typesafe" % "config" % typesafeConfigVersion,
337+
),
338+
)
339+
340+
lazy val `commons-spring` = project
341+
.dependsOn(`commons-hocon` % CompileAndTest)
342+
.settings(
343+
jvmCommonSettings,
344+
libraryDependencies ++= Seq(
345+
"org.springframework" % "spring-context" % springVersion,
346+
),
347+
)
348+
291349
lazy val `commons-jetty` = project
292350
.dependsOn(`commons-core` % CompileAndTest)
293351
.settings(
@@ -338,51 +396,6 @@ lazy val `commons-benchmark-js` = project.in(`commons-benchmark`.base / "js")
338396
scalaJSUseMainModuleInitializer := true,
339397
)
340398

341-
lazy val `commons-mongo` = project
342-
.dependsOn(`commons-core` % CompileAndTest)
343-
.settings(
344-
jvmCommonSettings,
345-
libraryDependencies ++= Seq(
346-
"com.google.guava" % "guava" % guavaVersion,
347-
"io.monix" %% "monix" % monixVersion,
348-
"org.mongodb" % "mongodb-driver-core" % mongoVersion,
349-
"org.mongodb" % "mongodb-driver-sync" % mongoVersion % Optional,
350-
"org.mongodb" % "mongodb-driver-reactivestreams" % mongoVersion % Optional,
351-
"org.mongodb.scala" %% "mongo-scala-driver" % mongoVersion % Optional,
352-
),
353-
)
354-
355-
lazy val `commons-redis` = project
356-
.dependsOn(`commons-core` % CompileAndTest)
357-
.settings(
358-
jvmCommonSettings,
359-
libraryDependencies ++= Seq(
360-
"com.google.guava" % "guava" % guavaVersion,
361-
"com.typesafe.akka" %% "akka-actor" % akkaVersion,
362-
"com.typesafe.akka" %% "akka-stream" % akkaVersion,
363-
"com.typesafe.scala-logging" %% "scala-logging" % scalaLoggingVersion,
364-
),
365-
parallelExecution in Test := false,
366-
)
367-
368-
lazy val `commons-hocon` = project
369-
.dependsOn(`commons-core` % CompileAndTest)
370-
.settings(
371-
jvmCommonSettings,
372-
libraryDependencies ++= Seq(
373-
"com.typesafe" % "config" % typesafeConfigVersion,
374-
),
375-
)
376-
377-
lazy val `commons-spring` = project
378-
.dependsOn(`commons-hocon` % CompileAndTest)
379-
.settings(
380-
jvmCommonSettings,
381-
libraryDependencies ++= Seq(
382-
"org.springframework" % "spring-context" % springVersion,
383-
),
384-
)
385-
386399
lazy val `commons-comprof` = project
387400
.disablePlugins(GenerativePlugin)
388401
.dependsOn(`commons-core`)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.avsystem.commons
2+
package mongo.typed
3+
4+
import com.avsystem.commons.meta.MacroInstances
5+
import com.avsystem.commons.serialization.{GenObjectCodec, HasGenObjectCodec}
6+
7+
abstract class MongoDataCompanion[T](
8+
implicit instances: MacroInstances[Unit, () => GenObjectCodec[T]]
9+
) extends HasGenObjectCodec[T]
10+
11+
abstract class MongoEntityCompanion[T <: BaseMongoEntity](
12+
implicit instances: MacroInstances[Unit, () => GenObjectCodec[T]]
13+
) extends MongoDataCompanion[T]

commons-mongo/src/main/scala/com/avsystem/commons/mongo/BsonCodec.scala renamed to commons-mongo/jvm/src/main/scala/com/avsystem/commons/mongo/BsonCodec.scala

File renamed without changes.

commons-mongo/src/main/scala/com/avsystem/commons/mongo/BsonGenCodecs.scala renamed to commons-mongo/jvm/src/main/scala/com/avsystem/commons/mongo/BsonGenCodecs.scala

File renamed without changes.

commons-mongo/src/main/scala/com/avsystem/commons/mongo/BsonInputOutput.scala renamed to commons-mongo/jvm/src/main/scala/com/avsystem/commons/mongo/BsonInputOutput.scala

File renamed without changes.

commons-mongo/src/main/scala/com/avsystem/commons/mongo/BsonReaderInput.scala renamed to commons-mongo/jvm/src/main/scala/com/avsystem/commons/mongo/BsonReaderInput.scala

File renamed without changes.

commons-mongo/src/main/scala/com/avsystem/commons/mongo/BsonRef.scala renamed to commons-mongo/jvm/src/main/scala/com/avsystem/commons/mongo/BsonRef.scala

File renamed without changes.

commons-mongo/src/main/scala/com/avsystem/commons/mongo/BsonValueInput.scala renamed to commons-mongo/jvm/src/main/scala/com/avsystem/commons/mongo/BsonValueInput.scala

File renamed without changes.

0 commit comments

Comments
 (0)