From 5fc1ed6084f59fc8951fd27828e7a8d3331a8c31 Mon Sep 17 00:00:00 2001 From: simerplaha Date: Sat, 20 Nov 2021 01:11:37 +1100 Subject: [PATCH] #326 removed `slice` dependency on `effect` project. --- build.sbt | 8 ++--- .../swaydb/core/tool/AppendixRepairer.scala | 2 +- .../throttle/behaviour/BehaviourCommit.scala | 2 +- .../main/scala/swaydb/core/level/Level.scala | 2 +- .../src/main/scala/swaydb/core/log/Logs.scala | 2 +- .../scala/swaydb/core/log/PersistentLog.scala | 2 +- .../log/serialiser/LogEntrySerialiser.scala | 1 + .../scala/swaydb/core/segment/Segment.scala | 2 +- .../segment/io/SegmentWritePersistentIO.scala | 2 +- .../scala/swaydb/core/CommonAssertions.scala | 2 +- .../scala/swaydb/ReaderBaseIOImplicits.scala | 30 +++++++++++++++++++ .../main/scala/swaydb}/SliceIOImplicits.scala | 5 ++-- .../main/scala/swaydb/slice/ReaderBase.scala | 20 ------------- 13 files changed, 44 insertions(+), 36 deletions(-) create mode 100644 effect/src/main/scala/swaydb/ReaderBaseIOImplicits.scala rename {slice/src/main/scala/swaydb/slice => effect/src/main/scala/swaydb}/SliceIOImplicits.scala (99%) diff --git a/build.sbt b/build.sbt index 9adf334e7..56f720621 100644 --- a/build.sbt +++ b/build.sbt @@ -182,7 +182,7 @@ lazy val effect = .settings(commonSettings) .settings(publishSettings) .settings(libraryDependencies ++= commonDependencies(scalaVersion.value)) - .dependsOn(utils, testkit % Test) + .dependsOn(slice, utils, testkit % Test) lazy val core = project @@ -239,6 +239,7 @@ lazy val `core-series` = .settings(publishSettings) .settings(libraryDependencies ++= commonDependencies(scalaVersion.value)) .dependsOn( + effect % Test, testkit % Test, serializers % Test ) @@ -255,10 +256,7 @@ lazy val slice = .settings(commonSettings) .settings(publishSettings) .settings(libraryDependencies ++= commonDependencies(scalaVersion.value)) - .dependsOn( - effect, - testkit % Test, - ) + .dependsOn(utils, testkit % Test) lazy val actor = project diff --git a/core-tools/src/main/scala/swaydb/core/tool/AppendixRepairer.scala b/core-tools/src/main/scala/swaydb/core/tool/AppendixRepairer.scala index ec617ae7a..8d818af86 100644 --- a/core-tools/src/main/scala/swaydb/core/tool/AppendixRepairer.scala +++ b/core-tools/src/main/scala/swaydb/core/tool/AppendixRepairer.scala @@ -32,7 +32,7 @@ import swaydb.core.segment.Segment import swaydb.core.segment.cache.sweeper.MemorySweeper import swaydb.effect.Effect import swaydb.slice.Slice -import swaydb.slice.SliceIOImplicits._ +import swaydb.SliceIOImplicits._ import swaydb.slice.order.KeyOrder import swaydb.utils.Extension import swaydb.utils.StorageUnits._ diff --git a/core/src/main/scala/swaydb/core/compaction/throttle/behaviour/BehaviourCommit.scala b/core/src/main/scala/swaydb/core/compaction/throttle/behaviour/BehaviourCommit.scala index e4822b29c..deb5f76e6 100644 --- a/core/src/main/scala/swaydb/core/compaction/throttle/behaviour/BehaviourCommit.scala +++ b/core/src/main/scala/swaydb/core/compaction/throttle/behaviour/BehaviourCommit.scala @@ -25,7 +25,7 @@ import swaydb.core.segment.block.segment.transient.TransientSegment import swaydb.core.segment.{Segment, SegmentOption} import swaydb.core.util.DefIO import swaydb.slice.Slice -import swaydb.slice.SliceIOImplicits._ +import swaydb.SliceIOImplicits._ import swaydb.{Error, IO} protected case object BehaviourCommit extends LazyLogging { diff --git a/core/src/main/scala/swaydb/core/level/Level.scala b/core/src/main/scala/swaydb/core/level/Level.scala index 11255d1d0..aeee8d614 100644 --- a/core/src/main/scala/swaydb/core/level/Level.scala +++ b/core/src/main/scala/swaydb/core/level/Level.scala @@ -50,7 +50,7 @@ import swaydb.core.util.Exceptions._ import swaydb.core.util._ import swaydb.effect.Effect._ import swaydb.effect.{Dir, Effect, FileLocker} -import swaydb.slice.SliceIOImplicits._ +import swaydb.SliceIOImplicits._ import swaydb.slice.order.{KeyOrder, TimeOrder} import swaydb.slice.{Slice, SliceOption} import swaydb.utils.{Aggregator, Extension, Futures, IDGenerator} diff --git a/core/src/main/scala/swaydb/core/log/Logs.scala b/core/src/main/scala/swaydb/core/log/Logs.scala index 57ac81a3f..8f3640864 100644 --- a/core/src/main/scala/swaydb/core/log/Logs.scala +++ b/core/src/main/scala/swaydb/core/log/Logs.scala @@ -28,7 +28,7 @@ import swaydb.core.log.timer.Timer import swaydb.core.queue.VolatileQueue import swaydb.effect.Effect import swaydb.effect.Effect._ -import swaydb.slice.SliceIOImplicits._ +import swaydb.SliceIOImplicits._ import swaydb.slice.order.KeyOrder import swaydb.utils.DropIterator import swaydb.{Error, IO} diff --git a/core/src/main/scala/swaydb/core/log/PersistentLog.scala b/core/src/main/scala/swaydb/core/log/PersistentLog.scala index 5d9105a9e..c946b3ef6 100644 --- a/core/src/main/scala/swaydb/core/log/PersistentLog.scala +++ b/core/src/main/scala/swaydb/core/log/PersistentLog.scala @@ -28,7 +28,7 @@ import swaydb.core.log.serialiser.{LogEntryReader, LogEntrySerialiser, LogEntryW import swaydb.effect.Effect._ import swaydb.effect.{Effect, IOStrategy} import swaydb.slice.Slice -import swaydb.slice.SliceIOImplicits._ +import swaydb.SliceIOImplicits._ import swaydb.slice.order.KeyOrder import swaydb.utils.Extension diff --git a/core/src/main/scala/swaydb/core/log/serialiser/LogEntrySerialiser.scala b/core/src/main/scala/swaydb/core/log/serialiser/LogEntrySerialiser.scala index 964f14f39..be1d5b551 100644 --- a/core/src/main/scala/swaydb/core/log/serialiser/LogEntrySerialiser.scala +++ b/core/src/main/scala/swaydb/core/log/serialiser/LogEntrySerialiser.scala @@ -19,6 +19,7 @@ package swaydb.core.log.serialiser import com.typesafe.scalalogging.LazyLogging import swaydb.Error.Log.ExceptionHandler import swaydb.IO +import swaydb.ReaderBaseIOImplicits._ import swaydb.core.file.reader.Reader import swaydb.core.log.{LogEntry, RecoveryResult} import swaydb.core.util.CRC32 diff --git a/core/src/main/scala/swaydb/core/segment/Segment.scala b/core/src/main/scala/swaydb/core/segment/Segment.scala index 31d21a02f..3ca5ff4a3 100644 --- a/core/src/main/scala/swaydb/core/segment/Segment.scala +++ b/core/src/main/scala/swaydb/core/segment/Segment.scala @@ -41,7 +41,7 @@ import swaydb.core.segment.ref.search.ThreadReadState import swaydb.core.skiplist.{SkipList, SkipListTreeMap} import swaydb.core.util._ import swaydb.effect.Effect -import swaydb.slice.SliceIOImplicits._ +import swaydb.SliceIOImplicits._ import swaydb.slice.order.{KeyOrder, TimeOrder} import swaydb.slice.{MaxKey, Slice, SliceOption} import swaydb.utils.Collections._ diff --git a/core/src/main/scala/swaydb/core/segment/io/SegmentWritePersistentIO.scala b/core/src/main/scala/swaydb/core/segment/io/SegmentWritePersistentIO.scala index d86638093..690270110 100644 --- a/core/src/main/scala/swaydb/core/segment/io/SegmentWritePersistentIO.scala +++ b/core/src/main/scala/swaydb/core/segment/io/SegmentWritePersistentIO.scala @@ -28,7 +28,7 @@ import swaydb.core.segment.block.segment.transient.TransientSegment import swaydb.core.segment.cache.sweeper.MemorySweeper import swaydb.core.util.DefIO import swaydb.slice.Slice -import swaydb.slice.SliceIOImplicits._ +import swaydb.SliceIOImplicits._ import swaydb.slice.order.{KeyOrder, TimeOrder} import swaydb.utils.IDGenerator import swaydb.{Error, IO} diff --git a/core/src/test/scala/swaydb/core/CommonAssertions.scala b/core/src/test/scala/swaydb/core/CommonAssertions.scala index d780d3559..ceea788d2 100644 --- a/core/src/test/scala/swaydb/core/CommonAssertions.scala +++ b/core/src/test/scala/swaydb/core/CommonAssertions.scala @@ -56,7 +56,7 @@ import swaydb.core.skiplist.SkipListConcurrent import swaydb.effect.{Effect, IOStrategy} import swaydb.serializers.Default._ import swaydb.serializers._ -import swaydb.slice.SliceIOImplicits._ +import swaydb.SliceIOImplicits._ import swaydb.slice.order.{KeyOrder, TimeOrder} import swaydb.slice.{Reader, Slice, SliceOption, SliceReader} import swaydb.testkit.RunThis._ diff --git a/effect/src/main/scala/swaydb/ReaderBaseIOImplicits.scala b/effect/src/main/scala/swaydb/ReaderBaseIOImplicits.scala new file mode 100644 index 000000000..aad49054f --- /dev/null +++ b/effect/src/main/scala/swaydb/ReaderBaseIOImplicits.scala @@ -0,0 +1,30 @@ +package swaydb + +import swaydb.slice.ReaderBase + +import scala.annotation.tailrec + +object ReaderBaseIOImplicits { + + implicit class ReaderIOImplicits[B](reader: ReaderBase[B]) { + + @tailrec + @inline final def foldLeftIO[E: IO.ExceptionHandler, R](result: R)(f: (R, ReaderBase[B]) => IO[E, R]): IO[E, R] = + IO(reader.hasMore) match { + case IO.Left(error) => + IO.Left(error) + + case IO.Right(yes) if yes => + f(result, reader) match { + case IO.Right(newResult) => + foldLeftIO(newResult)(f) + + case IO.Left(error) => + IO.Left(error) + } + + case _ => + IO.Right(result) + } + } +} diff --git a/slice/src/main/scala/swaydb/slice/SliceIOImplicits.scala b/effect/src/main/scala/swaydb/SliceIOImplicits.scala similarity index 99% rename from slice/src/main/scala/swaydb/slice/SliceIOImplicits.scala rename to effect/src/main/scala/swaydb/SliceIOImplicits.scala index 83afd2c8f..7b22188fa 100644 --- a/slice/src/main/scala/swaydb/slice/SliceIOImplicits.scala +++ b/effect/src/main/scala/swaydb/SliceIOImplicits.scala @@ -14,9 +14,9 @@ * limitations under the License. */ -package swaydb.slice +package swaydb -import swaydb.IO +import swaydb.slice.Slice import scala.collection.Iterable import scala.collection.mutable.ListBuffer @@ -243,5 +243,4 @@ object SliceIOImplicits { } } } - } diff --git a/slice/src/main/scala/swaydb/slice/ReaderBase.scala b/slice/src/main/scala/swaydb/slice/ReaderBase.scala index 61f041bc3..b3b8ee6cf 100644 --- a/slice/src/main/scala/swaydb/slice/ReaderBase.scala +++ b/slice/src/main/scala/swaydb/slice/ReaderBase.scala @@ -16,7 +16,6 @@ package swaydb.slice -import swaydb.IO import swaydb.slice.utils.ByteOps import swaydb.utils.Maybe.Maybe @@ -118,25 +117,6 @@ trait ReaderBase[B] { self => @inline def reset(): ReaderBase[B] = this moveTo 0 - @tailrec - final def foldLeftIO[E: IO.ExceptionHandler, R](result: R)(f: (R, ReaderBase[B]) => IO[E, R]): IO[E, R] = - IO(hasMore) match { - case IO.Left(error) => - IO.Left(error) - - case IO.Right(yes) if yes => - f(result, self) match { - case IO.Right(newResult) => - foldLeftIO(newResult)(f) - - case IO.Left(error) => - IO.Left(error) - } - - case _ => - IO.Right(result) - } - @tailrec final def foldLeft[R](result: R)(f: (R, ReaderBase[B]) => R): R = if (hasMore)