Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ import org.bson.codecs.configuration.CodecRegistries._
import org.mongodb.scala.bson.ObjectId
import org.mongodb.scala.bson.codecs.Macros._
import dev.mongocamp.driver.mongodb.json._
import io.circe.generic.auto._

/**
* import mongodb restaurants sample data
Expand Down
1 change: 0 additions & 1 deletion docs/documentation/database/relationships.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ Simple Setup.

```scala
import dev.mongocamp.driver.mongodb.json._
import io.circe.generic.auto._

case class User(id: Long, name: String, loginId: String)
case class Login(id: String, email: String, password: String)
Expand Down
1 change: 0 additions & 1 deletion docs/documentation/gridfs-dao/crud.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ With implicit conversion you can use for OID Parameter:
import dev.mongocamp.driver.mongodb._
// case class conversion only needed in the DAO Holder Class
import dev.mongocamp.driver.mongodb.json._
import io.circe.generic.auto._

ImageFilesDAO.deleteOne(oid)
```
1 change: 0 additions & 1 deletion docs/documentation/mongo-dao/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ A Type Parameter is used for automatic Document to Class conversion.

```scala
import dev.mongocamp.driver.mongodb.json._
import io.circe.generic.auto._
object RestaurantDAO extends MongoDAO[Restaurant](provider, "restaurants")
```

Expand Down
61 changes: 47 additions & 14 deletions src/main/scala/dev/mongocamp/driver/mongodb/json/CirceSchema.scala
Original file line number Diff line number Diff line change
@@ -1,27 +1,60 @@
package dev.mongocamp.driver.mongodb.json

import io.circe.Decoder
import dev.mongocamp.driver.mongodb.bson.BsonConverter
import io.circe.Decoder.Result
import io.circe.Encoder
import io.circe.HCursor
import io.circe.Json
import java.util.Date
import io.circe.{Decoder, Encoder, HCursor, Json}
import io.circe.generic.AutoDerivation
import org.bson.types.ObjectId
import org.joda.time.DateTime
import org.mongodb.scala.Document
import scala.jdk.CollectionConverters._

import java.util.Date

trait CirceSchema extends CirceProductSchema {

implicit lazy val DocumentOneFormat: io.circe.Decoder[org.mongodb.scala.Document] = {
(c: HCursor) =>
// not really needed only for decoder must exists
???
}
implicit lazy val DocumentOneFormat: Encoder[org.mongodb.scala.Document] with io.circe.Decoder[org.mongodb.scala.Document] =
new io.circe.Encoder[org.mongodb.scala.Document] with io.circe.Decoder[org.mongodb.scala.Document] {
override def apply(a: org.mongodb.scala.Document): Json = {
encodeMapStringAny(BsonConverter.asMap(a))
}

override def apply(c: HCursor): Result[org.mongodb.scala.Document] = {
Decoder.decodeString
.map(
s => {
val document = new org.mongodb.scala.Document(org.mongodb.scala.bson.BsonDocument(s))
document
}
)
.apply(c)
}
}

implicit lazy val DocumentTowFormat: io.circe.Decoder[org.bson.Document] = {
(c: HCursor) =>
// not really needed only for decoder must exists
???
implicit lazy val DocumentTowFormat: Encoder[org.bson.Document] with io.circe.Decoder[org.bson.Document] = new io.circe.Encoder[org.bson.Document]
with io.circe.Decoder[org.bson.Document] {
override def apply(a: org.bson.Document): Json = {
val map = a.keySet().asScala
.map(
key => {
val value = a.get(key)
(key, encodeAnyToJson(value))
}
).toMap
encodeMapStringAny(map)
}

override def apply(c: HCursor): Result[org.bson.Document] = {
Decoder
.decodeMap[String, Any]
.map(
m => {
val document = new org.bson.Document(m.asJava)
document
}
)
.apply(c)
}
}

implicit val DateFormat: Encoder[Date] with io.circe.Decoder[Date] = new io.circe.Encoder[Date] with io.circe.Decoder[Date] {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package dev.mongocamp.driver.mongodb

package object json extends CirceSchema
import io.circe.generic.AutoDerivation

package object json extends CirceSchema with AutoDerivation
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@ package dev.mongocamp.driver.mongodb.pagination

import dev.mongocamp.driver.mongodb._
import dev.mongocamp.driver.mongodb.exception.MongoCampPaginationException
import dev.mongocamp.driver.mongodb.MongoDAO
import io.circe.generic.auto._
import io.circe.Decoder
import org.mongodb.scala.bson.conversions.Bson

case class MongoPaginatedFilter[A <: Any](dao: MongoDAO[A], filter: Bson = Map(), sort: Bson = Map(), projection: Bson = Map(), maxWait: Int = DefaultMaxWait)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package dev.mongocamp.driver.mongodb.schema

import dev.mongocamp.driver.mongodb._
import dev.mongocamp.driver.mongodb.json._
import io.circe.generic.auto._
import org.bson.conversions.Bson
import org.mongodb.scala.documentToUntypedDocument
import org.mongodb.scala.Document
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ import dev.mongocamp.driver.mongodb._
import dev.mongocamp.driver.mongodb.database.DatabaseProvider
import dev.mongocamp.driver.mongodb.database.MongoConfig
import dev.mongocamp.driver.mongodb.json._
import io.circe.generic.auto._
import io.circe.HCursor
import scala.collection.mutable

case class MongoSyncer(sourceConfig: MongoConfig, targetConfig: MongoConfig, syncOperations: List[MongoSyncOperation] = List()) {

implicit private lazy val ThrowableFormat: io.circe.Decoder[Throwable] = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package dev.mongocamp.driver.mongodb.relation
import dev.mongocamp.driver.mongodb._
import dev.mongocamp.driver.mongodb.database.DatabaseProvider
import dev.mongocamp.driver.mongodb.json._
import io.circe.generic.auto._
import org.mongodb.scala.bson.ObjectId
import org.mongodb.scala.result.UpdateResult

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import dev.mongocamp.driver.mongodb.json._
import dev.mongocamp.driver.mongodb.model._
import dev.mongocamp.driver.mongodb.GridFSDAO
import dev.mongocamp.driver.mongodb.MongoDAO
import io.circe.generic.auto._
import org.mongodb.scala.model.changestream.ChangeStreamDocument
import org.mongodb.scala.Document

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import dev.mongocamp.driver.mongodb.model._
import dev.mongocamp.driver.mongodb.server.LocalServer
import dev.mongocamp.driver.mongodb.GridFSDAO
import dev.mongocamp.driver.mongodb.MongoDAO
import io.circe.generic.auto._

object UniversityDatabase {
// create local test server (mongodb-java-server)
Expand Down