Skip to content

Commit 28dc13e

Browse files
committed
refactor: package object json extends AutoDerivation to not need double import
1 parent c8d2cd4 commit 28dc13e

File tree

12 files changed

+51
-27
lines changed

12 files changed

+51
-27
lines changed

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ import org.bson.codecs.configuration.CodecRegistries._
6060
import org.mongodb.scala.bson.ObjectId
6161
import org.mongodb.scala.bson.codecs.Macros._
6262
import dev.mongocamp.driver.mongodb.json._
63-
import io.circe.generic.auto._
6463

6564
/**
6665
* import mongodb restaurants sample data

docs/documentation/database/relationships.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ Simple Setup.
2121

2222
```scala
2323
import dev.mongocamp.driver.mongodb.json._
24-
import io.circe.generic.auto._
2524

2625
case class User(id: Long, name: String, loginId: String)
2726
case class Login(id: String, email: String, password: String)

docs/documentation/gridfs-dao/crud.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ With implicit conversion you can use for OID Parameter:
3535
import dev.mongocamp.driver.mongodb._
3636
// case class conversion only needed in the DAO Holder Class
3737
import dev.mongocamp.driver.mongodb.json._
38-
import io.circe.generic.auto._
3938

4039
ImageFilesDAO.deleteOne(oid)
4140
```

docs/documentation/mongo-dao/index.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ A Type Parameter is used for automatic Document to Class conversion.
3232

3333
```scala
3434
import dev.mongocamp.driver.mongodb.json._
35-
import io.circe.generic.auto._
3635
object RestaurantDAO extends MongoDAO[Restaurant](provider, "restaurants")
3736
```
3837

src/main/scala/dev/mongocamp/driver/mongodb/json/CirceSchema.scala

Lines changed: 47 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,60 @@
11
package dev.mongocamp.driver.mongodb.json
22

3-
import io.circe.Decoder
3+
import dev.mongocamp.driver.mongodb.bson.BsonConverter
44
import io.circe.Decoder.Result
5-
import io.circe.Encoder
6-
import io.circe.HCursor
7-
import io.circe.Json
8-
import java.util.Date
5+
import io.circe.{Decoder, Encoder, HCursor, Json}
6+
import io.circe.generic.AutoDerivation
97
import org.bson.types.ObjectId
108
import org.joda.time.DateTime
119
import org.mongodb.scala.Document
10+
import scala.jdk.CollectionConverters._
11+
12+
import java.util.Date
1213

1314
trait CirceSchema extends CirceProductSchema {
1415

15-
implicit lazy val DocumentOneFormat: io.circe.Decoder[org.mongodb.scala.Document] = {
16-
(c: HCursor) =>
17-
// not really needed only for decoder must exists
18-
???
19-
}
16+
implicit lazy val DocumentOneFormat: Encoder[org.mongodb.scala.Document] with io.circe.Decoder[org.mongodb.scala.Document] =
17+
new io.circe.Encoder[org.mongodb.scala.Document] with io.circe.Decoder[org.mongodb.scala.Document] {
18+
override def apply(a: org.mongodb.scala.Document): Json = {
19+
encodeMapStringAny(BsonConverter.asMap(a))
20+
}
21+
22+
override def apply(c: HCursor): Result[org.mongodb.scala.Document] = {
23+
Decoder.decodeString
24+
.map(
25+
s => {
26+
val document = new org.mongodb.scala.Document(org.mongodb.scala.bson.BsonDocument(s))
27+
document
28+
}
29+
)
30+
.apply(c)
31+
}
32+
}
2033

21-
implicit lazy val DocumentTowFormat: io.circe.Decoder[org.bson.Document] = {
22-
(c: HCursor) =>
23-
// not really needed only for decoder must exists
24-
???
34+
implicit lazy val DocumentTowFormat: Encoder[org.bson.Document] with io.circe.Decoder[org.bson.Document] = new io.circe.Encoder[org.bson.Document]
35+
with io.circe.Decoder[org.bson.Document] {
36+
override def apply(a: org.bson.Document): Json = {
37+
val map = a.keySet().asScala
38+
.map(
39+
key => {
40+
val value = a.get(key)
41+
(key, encodeAnyToJson(value))
42+
}
43+
).toMap
44+
encodeMapStringAny(map)
45+
}
46+
47+
override def apply(c: HCursor): Result[org.bson.Document] = {
48+
Decoder
49+
.decodeMap[String, Any]
50+
.map(
51+
m => {
52+
val document = new org.bson.Document(m.asJava)
53+
document
54+
}
55+
)
56+
.apply(c)
57+
}
2558
}
2659

2760
implicit val DateFormat: Encoder[Date] with io.circe.Decoder[Date] = new io.circe.Encoder[Date] with io.circe.Decoder[Date] {
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
package dev.mongocamp.driver.mongodb
22

3-
package object json extends CirceSchema
3+
import io.circe.generic.AutoDerivation
4+
5+
package object json extends CirceSchema with AutoDerivation

src/main/scala/dev/mongocamp/driver/mongodb/pagination/MongoPaginatedFilter.scala

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@ package dev.mongocamp.driver.mongodb.pagination
22

33
import dev.mongocamp.driver.mongodb._
44
import dev.mongocamp.driver.mongodb.exception.MongoCampPaginationException
5-
import dev.mongocamp.driver.mongodb.MongoDAO
6-
import io.circe.generic.auto._
7-
import io.circe.Decoder
85
import org.mongodb.scala.bson.conversions.Bson
96

107
case class MongoPaginatedFilter[A <: Any](dao: MongoDAO[A], filter: Bson = Map(), sort: Bson = Map(), projection: Bson = Map(), maxWait: Int = DefaultMaxWait)

src/main/scala/dev/mongocamp/driver/mongodb/schema/SchemaExplorer.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package dev.mongocamp.driver.mongodb.schema
22

33
import dev.mongocamp.driver.mongodb._
44
import dev.mongocamp.driver.mongodb.json._
5-
import io.circe.generic.auto._
65
import org.bson.conversions.Bson
76
import org.mongodb.scala.documentToUntypedDocument
87
import org.mongodb.scala.Document

src/main/scala/dev/mongocamp/driver/mongodb/sync/MongoSyncer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import dev.mongocamp.driver.mongodb._
44
import dev.mongocamp.driver.mongodb.database.DatabaseProvider
55
import dev.mongocamp.driver.mongodb.database.MongoConfig
66
import dev.mongocamp.driver.mongodb.json._
7-
import io.circe.generic.auto._
87
import io.circe.HCursor
98
import scala.collection.mutable
9+
1010
case class MongoSyncer(sourceConfig: MongoConfig, targetConfig: MongoConfig, syncOperations: List[MongoSyncOperation] = List()) {
1111

1212
implicit private lazy val ThrowableFormat: io.circe.Decoder[Throwable] = {

src/test/scala/dev/mongocamp/driver/mongodb/relation/RelationDemoDatabase.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package dev.mongocamp.driver.mongodb.relation
33
import dev.mongocamp.driver.mongodb._
44
import dev.mongocamp.driver.mongodb.database.DatabaseProvider
55
import dev.mongocamp.driver.mongodb.json._
6-
import io.circe.generic.auto._
76
import org.mongodb.scala.bson.ObjectId
87
import org.mongodb.scala.result.UpdateResult
98

src/test/scala/dev/mongocamp/driver/mongodb/test/TestDatabase.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import dev.mongocamp.driver.mongodb.json._
88
import dev.mongocamp.driver.mongodb.model._
99
import dev.mongocamp.driver.mongodb.GridFSDAO
1010
import dev.mongocamp.driver.mongodb.MongoDAO
11-
import io.circe.generic.auto._
1211
import org.mongodb.scala.model.changestream.ChangeStreamDocument
1312
import org.mongodb.scala.Document
1413

src/test/scala/dev/mongocamp/driver/mongodb/test/UniversityDatabase.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import dev.mongocamp.driver.mongodb.model._
66
import dev.mongocamp.driver.mongodb.server.LocalServer
77
import dev.mongocamp.driver.mongodb.GridFSDAO
88
import dev.mongocamp.driver.mongodb.MongoDAO
9-
import io.circe.generic.auto._
109

1110
object UniversityDatabase {
1211
// create local test server (mongodb-java-server)

0 commit comments

Comments
 (0)