Skip to content

Commit cb9f9c6

Browse files
committed
GridFS Database Sample App
1 parent c84e6a1 commit cb9f9c6

File tree

3 files changed

+88
-0
lines changed

3 files changed

+88
-0
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.sfxcode.nosql.mongo.gridfs
2+
3+
import com.sfxcode.nosql.mongo.GridFSDAO
4+
import com.sfxcode.nosql.mongo.database.DatabaseProvider
5+
6+
/**
7+
* GridFS Database Sample
8+
*/
9+
object GridfsDatabase {
10+
11+
val database = DatabaseProvider("test")
12+
13+
object ImageFilesDAO extends GridFSDAO(database, "images")
14+
15+
}
16+
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.sfxcode.nosql.mongo.gridfs
2+
3+
import com.sfxcode.nosql.mongo._
4+
import org.bson.types.ObjectId
5+
6+
object GridfsDatabaseApp extends App with GridfsDatabaseFunctions {
7+
8+
val SourcePath = "src/test/resources/images/"
9+
val TargetPath = "/tmp/"
10+
11+
case class ImageMetadata(name:String, group:String="logos", version:Int =1, indexSet:Set[Int] = Set(1,2,3))
12+
13+
dropImages
14+
15+
println(imagesCount)
16+
createIndexOnImages("name")
17+
18+
val id: ObjectId = insertImage(SourcePath + "scala-logo.png", ImageMetadata("logo1"))
19+
20+
println(id)
21+
22+
val file = findImage(id.toString)
23+
println(file)
24+
val file2 = findImage(file)
25+
println(file2)
26+
27+
downloadImage(file2,TargetPath + file.getFilename)
28+
29+
insertImage(SourcePath + "scala-logo.jpg", ImageMetadata("logo1", indexSet = Set(5,6,7)))
30+
println(imagesCount)
31+
32+
val logos = findImages("group", "logos")
33+
34+
println(logos)
35+
36+
37+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.sfxcode.nosql.mongo.gridfs
2+
3+
import better.files.File
4+
import com.sfxcode.nosql.mongo._
5+
import com.sfxcode.nosql.mongo.gridfs.GridfsDatabase._
6+
import org.bson.types.ObjectId
7+
import org.mongodb.scala.Completed
8+
import org.mongodb.scala.gridfs.GridFSFile
9+
10+
trait GridfsDatabaseFunctions {
11+
12+
def createIndexOnImages(key:String): String =
13+
ImageFilesDAO.createrMetadataIndex(key)
14+
15+
def deleteImage(id: ObjectId): Completed =
16+
ImageFilesDAO.deleteOne(id)
17+
18+
def dropImages: Completed = ImageFilesDAO.drop()
19+
20+
def imagesCount: Long = ImageFilesDAO.count()
21+
22+
def insertImage(path: String, metadata: AnyRef): ObjectId = {
23+
val file = File(path)
24+
val stream = file.newInputStream
25+
ImageFilesDAO.insertOne(file.name, stream, metadata)
26+
}
27+
28+
def downloadImage(id: ObjectId, path: String): Long =
29+
ImageFilesDAO.downloadToStream(id, File(path).path)
30+
31+
def findImage(id: ObjectId): GridFSFile = ImageFilesDAO.findById(id)
32+
33+
def findImages(key:String, value:String): List[GridFSFile] = ImageFilesDAO.findByMetadataValue(key, value)
34+
35+
}

0 commit comments

Comments
 (0)