61 lines
1 KiB
Crystal
61 lines
1 KiB
Crystal
require "secrets-env"
|
|
require "env_config"
|
|
|
|
module Backend
|
|
extend self
|
|
|
|
@@config = Config.new(ENV, prefix: "BACKEND")
|
|
|
|
def config : Config
|
|
@@config
|
|
end
|
|
|
|
class Config
|
|
include EnvConfig
|
|
|
|
getter url : String
|
|
|
|
@[EnvConfig::Setting(key: "api")]
|
|
getter api : APIConfig
|
|
|
|
@[EnvConfig::Setting(key: "worker")]
|
|
getter worker : WorkerConfig
|
|
|
|
@[EnvConfig::Setting(key: "smtp")]
|
|
getter smtp : SMTPConfig
|
|
|
|
@[EnvConfig::Setting(key: "db")]
|
|
getter db : DbConfig
|
|
|
|
class APIConfig
|
|
include EnvConfig
|
|
|
|
getter graphql_playground : Bool
|
|
getter jwt_secret : String
|
|
end
|
|
|
|
class WorkerConfig
|
|
include EnvConfig
|
|
|
|
getter redis_url : String
|
|
end
|
|
|
|
class SMTPConfig
|
|
include EnvConfig
|
|
|
|
getter helo : String
|
|
getter address : String
|
|
getter port : Int32
|
|
getter name : String
|
|
getter username : String
|
|
getter password : String
|
|
end
|
|
|
|
class DbConfig
|
|
include EnvConfig
|
|
|
|
getter url : String
|
|
end
|
|
end
|
|
end
|