diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..004382e --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,24 @@ +name: Tests on PRs + +on: + pull_request: + branches: [ master, develop ] + +jobs: + + build-project: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@master + + - name: Set up JDK 17 + uses: actions/setup-java@v1 + with: + java-version: 17 + + - name: Run scalafmt + run: sbt scalafmtCheckAll + + - name: Run tests + run: sbt test \ No newline at end of file diff --git a/build.sbt b/build.sbt index 0f6cf13..62cbec6 100644 --- a/build.sbt +++ b/build.sbt @@ -2,7 +2,13 @@ name := "zio-flyway-db-migrator" version := "0.1" -scalaVersion := "3.2.0" +scalaVersion := "3.3.0-RC2" + +scalacOptions ++= Seq( + "-Wunused:imports", + "-Wunused:privates", + "-Wunused:locals" +) // for zio-interop resolvers += diff --git a/project/plugins.sbt b/project/plugins.sbt index fc75663..939d3a9 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,3 +1,7 @@ -addSbtPlugin("io.github.davidgregory084" % "sbt-tpolecat" % "0.4.1") +// code rules and format +addSbtPlugin("io.github.davidgregory084" % "sbt-tpolecat" % "0.4.2") addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6") -addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.1") +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.10.4") + +// code running +addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.1") diff --git a/src/main/scala/com/github/denisnovac/ziolearn/Main.scala b/src/main/scala/com/github/denisnovac/ziolearn/Main.scala index 06b4fba..1c7a613 100644 --- a/src/main/scala/com/github/denisnovac/ziolearn/Main.scala +++ b/src/main/scala/com/github/denisnovac/ziolearn/Main.scala @@ -9,12 +9,11 @@ import zio.config.ReadError import com.github.denisnovac.ziolearn.logging.LoggerLayer import com.github.denisnovac.ziolearn.config.AppConfig import com.github.denisnovac.ziolearn.jdbc.DBLayer - -import java.io.File -import doobie.util.transactor.Transactor import com.github.denisnovac.ziolearn.cats.ZioCatsLayer import com.github.denisnovac.ziolearn.config.DBConfig +import java.io.File + object Main extends zio.interop.catz.CatsApp { private val configsLayer: ZLayer[Any, ReadError[String], DBConfig] = diff --git a/src/main/scala/com/github/denisnovac/ziolearn/jdbc/DBLayer.scala b/src/main/scala/com/github/denisnovac/ziolearn/jdbc/DBLayer.scala index 0727ec6..9f69549 100644 --- a/src/main/scala/com/github/denisnovac/ziolearn/jdbc/DBLayer.scala +++ b/src/main/scala/com/github/denisnovac/ziolearn/jdbc/DBLayer.scala @@ -1,7 +1,6 @@ package com.github.denisnovac.ziolearn.jdbc import zio.* -import zio.logging.* import doobie.util.transactor.Transactor import com.github.denisnovac.ziolearn.config.DBConfig import com.github.denisnovac.ziolearn.cats.ZioCatsLayer.ZioCats diff --git a/src/main/scala/com/github/denisnovac/ziolearn/jdbc/DBMigrator.scala b/src/main/scala/com/github/denisnovac/ziolearn/jdbc/DBMigrator.scala index f84ae50..b4a6afb 100644 --- a/src/main/scala/com/github/denisnovac/ziolearn/jdbc/DBMigrator.scala +++ b/src/main/scala/com/github/denisnovac/ziolearn/jdbc/DBMigrator.scala @@ -1,12 +1,9 @@ package com.github.denisnovac.ziolearn.jdbc import zio.* -import zio.logging.* import org.flywaydb.core.Flyway import org.flywaydb.core.api.configuration.FluentConfiguration import scala.jdk.CollectionConverters.* -import scala.annotation.migration -import org.flywaydb.core.api.Location import org.flywaydb.core.api.MigrationState import com.github.denisnovac.ziolearn.config.DBConfig diff --git a/src/main/scala/com/github/denisnovac/ziolearn/jdbc/DBTransactor.scala b/src/main/scala/com/github/denisnovac/ziolearn/jdbc/DBTransactor.scala index fd2000b..681647f 100644 --- a/src/main/scala/com/github/denisnovac/ziolearn/jdbc/DBTransactor.scala +++ b/src/main/scala/com/github/denisnovac/ziolearn/jdbc/DBTransactor.scala @@ -5,11 +5,7 @@ import zio.interop.catz.* import com.github.denisnovac.ziolearn.config.DBConfig import com.github.denisnovac.ziolearn.cats.ZioCatsLayer.ZioCats import doobie.hikari.HikariTransactor -import cats.effect.kernel.Sync import doobie.* -import doobie.implicits.* -import doobie.hikari.* -import cats.implicits.* import cats.effect.kernel.Async import cats.effect.std.Dispatcher import cats.effect.kernel.Resource diff --git a/src/main/scala/com/github/denisnovac/ziolearn/logging/LoggerLayer.scala b/src/main/scala/com/github/denisnovac/ziolearn/logging/LoggerLayer.scala index 50e9844..f5fed74 100644 --- a/src/main/scala/com/github/denisnovac/ziolearn/logging/LoggerLayer.scala +++ b/src/main/scala/com/github/denisnovac/ziolearn/logging/LoggerLayer.scala @@ -4,10 +4,8 @@ import zio.* import zio.logging.LogFormat.* import zio.logging.backend.SLF4J import doobie.util.log.LogHandler -import doobie.util.log.LogEvent object LoggerLayer { - private val format = timestamp.fixed(32) |-| level |-| label("message", quoted(line)) /** Copypasterd from doobie's default LogHandler.jdkLogHandler */ diff --git a/src/main/scala/com/github/denisnovac/ziolearn/services/UserStatusService.scala b/src/main/scala/com/github/denisnovac/ziolearn/services/UserStatusService.scala index a34a176..4338557 100644 --- a/src/main/scala/com/github/denisnovac/ziolearn/services/UserStatusService.scala +++ b/src/main/scala/com/github/denisnovac/ziolearn/services/UserStatusService.scala @@ -6,7 +6,6 @@ import doobie.ConnectionIO import doobie.implicits.* import doobie.util.transactor.Transactor import cats.effect.Sync -import cats.implicits.* import zio.* import UserStatusService.* import UserStatusService.UserStatusServiceErrors.* diff --git a/src/test/scala/com/github/denisnovac/ziolearn/jdbc/SharedPostgresContainer.scala b/src/test/scala/com/github/denisnovac/ziolearn/jdbc/SharedPostgresContainer.scala index ce1644e..868b688 100644 --- a/src/test/scala/com/github/denisnovac/ziolearn/jdbc/SharedPostgresContainer.scala +++ b/src/test/scala/com/github/denisnovac/ziolearn/jdbc/SharedPostgresContainer.scala @@ -1,7 +1,6 @@ package com.github.denisnovac.ziolearn.jdbc import zio.* -import zio.interop.catz.* import com.github.denisnovac.ziolearn.config.DBConfig import org.testcontainers.containers.PostgreSQLContainer import doobie.util.transactor.Transactor diff --git a/src/test/scala/com/github/denisnovac/ziolearn/model/repos/StatusRepoSuit.scala b/src/test/scala/com/github/denisnovac/ziolearn/model/repos/StatusRepoSuit.scala index ecf1c5e..e9c12bf 100644 --- a/src/test/scala/com/github/denisnovac/ziolearn/model/repos/StatusRepoSuit.scala +++ b/src/test/scala/com/github/denisnovac/ziolearn/model/repos/StatusRepoSuit.scala @@ -8,22 +8,23 @@ import zio.Task import zio.* import zio.test.* import com.github.denisnovac.ziolearn.model.* -import java.time.Instant import doobie.implicits.* import cats.effect.kernel.Async import doobie.util.log.LogHandler import doobie.ConnectionIO -object StatusRepoSuit extends SharedPostgresContainer { +import com.github.denisnovac.ziolearn.util.TimeUtils + +object StatusRepoSuit extends SharedPostgresContainer with TimeUtils { override def spec: Spec[Transactor[Task] & Async[Task] & LogHandler & (TestEnvironment & Scope), Any] = test("CRUD for StatusRepo") { - val expectedStatus = Status(100, "StatusRepoSuitTest", Instant.now()) - val modifiedStatus = Status(100, "StatusRepoSuitTest2", Instant.now()) + val expectedStatus = Status(100, "StatusRepoSuitTest", timeNow()) + val modifiedStatus = Status(100, "StatusRepoSuitTest2", timeNow()) def crud(repo: StatusRepo[ConnectionIO], urepo: UserRepo[ConnectionIO]) = for { - _ <- urepo.upsert(User(100, "test", "test", Instant.now(), Instant.now())) + _ <- urepo.upsert(User(100, "test", "test", timeNow(), timeNow())) e <- repo.upsert(expectedStatus) er <- repo.read(100) diff --git a/src/test/scala/com/github/denisnovac/ziolearn/model/repos/UserRepoSuit.scala b/src/test/scala/com/github/denisnovac/ziolearn/model/repos/UserRepoSuit.scala index 028fa50..527cbe7 100644 --- a/src/test/scala/com/github/denisnovac/ziolearn/model/repos/UserRepoSuit.scala +++ b/src/test/scala/com/github/denisnovac/ziolearn/model/repos/UserRepoSuit.scala @@ -9,16 +9,17 @@ import zio.Task import zio.* import zio.test.* import com.github.denisnovac.ziolearn.model.* -import java.time.Instant import doobie.implicits.* import cats.effect.kernel.Async import doobie.util.log.LogHandler -object UserRepoSuit extends SharedPostgresContainer { +import com.github.denisnovac.ziolearn.util.TimeUtils + +object UserRepoSuit extends SharedPostgresContainer with TimeUtils { override def spec: Spec[Transactor[Task] & Async[Task] & LogHandler & (TestEnvironment & Scope), Any] = test("CRUD for UserRepo") { - val expectedUser = User(1, "UserRepoSuitTest", "test", Instant.now(), Instant.now()) + val expectedUser = User(1, "UserRepoSuitTest", "test", timeNow(), timeNow()) val modifiedExpected = expectedUser.copy(uValue = "test2") def crud(repo: UserRepo[ConnectionIO]) = for { diff --git a/src/test/scala/com/github/denisnovac/ziolearn/util/TimeUtils.scala b/src/test/scala/com/github/denisnovac/ziolearn/util/TimeUtils.scala new file mode 100644 index 0000000..6120eab --- /dev/null +++ b/src/test/scala/com/github/denisnovac/ziolearn/util/TimeUtils.scala @@ -0,0 +1,11 @@ +package com.github.denisnovac.ziolearn.util + +import java.time.Instant + +trait TimeUtils { + + def timeNow() = { + val i = Instant.now() + i.minusNanos(i.getNano()) + } +}