Skip to content

Commit 22f09e8

Browse files
committed
feat: added skip to find method
1 parent 1e90836 commit 22f09e8

5 files changed

Lines changed: 13 additions & 7 deletions

File tree

src/main/scala/dev/mongocamp/driver/mongodb/operation/Base.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,12 @@ import org.mongodb.scala.{ Document, ListIndexesObservable, MongoCollection, Obs
1515
import scala.collection.mutable
1616
import scala.concurrent.duration.{ durationToPair, Duration }
1717
import scala.reflect.ClassTag
18+
import dev.mongocamp.driver.mongodb.schema.JsonConverter._
19+
import io.circe.syntax._
20+
import io.circe.generic.auto._
1821

1922
abstract class Base[A](implicit classTag: ClassTag[A]) extends LazyLogging with CirceSchema {
23+
2024
def documentToObject[A](document: Document, decoder: Decoder[A]): A = {
2125
if (classTag.runtimeClass == classOf[Document]) {
2226
document.asInstanceOf[A]

src/main/scala/dev/mongocamp/driver/mongodb/operation/Search.scala

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ import dev.mongocamp.driver.mongodb._
44
import dev.mongocamp.driver.mongodb.bson.BsonConverter._
55
import dev.mongocamp.driver.mongodb.database.DatabaseProvider
66
import io.circe.Decoder
7+
import net.sf.jsqlparser.statement.select.Skip
78
import org.bson.BsonValue
89
import org.mongodb.scala.bson.ObjectId
910
import org.mongodb.scala.bson.conversions.Bson
1011
import org.mongodb.scala.model.Filters._
11-
import org.mongodb.scala.{ DistinctObservable, Document, MongoCollection, Observable }
12+
import org.mongodb.scala.{DistinctObservable, Document, MongoCollection, Observable}
1213

1314
import scala.reflect.ClassTag
1415

@@ -20,14 +21,15 @@ abstract class Search[A]()(implicit ct: ClassTag[A], decoder: Decoder[A]) extend
2021
filter: Bson = Document(),
2122
sort: Bson = Document(),
2223
projection: Bson = Document(),
23-
limit: Int = 0
24+
limit: Int = 0,
25+
skip: Int = 0
2426
): Observable[A] = {
2527
val findObservable = {
2628
if (limit > 0) {
27-
coll.find(filter).sort(sort).projection(projection).limit(limit)
29+
coll.find(filter).sort(sort).projection(projection).limit(limit).skip(skip)
2830
}
2931
else {
30-
coll.find(filter).sort(sort).projection(projection)
32+
coll.find(filter).sort(sort).projection(projection).skip(skip)
3133
}
3234
}
3335
findObservable.map(doc => documentToObject[A](doc, decoder))

src/main/scala/dev/mongocamp/driver/mongodb/pagination/MongoPaginatedFilter.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ case class MongoPaginatedFilter[A <: Any](dao: MongoDAO[A], filter: Bson = Map()
1919
}
2020
val allPages = Math.ceil(count.toDouble / rows).toInt
2121
val skip = (page - 1) * rows
22-
// todo: add projection
23-
val responseList = dao.find(filter, sort, projection, rows.toInt).resultList(maxWait)
24-
// val responseList = dao.find(filter, sort, projection, rows.toInt).skip(skip.toInt).resultList(maxWait)
22+
val responseList = dao.find(filter, sort, projection, rows.toInt, skip.toInt).resultList(maxWait)
2523
PaginationResult(responseList, PaginationInfo(count, rows, page, allPages))
2624
}
2725

src/main/scala/dev/mongocamp/driver/mongodb/pagination/MongoPagination.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ trait MongoPagination[A <: Any] extends ConfigHelper {
1010
val rows = intConfig(configPath = "dev.mongocamp.mongodb.pagination", key = "rows")
1111
foreach(rows)(a)
1212
}
13+
1314
def foreach(rows: Int)(a: A => Unit): Unit = {
1415
var currentPageNumber = 1
1516
val rowsPerPage = if (rows < 1) Int.MaxValue else rows

src/main/scala/dev/mongocamp/driver/mongodb/schema/JsonConverter.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import io.circe.generic.auto._
88
import org.bson.Document
99

1010
import scala.collection.mutable
11+
1112
class JsonConverter extends CirceSchema {
1213

1314
def toJson(s: Any): String = {

0 commit comments

Comments
 (0)