diff --git a/bin/postal b/bin/postal index 34a6d22..5a74f68 100755 --- a/bin/postal +++ b/bin/postal @@ -25,12 +25,15 @@ case "$1" in initialize) echo 'Initializing database' - run "bundle exec rake db:create db:schema:load db:seed" + run "bundle exec rake db:create postal:update" ;; upgrade) - echo 'Migrating database' - run "bundle exec rake db:migrate" + run "bundle exec rake postal:update" + ;; + + update) + run "bundle exec rake postal:update" ;; console) @@ -65,7 +68,7 @@ case "$1" in echo "Setup/upgrade tools:" echo echo -e " * \033[32minitialize\033[0m - create and load the DB schema" - echo -e " * \033[32mupgrade\033[0m - upgrade the DB schema" + echo -e " * \033[32mupdate\033[0m - upgrade the DB schema" echo echo "Other tools:" echo diff --git a/lib/tasks/postal.rake b/lib/tasks/postal.rake index 4b19805..ef1e85a 100644 --- a/lib/tasks/postal.rake +++ b/lib/tasks/postal.rake @@ -27,6 +27,19 @@ namespace :postal do task generate_helm_env_vars: :environment do puts Postal::HelmConfigExporter.new(Postal::ConfigSchema).export end + + desc "Update the database" + task update: :environment do + mysql = ActiveRecord::Base.connection + if mysql.table_exists?("schema_migrations") && + mysql.select_all("select * from schema_migrations").any? + puts "Database schema is already loaded. Running migrations with db:migrate" + Rake::Task["db:migrate"].invoke + else + puts "No schema migrations exist. Loading schema with db:schema:load" + Rake::Task["db:schema:load"].invoke + end + end end Rake::Task["db:migrate"].enhance do