Skip to content

Commit a98f91f

Browse files
committed
models added
1 parent 7d74adc commit a98f91f

File tree

17 files changed

+14735
-59
lines changed

17 files changed

+14735
-59
lines changed

build.sbt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,14 @@ libraryDependencies += "joda-time" % "joda-time" % "2.10.5" % Test
4747

4848
libraryDependencies += "org.json4s" %% "json4s-native" % "3.6.7" % Test
4949

50-
libraryDependencies += "com.github.pathikrit" %% "better-files" % "3.8.0" % Test
51-
52-
libraryDependencies += "org.mongodb.scala" %% "mongo-scala-driver" % "4.0.2"
53-
5450
libraryDependencies += "org.xerial.snappy" % "snappy-java" % "1.1.7.3" % Provided
5551

5652
libraryDependencies += "com.github.luben" % "zstd-jni" % "1.4.4-9" % Provided
5753

54+
libraryDependencies += "org.mongodb.scala" %% "mongo-scala-driver" % "4.0.2"
55+
56+
libraryDependencies += "com.github.pathikrit" %% "better-files" % "3.8.0"
57+
5858
libraryDependencies += "com.typesafe" % "config" % "1.4.0"
5959

6060
libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.9.2"

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

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,17 @@ import org.mongodb.scala.{ MongoClientSettings, MongoCredential, ServerAddress }
1212
import scala.collection.JavaConverters._
1313
import scala.collection.mutable.ArrayBuffer
1414

