Skip to content

Commit fbccbe2

Browse files
committed
Specs added
1 parent 9d8ae35 commit fbccbe2

24 files changed

+341
-91
lines changed

CHANGES.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
## Versions
44

5+
### 1.9.4
6+
* Rewrite Docs and Samples
7+
* Specs Setup Redesign
8+
* Added more Specs (Coverage min from 60 to 70)
9+
510
### 1.9.2
611
* scala 2.13.2
712
* Minor Fixes

build.sbt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ lazy val docs = (project in file("docs"))
2929
scalaVersion := "2.13.2",
3030
resolvers += "SFXCode" at "https://dl.bintray.com/sfxcode/maven/",
3131
libraryDependencies += "com.sfxcode.nosql" %% "simple-mongo" % "1.9.3",
32+
libraryDependencies += "org.xerial.snappy" % "snappy-java" % "1.1.7.3",
3233
publish / skip := true,
3334
ghpagesNoJekyll := true,
3435
git.remoteRepo := "[email protected]:sfxcode/simple-mongo.git",
@@ -113,6 +114,6 @@ releaseProcess := Seq[ReleaseStep](
113114

114115
scalafmtOnCompile := false
115116

116-
coverageMinimum := 60
117+
coverageMinimum := 70
117118

118119
coverageFailOnMinimum := true

docs/src/main/paradox/database_provider.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ DatabaseProvider is the central repository for MongoClient, registries, database
1212

1313
Every @ref:[MongoDAO](dao/index.md) / @ref:[GridFSDAO](gridfs/index.md) Instance needs this class.
1414

15-
@@snip [Mongo Conf](/docs/src/main/scala/DatabaseProviderDoc.scala) { #provider }
15+
@@snip [Scala Sources](/docs/src/main/scala/DatabaseProviderDoc.scala) { #provider }
1616

1717

1818
## Create MongoConfig with application.conf
@@ -21,19 +21,19 @@ Every @ref:[MongoDAO](dao/index.md) / @ref:[GridFSDAO](gridfs/index.md) Instance
2121

2222
Default path in application.conf: mongo
2323

24-
@@snip [Mongo Conf](/docs/src/main/resources/docs.conf) { #sample_config }
24+
@@snip [Scala Sources](/docs/src/main/resources/docs.conf) { #sample_config }
2525

2626
Scala Code Snippet
2727

28-
@@snip [Mongo Conf](/docs/src/main/scala/DatabaseProviderDoc.scala) { #sample_config_from_path }
28+
@@snip [Scala Sources](/docs/src/main/scala/DatabaseProviderDoc.scala) { #sample_config_from_path }
2929

3030
### With custom path
3131

32-
@@snip [Mongo Conf](/docs/src/main/resources/docs.conf) { #sample_config_custom }
32+
@@snip [Scala Sources](/docs/src/main/resources/docs.conf) { #sample_config_custom }
3333

3434
Scala Code Snippet
3535

36-
@@snip [Mongo Conf](/docs/src/main/scala/DatabaseProviderDoc.scala) { #sample_config_from_custom_path }
36+
@@snip [Scala Sources](/docs/src/main/scala/DatabaseProviderDoc.scala) { #sample_config_from_custom_path }
3737

3838

3939
## Create MongoConfig with custom ClientSettings
@@ -54,11 +54,11 @@ Additional Info for [Registries](https://mongodb.github.io/mongo-java-driver/4.0
5454

5555
### Create Case Classes
5656

57-
@@snip [Mongo Conf](/docs/src/main/scala/DatabaseProviderDoc.scala) { #provider_with_registry_classes }
57+
@@snip [Scala Sources](/docs/src/main/scala/DatabaseProviderDoc.scala) { #provider_with_registry_classes }
5858

5959
### Create Registry
6060

61-
@@snip [Mongo Conf](/docs/src/main/scala/DatabaseProviderDoc.scala) { #provider_with_registry }
61+
@@snip [Scala Sources](/docs/src/main/scala/DatabaseProviderDoc.scala) { #provider_with_registry }
6262

6363

6464
## MongoConfig Options

docs/src/main/paradox/index.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,17 @@ Support Scala 2.12 and Scala 2.13.
3030

3131
[Apache 2](https://github.com/sfxcode/simple-mongo/blob/master/LICENSE)
3232

33+
## Demo
3334

35+
### Model
36+
37+
Create custom model classes.
38+
39+
@@snip [model.scala](../../../../src/test/scala/com/sfxcode/nosql/mongo/model/model.scala) { #model_student }
40+
41+
### Database
42+
43+
@@snip [UniversityDatabase.scala](../../../../src/test/scala/com/sfxcode/nosql/mongo/test/UniversityDatabase.scala)
3444

3545
@@@ index
3646

docs/src/main/paradox/reactive_streams.md

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,30 @@
88

99
@@@ note { title=ScalaDriverDocs }
1010

11+
The MongoDB Scala Driver is an asynchronous and non blocking driver. Using the Observable model asynchronous events become simple, composable operations, freed from the complexity of nested callbacks.
12+
1113
Additional Info for [Reactive Streams JVM](https://github.com/reactive-streams/reactive-streams-jvm/)
1214

1315
Additional Info for [Mongo Scala Reactive Streams](https://mongodb.github.io/mongo-java-driver/4.0/driver-scala/getting-started/quick-start-primer/)
1416

17+
18+
1519
@@@
1620

1721
## Blocking Results
1822

1923
Conversion is provided in the DAO instances with four Helper function for Observable[C]:
2024

21-
| Funcion Name | Function Result | Sample | Sample Result |
22-
|:-------------|:----------------|:-----------------------------------------------|:---------------|
23-
| result | C | BookDAO.count().result() | Long |
24-
| results | Seq[C] | PersonDAO.findAggregated(aggregator).results() | Seq[Person] |
25-
| resultList | List[C] | UserDAO.find("name", "User").resultList() | List[User] |
26-
| resultOption | Option[C] | PersonDAO.find(Map("id" -> 42)).resultOption() | Option[Person] |
25+
| Function Name | Function Result | Sample | Sample Result |
26+
|:--------------|:----------------|:-----------------------------------------------|:---------------|
27+
| result | C | BookDAO.count().result() | Long |
28+
| results | Seq[C] | PersonDAO.findAggregated(aggregator).results() | Seq[Person] |
29+
| resultList | List[C] | UserDAO.find("name", "User").resultList() | List[User] |
30+
| resultOption | Option[C] | PersonDAO.find(Map("id" -> 42)).resultOption() | Option[Person] |
31+
32+
All functions have an optional maxWait parameter (Default maxWait = 10 seconds).
33+
34+
@@snip [Scala Sources](/docs/src/main/scala/ReactiveStreamsDoc.scala) { #max_wait }
2735

2836
### Implicit Result Conversion (Blocking)
2937

@@ -35,10 +43,10 @@ import com.sfxcode.nosql.mongo._
3543

3644
After that, implicit conversion and other useful implicits (e.g. Map -> Bson) are available.
3745

38-
@@snip [Mongo Conf](/docs/src/main/scala/ReactiveStreamsDoc.scala) { #implicit_result_conversion }
46+
@@snip [Scala Sources](/docs/src/main/scala/ReactiveStreamsDoc.scala) { #implicit_result_conversion }
3947

4048
## Future Results
4149

4250
DAO Instances support (implicit) conversion to Future,
4351

44-
@@snip [Mongo Conf](/docs/src/main/scala/ReactiveStreamsDoc.scala) { #as_future }
52+
@@snip [Scala Sources](/docs/src/main/scala/ReactiveStreamsDoc.scala) { #as_future }

docs/src/main/scala/DatabaseProviderDoc.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import com.sfxcode.nosql.mongo.database.{DatabaseProvider, MongoConfig}
1+
import com.sfxcode.nosql.mongo.database.{CollectionInfo, DatabaseProvider, MongoConfig}
22
import org.bson.codecs.configuration.CodecRegistries.fromProviders
33
import org.bson.codecs.configuration.CodecRegistry
44
import org.mongodb.scala.bson.ObjectId
@@ -28,8 +28,8 @@ object DatabaseProviderDoc {
2828

2929
val database: MongoDatabase = provider.database()
3030

31-
val databaseNames: Observable[String] = provider.databaseNames()
32-
val collectionNames: Observable[String] = provider.collectionNames()
31+
// Infos for all collections in the default database
32+
val collectionInfos: List[CollectionInfo] = provider.collectionInfos()
3333
// #provider
3434

3535
// #provider_with_registry
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
object MongoScalaDoc {}

docs/src/main/scala/ReactiveStreamsDoc.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,16 @@ import scala.concurrent.{Await, Future}
1010

1111
object ReactiveStreamsDoc {
1212

13+
// #max_wait
14+
val listWithCustomMaxWait: List[Person] = PersonDAO.find().resultList(maxWait = 15)
15+
// #max_wait
16+
1317
// #implicit_result_conversion
1418
val imagesCount: Long = ImageFilesDAO.count()
1519
val seq: Seq[Person] = PersonDAO.find()
1620
val list: List[Person] = PersonDAO.find()
1721
val option: Option[Person] = PersonDAO.find("id", 42)
22+
1823
// #implicit_result_conversion
1924

2025
// #as_future
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import com.sfxcode.nosql.mongo.test.UniversityDatabase._
2+
import com.sfxcode.nosql.mongo._
3+
4+
object UniversityApp extends App {
5+
6+
val collections = provider.collections().resultList()
7+
8+
//println(collections.tail.head.asPlainJson)
9+
10+
// provider.databaseNames.foreach(info => println(info))
11+
12+
println(StudentDAO)
13+
14+
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ trait Field {
1414

1515
def minField(fieldName: String): BsonField = min(fieldName, "$" + fieldName)
1616

17+
def maxField(fieldName: String): BsonField = max(fieldName, "$" + fieldName)
18+
1719
def lastField(fieldName: String): BsonField = last(fieldName, "$" + fieldName)
1820

1921
def sumField(fieldName: String): BsonField = sum(fieldName, "$" + fieldName)
@@ -28,6 +30,9 @@ trait Field {
2830
def minFields(fieldnames: Iterable[String]): Set[BsonField] =
2931
fieldnames.map(fieldname => minField(fieldname)).toSet
3032

33+
def maxFields(fieldnames: Iterable[String]): Set[BsonField] =
34+
fieldnames.map(fieldname => maxField(fieldname)).toSet
35+
3136
def lastFields(fieldnames: Iterable[String]): Set[BsonField] =
3237
fieldnames.map(fieldname => lastField(fieldname)).toSet
3338

0 commit comments

Comments
 (0)