Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.avast.sst.doobie.pureconfig

import com.avast.sst.doobie.DoobieHikariConfig
import doobie.enumerated.TransactionIsolation
import pureconfig.ConfigWriter
import pureconfig.generic.ProductHint
import pureconfig.generic.semiauto.deriveWriter

trait ConfigWriters {

implicit protected def hint[T]: ProductHint[T] = ProductHint.default

implicit val doobieTransactionIsolationWriter: ConfigWriter[TransactionIsolation] = ConfigWriter[String].contramap[TransactionIsolation] {
case TransactionIsolation.TransactionNone => "TRANSACTION_NONE"
case TransactionIsolation.TransactionReadUncommitted => "TRANSACTION_READ_UNCOMMITTED"
case TransactionIsolation.TransactionReadCommitted => "TRANSACTION_READ_COMMITTED"
case TransactionIsolation.TransactionRepeatableRead => "TRANSACTION_REPEATABLE_READ"
case TransactionIsolation.TransactionSerializable => "TRANSACTION_SERIALIZABLE"
}

implicit val doobieDoobieHikariConfigWriter: ConfigWriter[DoobieHikariConfig] = deriveWriter

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,21 @@ package com.avast.sst.doobie.pureconfig
import pureconfig.ConfigFieldMapping
import pureconfig.generic.ProductHint

/** Contains [[pureconfig.ConfigReader]] instances with default "kebab-case" naming convention. */
object implicits extends ConfigReaders {
/** Contains [[pureconfig.ConfigReader]] and [[pureconfig.ConfigWriter]] instances with default "kebab-case" naming convention. */
object implicits extends ConfigReaders with ConfigWriters {

/** Contains [[pureconfig.ConfigReader]] instances with "kebab-case" naming convention.
override implicit protected def hint[T]: ProductHint[T] = ProductHint.default

/** Contains [[pureconfig.ConfigReader]] and [[pureconfig.ConfigWriter]] instances with "kebab-case" naming convention.
*
* This is alias for the default `implicits._` import.
*/
object KebabCase extends ConfigReaders
object KebabCase extends ConfigReaders with ConfigWriters {
override implicit protected def hint[T]: ProductHint[T] = ProductHint.default
}

/** Contains [[pureconfig.ConfigReader]] instances with "camelCase" naming convention. */
object CamelCase extends ConfigReaders {
/** Contains [[pureconfig.ConfigReader]] and [[pureconfig.ConfigWriter]] instances with "camelCase" naming convention. */
object CamelCase extends ConfigReaders with ConfigWriters {
implicit override protected def hint[T]: ProductHint[T] = ProductHint(ConfigFieldMapping(pureconfig.CamelCase, pureconfig.CamelCase))
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.avast.sst.flyway.pureconfig

import com.avast.sst.flyway.FlywayConfig
import org.flywaydb.core.api.MigrationVersion
import pureconfig.ConfigWriter
import pureconfig.generic.ProductHint
import pureconfig.generic.semiauto.deriveWriter

import java.nio.charset.Charset

trait ConfigWriters {

implicit protected def hint[T]: ProductHint[T] = ProductHint.default

implicit private[pureconfig] val flywayCharsetWriter: ConfigWriter[Charset] = ConfigWriter[String].contramap[Charset](_.name)

implicit val flywayMigrationVersionWriter: ConfigWriter[MigrationVersion] = ConfigWriter[String].contramap[MigrationVersion](_.getVersion)

implicit val flywayFlywayConfigWriter: ConfigWriter[FlywayConfig] = deriveWriter
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,21 @@ package com.avast.sst.flyway.pureconfig
import pureconfig.ConfigFieldMapping
import pureconfig.generic.ProductHint

/** Contains [[pureconfig.ConfigReader]] instances with default "kebab-case" naming convention. */
object implicits extends ConfigReaders {
/** Contains [[pureconfig.ConfigReader]] and [[pureconfig.ConfigWriter]] instances with default "kebab-case" naming convention. */
object implicits extends ConfigReaders with ConfigWriters {

/** Contains [[pureconfig.ConfigReader]] instances with "kebab-case" naming convention.
override implicit protected def hint[T]: ProductHint[T] = ProductHint.default

/** Contains [[pureconfig.ConfigReader]] and [[pureconfig.ConfigWriter]] instances with "kebab-case" naming convention.
*
* This is alias for the default `implicits._` import.
*/
object KebabCase extends ConfigReaders
object KebabCase extends ConfigReaders with ConfigWriters {
override implicit protected def hint[T]: ProductHint[T] = ProductHint.default
}

/** Contains [[pureconfig.ConfigReader]] instances with "camelCase" naming convention. */
object CamelCase extends ConfigReaders {
/** Contains [[pureconfig.ConfigReader]] and [[pureconfig.ConfigWriter]] instances with "camelCase" naming convention. */
object CamelCase extends ConfigReaders with ConfigWriters {
implicit override protected def hint[T]: ProductHint[T] = ProductHint(ConfigFieldMapping(pureconfig.CamelCase, pureconfig.CamelCase))
}

Expand Down