15-
case class MongoConfig(database: String,
16-
host: String = DefaultHost,
17-
port: Int = DefaultPort,
18-
applicationName: String = DefaultApplicationName,
19-
userName: Option[String] = None,
20-
password: Option[String] = None,
21-
authDatabase: String = DefaultAuthenticationDatabaseName,
22-
poolOptions: MongoPoolOptions = MongoPoolOptions(),
23-
compressors: List[String] = List(),
24-
customClientSettings: Option[MongoClientSettings] = None) {
15+
case class MongoConfig(
16+
database: String,
17+
host: String = DefaultHost,
18+
port: Int = DefaultPort,
19+
applicationName: String = DefaultApplicationName,
20+
userName: Option[String] = None,
21+
password: Option[String] = None,
22+
authDatabase: String = DefaultAuthenticationDatabaseName,
23+
poolOptions: MongoPoolOptions = MongoPoolOptions(),
24+
compressors: List[String] = List(),
25+
customClientSettings: Option[MongoClientSettings] = None) {
2526

2627
val clientSettings: MongoClientSettings = {
2728
if (customClientSettings.isDefined) {
@@ -53,8 +54,7 @@ case class MongoConfig(database: String,
5354
.builder()
5455
.applicationName(applicationName)
5556
.applyToConnectionPoolSettings(
56-
(b: com.mongodb.connection.ConnectionPoolSettings.Builder) => b.applySettings(connectionPoolSettings)
57-
)
57+
(b: com.mongodb.connection.ConnectionPoolSettings.Builder) => b.applySettings(connectionPoolSettings))
5858
.applyToClusterSettings((b: com.mongodb.connection.ClusterSettings.Builder) => b.applySettings(clusterSettings))
5959
.compressorList(compressorList.asJava)
6060

@@ -70,20 +70,20 @@ case class MongoConfig(database: String,
7070
}
7171

7272
object MongoConfig {
73-
val DefaultHost = "127.0.0.1"
74-
val DefaultPort = 27017
73+
val DefaultHost = "127.0.0.1"
74+
val DefaultPort = 27017
7575
val DefaultAuthenticationDatabaseName = "admin"
76-
val DefaultApplicationName = "simple-mongo-app"
76+
val DefaultApplicationName = "simple-mongo-app"
7777

78-
val DefaultPoolMaxConnectionIdleTime = 60
79-
val DefaultPoolMaxSize = 50
80-
val DefaultPoolMinSize = 0
81-
val DefaultPoolMaxWaitQueueSize = 500
78+
val DefaultPoolMaxConnectionIdleTime = 60
79+
val DefaultPoolMaxSize = 50
80+
val DefaultPoolMinSize = 0
81+
val DefaultPoolMaxWaitQueueSize = 500
8282
val DefaultPoolMaintenanceInitialDelay = 0
8383

8484
val ComressionSnappy = "snappy"
85-
val ComressionZlib = "zlib"
86-
val ComressionZstd = "zstd"
85+
val ComressionZlib = "zlib"
86+
val ComressionZstd = "zstd"
8787

8888
val DefaultConfigPathPrefix = "mongo"
8989

@@ -122,19 +122,18 @@ object MongoConfig {
122122
List()
123123
}
124124

125-
val host = stringConfig("host", DefaultHost).get
126-
val database = stringConfig("database").get
127-
val userName = stringConfig("userName")
128-
val password = stringConfig("password")
129-
val authDatabase = stringConfig("authDatabase", DefaultAuthenticationDatabaseName).get
125+
val host = stringConfig("host", DefaultHost).get
126+
val database = stringConfig("database").get
127+
val userName = stringConfig("userName")
128+
val password = stringConfig("password")
129+
val authDatabase = stringConfig("authDatabase", DefaultAuthenticationDatabaseName).get
130130
val applicationName = stringConfig("applicationName", DefaultApplicationName).get
131131

132132
val poolOptions = MongoPoolOptions(
133133
poolOptionsConfig("maxConnectionIdleTime", DefaultPoolMaxConnectionIdleTime),
134134
poolOptionsConfig("maxSize", DefaultPoolMaxSize),
135135
poolOptionsConfig("minSize", DefaultPoolMinSize),
136-
poolOptionsConfig("maintenanceInitialDelay", DefaultPoolMaintenanceInitialDelay)
137-
)
136+
poolOptionsConfig("maintenanceInitialDelay", DefaultPoolMaintenanceInitialDelay))
138137

139138
MongoConfig(database, host, port, applicationName, userName, password, authDatabase, poolOptions, compressors)
140139
}

src/main/scala/com/sfxcode/nosql/mongo/gridfs/Base.scala

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.sfxcode.nosql.mongo.gridfs
33
import java.io.OutputStream
44
import java.nio.ByteBuffer
55

6+
import better.files.File
67
import com.mongodb.client.gridfs.model.GridFSUploadOptions
78
import com.sfxcode.nosql.mongo.Converter
89
import com.typesafe.scalalogging.LazyLogging
@@ -51,10 +52,21 @@ abstract class Base extends LazyLogging {
5152
gridfsBucket.uploadFromObservable(fileName, source, options)
5253
}
5354

55+
def uploadFile(
56+
fileName: String,
57+
file: File,
58+
metadata: AnyRef = Document(),
59+
chunkSizeBytes: Int = 1204 * 256,
60+
bufferSize: Int = 1024 * 64): Observable[ObjectId] =
61+
upload(fileName, GridFSStreamObservable(file.newInputStream, bufferSize), metadata, chunkSizeBytes)
62+
5463
def download(oid: ObjectId): GridFSDownloadObservable =
5564
gridfsBucket.downloadToObservable(oid)
5665

57-
def downloadToStream(oid: ObjectId, outputStream: OutputStream): GridFSStreamObserver = {
66+
def download(id: ObjectId, file: File): GridFSStreamObserver =
67+
download(id, file.newOutputStream)
68+
69+
def download(oid: ObjectId, outputStream: OutputStream): GridFSStreamObserver = {
5870
val observable: GridFSDownloadObservable = gridfsBucket.downloadToObservable(oid)
5971
val observer = GridFSStreamObserver(outputStream)
6072
observable.subscribe(observer)

0 commit comments

Comments
 (0)