Skip to content

Commit 33f3dc0

Browse files
committed
refactor: PR changes
1 parent bfddcff commit 33f3dc0

File tree

3 files changed

+26
-8
lines changed

3 files changed

+26
-8
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,27 @@
11
package com.avast.sst.flyway.pureconfig
22

3+
import java.nio.charset.{Charset, IllegalCharsetNameException, UnsupportedCharsetException}
4+
5+
import cats.syntax.either._
36
import com.avast.sst.flyway.FlywayConfig
7+
import org.flywaydb.core.api.MigrationVersion
48
import pureconfig.ConfigReader
9+
import pureconfig.error.ExceptionThrown
510
import pureconfig.generic.semiauto.deriveReader
611

712
trait ConfigReaders {
813

14+
implicit private[pureconfig] val charsetReader: ConfigReader[Charset] = ConfigReader[String].emap { value =>
15+
try {
16+
Charset.forName(value).asRight
17+
} catch {
18+
case ex @ (_: IllegalArgumentException | _: IllegalCharsetNameException | _: UnsupportedCharsetException) =>
19+
ExceptionThrown(ex).asLeft
20+
}
21+
}
22+
23+
implicit val migrationVersionReader: ConfigReader[MigrationVersion] = ConfigReader[String].map(MigrationVersion.fromVersion)
24+
925
implicit val configReader: ConfigReader[FlywayConfig] = deriveReader
1026

1127
}

flyway/src/main/scala/com/avast/sst/flyway/FlywayConfig.scala

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package com.avast.sst.flyway
22

3-
final case class FlywayConfig(url: String,
4-
username: String,
5-
password: String,
6-
baselineOnMigrate: Boolean = false,
7-
baselineVersion: Option[String] = None,
3+
import java.nio.charset.{Charset, StandardCharsets}
4+
5+
import org.flywaydb.core.api.MigrationVersion
6+
7+
final case class FlywayConfig(baselineOnMigrate: Boolean = false,
8+
baselineVersion: Option[MigrationVersion] = None,
89
baselineDescription: Option[String] = None,
910
batch: Boolean = false,
1011
cleanDisabled: Boolean = false,
1112
cleanOnValidationError: Boolean = false,
1213
connectRetries: Int = 0,
13-
encoding: String = "UTF-8",
14+
encoding: Charset = StandardCharsets.UTF_8,
1415
group: Boolean = false,
1516
ignoreFutureMigrations: Boolean = true,
1617
ignoreIgnoredMigrations: Boolean = false,

flyway/src/main/scala/com/avast/sst/flyway/FlywayModule.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
package com.avast.sst.flyway
22

33
import cats.effect.Sync
4+
import javax.sql.DataSource
45
import org.flywaydb.core.Flyway
56

67
object FlywayModule {
78

89
@SuppressWarnings(Array("org.wartremover.warts.NonUnitStatements"))
9-
def make[F[_]: Sync](config: FlywayConfig): F[Flyway] = {
10+
def make[F[_]: Sync](dataSource: DataSource, config: FlywayConfig): F[Flyway] = {
1011
Sync[F].delay {
1112
val builder = Flyway
1213
.configure
13-
.dataSource(config.url, config.username, config.password)
14+
.dataSource(dataSource)
1415
.baselineOnMigrate(config.baselineOnMigrate)
1516
.batch(config.batch)
1617
.cleanDisabled(config.cleanDisabled)

0 commit comments

Comments
 (0)