foodsoft/script/list_databases
Patrick Gansterer 22fd814193 Add a script to read all databases with a prefix from the database server
When passing a value via the FOODSOFT_DB_PREFIX environment variable the
FOODSOFT_FOODCOOPS environment variable will be overwritten with a list
of databases starting with the given prefix.

This can be used to dynamically generate the app_config.yml in a multicoop
installation and avoid listing all instances manually.
2022-05-27 23:10:07 +02:00

22 lines
772 B
Text
Executable file

require 'mysql2'
def get_env_or_file_content(name)
ENV.fetch('FOODSOFT_DB_' + name) do |full_name|
file_name = ENV.fetch(full_name + '_FILE', nil)
file_name ? File.read(file_name).strip : ''
end
end
prefix = get_env_or_file_content('PREFIX')
host = get_env_or_file_content('HOST')
database = get_env_or_file_content('NAME')
username = get_env_or_file_content('USER')
password = get_env_or_file_content('PASSWORD')
client = Mysql2::Client.new(host: host, database: database, username: username, password: password)
escaped_prefix = client.escape(prefix)
results = client.query("SELECT schema_name FROM information_schema.schemata WHERE schema_name LIKE '#{escaped_prefix}%'")
results.each do |row|
puts row["schema_name"][prefix.length..]
end
client.close