From 1b2267cb3e52f713e2a68f0182124224cd18f341 Mon Sep 17 00:00:00 2001 From: Nathan Fischer Date: Tue, 9 Apr 2019 16:36:25 -0700 Subject: Add other essential commands --- contrib/flyway/src/FlywayModule.scala | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/contrib/flyway/src/FlywayModule.scala b/contrib/flyway/src/FlywayModule.scala index 86e7ea32..3d0e7552 100644 --- a/contrib/flyway/src/FlywayModule.scala +++ b/contrib/flyway/src/FlywayModule.scala @@ -6,10 +6,13 @@ import java.net.URLClassLoader import mill.scalalib.Lib.resolveDependencies import mill.scalalib._ import org.flywaydb.core.Flyway +import org.flywaydb.core.api.MigrationVersion import org.flywaydb.core.api.logging.LogFactory import org.flywaydb.core.internal.configuration.{ConfigUtils => flyway} +import org.flywaydb.core.internal.info.MigrationInfoDumper import org.flywaydb.core.internal.logging.console.ConsoleLog.Level import org.flywaydb.core.internal.logging.console.ConsoleLogCreator +import upickle.default.writer import scala.collection.JavaConverters._ @@ -29,31 +32,41 @@ trait FlywayModule extends JavaModule { flywayDriverDeps() )) - private def tToOptPair[A](key: String, t: A) = - Option(t) + private def strToOptPair[A](key: String, v: String) = + Option(v) .filter { case a: String => a.nonEmpty case _ => true } .map(key -> _) - - def flywayInstance = T { + + private implicit val flywayWriter = writer[String].comap[Flyway](_.toString) + def flywayInstance = T.command { val jdbcClassloader = new URLClassLoader(jdbcClasspath().map(_.path.toIO.toURI.toURL).toArray) val configProps = Map(flyway.URL -> flywayUrl()) ++ - tToOptPair(flyway.USER, flywayUser()) ++ - tToOptPair(flyway.PASSWORD, flywayPassword()) + strToOptPair(flyway.USER, flywayUser()) ++ + strToOptPair(flyway.PASSWORD, flywayPassword()) LogFactory.setLogCreator(new ConsoleLogCreator(Level.INFO)) Flyway .configure(jdbcClassloader) - .locations(flywayFileLocations().map("filesystem:" + _.path):_*) + .locations(flywayFileLocations().map("filesystem:" + _.path): _*) .configuration(configProps.asJava) .load } - def flywayMigrate() = T.command ( - flywayInstance().migrate() - ) + def flywayMigrate() = T.command(flywayInstance().migrate()) + def flywayClean() = T.command(flywayInstance().clean()) + def flywayBaseline() = T.command(flywayInstance().baseline()) + def flywayInfo() = T.command { + val log = T.ctx().log + val info = flywayInstance().info + val current = info.current + val currentSchemaVersion = if (current == null) MigrationVersion.EMPTY + else current.getVersion + log.info("Schema version: " + currentSchemaVersion) + log.info(MigrationInfoDumper.dumpToAsciiTable(info.all)) + } } -- cgit v1.2.3