import ciris.ConfigValue;
import ciris.ConfigError;
import ciris.api.cats.effect.Sync;
import javax.sql.DataSource;
import org.postgresql.ds.PGSimpleDataSource;
import java.util.concurrent.Executors;
public class DatabaseConfig {
public static ConfigValue<Sync[IO], ConfigError, DataSource>> databaseConfig() {
return ConfigValue
.env("DB_URL")
.as[String]
.map(formatDbUrl)
.flatMap {
case Some(url) =>
Sync[IO].delay {
val ds = new PGSimpleDataSource()
ds.setUrl(url)
ds.setUser(System.getenv("DB_USER"))
ds.setPassword(System.getenv("DB_PASS"))
ds
}
case None => ConfigValue.failed(new ConfigError.MissingKey("DB_URL"))
}
}
}