diff --git a/src/invidious/config.cr b/src/invidious/config.cr index 9fc58409..66ba9df8 100644 --- a/src/invidious/config.cr +++ b/src/invidious/config.cr @@ -1,12 +1,5 @@ -struct DBConfig - include YAML::Serializable - - property user : String - property password : String - property host : String - property port : Int32 - property dbname : String -end +require "yaml" +require "./config/*" struct ConfigPreferences include YAML::Serializable @@ -69,7 +62,7 @@ class Config # Default log level, valid YAML values are ints and strings, see src/invidious/helpers/logger.cr property log_level : LogLevel = LogLevel::Info # Database configuration with separate parameters (username, hostname, etc) - property db : DBConfig? = nil + property db : IV::Config::DBConfig? = nil # Database configuration using 12-Factor "Database URL" syntax @[YAML::Field(converter: Preferences::URIConverter)] diff --git a/src/invidious/config/db.cr b/src/invidious/config/db.cr new file mode 100644 index 00000000..7ee3b9c6 --- /dev/null +++ b/src/invidious/config/db.cr @@ -0,0 +1,23 @@ +module Invidious::Config + struct DBConfig + include YAML::Serializable + + property scheme : String + property user : String + property password : String + property host : String + property port : Int32 + property dbname : String + + def to_uri + return URI.new( + scheme: @scheme, + user: @user, + password: @password, + host: @host, + port: @port, + path: @dbname, + ) + end + end +end