diff --git a/summercms/resources/application.conf b/summercms/resources/application.conf new file mode 100644 index 0000000..46242f8 --- /dev/null +++ b/summercms/resources/application.conf @@ -0,0 +1,19 @@ +server { + host = "0.0.0.0" + host = ${?SERVER_HOST} + port = 8080 + port = ${?SERVER_PORT} +} + +database { + host = "localhost" + host = ${?DB_HOST} + port = 5432 + port = ${?DB_PORT} + database = "summercms" + database = ${?DB_NAME} + user = "summercms" + user = ${?DB_USER} + password = "summercms" + password = ${?DB_PASSWORD} +} diff --git a/summercms/src/config/AppConfig.scala b/summercms/src/config/AppConfig.scala new file mode 100644 index 0000000..0fc57a0 --- /dev/null +++ b/summercms/src/config/AppConfig.scala @@ -0,0 +1,64 @@ +package config + +import zio.Config +import zio.config.magnolia.deriveConfig + +/** Server configuration + * + * @param host + * Server bind host + * @param port + * Server bind port + */ +final case class ServerConfig( + host: String, + port: Int +) + +object ServerConfig { + given config: Config[ServerConfig] = deriveConfig[ServerConfig] +} + +/** Database configuration + * + * @param host + * Database host + * @param port + * Database port + * @param database + * Database name + * @param user + * Database user + * @param password + * Database password + */ +final case class DatabaseConfig( + host: String, + port: Int, + database: String, + user: String, + password: String +) + +object DatabaseConfig { + given config: Config[DatabaseConfig] = deriveConfig[DatabaseConfig] +} + +/** Application configuration + * + * Composed from server and database configurations. Uses zio-config-magnolia for automatic + * derivation. + * + * @param server + * Server configuration + * @param database + * Database configuration + */ +final case class AppConfig( + server: ServerConfig, + database: DatabaseConfig +) + +object AppConfig { + given config: Config[AppConfig] = deriveConfig[AppConfig] +}