Skip to content

Commit b30ffd6

Browse files
committed
GridFS implicits
ObjectID implicits DatabaseProvider with default registry
1 parent cb9f9c6 commit b30ffd6

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

src/main/scala/com/sfxcode/nosql/mongo/database/DatabaseProvider.scala

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,22 @@ package com.sfxcode.nosql.mongo.database
33
import com.sfxcode.nosql.mongo.bson.codecs.CustomCodecProvider
44
import org.bson.codecs.configuration.CodecRegistries.fromProviders
55
import org.bson.codecs.configuration.CodecRegistry
6+
import org.mongodb.scala.bson.codecs.DEFAULT_CODEC_REGISTRY
67
import org.mongodb.scala.{ MongoClient, MongoDatabase }
78

8-
case class DatabaseProvider(databaseName: String, registry: CodecRegistry, client: MongoClient = MongoClient()) {
9+
case class DatabaseProvider(databaseName: String, registry: CodecRegistry = DEFAULT_CODEC_REGISTRY, client: MongoClient = MongoClient()) {
910

1011
import org.bson.codecs.configuration.CodecRegistries.fromRegistries
1112
import org.mongodb.scala.bson.codecs.DEFAULT_CODEC_REGISTRY
1213

1314
private val CustomRegistry = fromProviders(CustomCodecProvider())
1415

15-
private val codecRegistry: CodecRegistry = fromRegistries(registry, CustomRegistry, DEFAULT_CODEC_REGISTRY)
16+
val codecRegistry: CodecRegistry = {
17+
if (registry == DEFAULT_CODEC_REGISTRY)
18+
fromRegistries(registry, CustomRegistry)
19+
else
20+
fromRegistries(registry, CustomRegistry, DEFAULT_CODEC_REGISTRY)
21+
}
1622

1723
val database: MongoDatabase = client.getDatabase(databaseName).withCodecRegistry(codecRegistry)
1824

src/main/scala/com/sfxcode/nosql/mongo/package.scala

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ package com.sfxcode.nosql
33
import com.sfxcode.nosql.mongo.bson.BsonConverter
44
import com.sfxcode.nosql.mongo.database.DatabaseProvider
55
import com.sfxcode.nosql.mongo.operation.ObservableIncludes
6+
import org.bson.BsonValue
7+
import org.bson.types.ObjectId
68
import org.mongodb.scala.bson.conversions.Bson
7-
import org.mongodb.scala.{ Document, FindObservable, MongoDatabase, Observable }
9+
import org.mongodb.scala.gridfs.{GridFSFile, GridFSFindObservable}
10+
import org.mongodb.scala.{Document, FindObservable, MongoDatabase, Observable}
811

912
import scala.collection.JavaConverters._
1013
import scala.language.implicitConversions
@@ -29,6 +32,7 @@ package object mongo extends ObservableIncludes {
2932
documentFromScalaMap(map.toMap)
3033
}
3134

35+
3236
implicit def documentFromScalaMap(map: Map[String, Any]): Document = {
3337
var result = Document()
3438
map.keys.foreach(key => {
@@ -55,4 +59,17 @@ package object mongo extends ObservableIncludes {
5559
BsonConverter.asMapList(documents)
5660
}
5761

62+
implicit def stringToObjectId(str: String): ObjectId = new ObjectId(str)
63+
64+
implicit def documentToObjectId(doc: Document): ObjectId = doc.getObjectId("_id")
65+
66+
// gridfs
67+
68+
implicit def gridFSindObservableToFiles(observable:GridFSFindObservable):List[GridFSFile] = observable.resultList()
69+
70+
71+
implicit def gridfSFileToObjectId(file: GridFSFile): ObjectId = file.getObjectId
72+
73+
implicit def gridfSFileToBSonIdValue(file: GridFSFile): BsonValue = file.getId
74+
5875
}

0 commit comments

Comments
 (0)