# frozen_string_literal: true

if defined?(Rails) && Rails.application.config.respond_to?(:backup_dirs)

set :backup_dirs, Rails.application.config.backup_dirs

else

set :backup_dirs, []

end

namespace :deploy do

%w[start stop restart].each do |action|
  desc "#{action.capitalize} application"
  task :"#{action}" do
    on roles(:app) do
      execute "sudo service #{fetch :application} #{action}"
    end
  end
end

task :upload_linked_files do
  on roles :app do
    shared = "/var/www/#{fetch :application}/shared"
    fetch(:linked_files)&.each do |f|
      execute "mkdir -p #{shared}/#{File.dirname f}"
      upload! f, "#{shared}/#{f}"
    end
  end
end

after :publishing, :upload_linked_files
# after :publishing, :restart

desc "Create database"
task :db_create do
  on roles(:db) do
    within release_path do
      with rails_env: fetch(:stage) do
        execute :rails, "db:create"
      end
    end
  end
end
desc "Create drop"
task :db_drop do
  on roles(:db) do
    within release_path do
      with rails_env: fetch(:stage) do
        execute :rails, "db:drop"
      end
    end
  end
end
desc "Setup database"
task :db_reset do
  on roles(:db) do
    within release_path do
      with rails_env: fetch(:stage) do
        execute :rails, "db:schema:load"
        execute :rails, "db:seed"
      end
    end
  end
end
desc "Seed database"
task :db_seed do
  on roles(:db) do
    within release_path do
      with rails_env: fetch(:stage) do
        execute :rails, "db:seed"
      end
    end
  end
end

end