namespace :database_logic do

namespace :functions do
    desc "Create stored functions"
    task :create => :environment do
        Dir.glob( Rails.root.join("app/sql/functions/*.sql") ).sort.each do |f|
            function_name = File.basename(f).split("_").drop(1).join("_").split(".").first
            p " + Creating #{function_name}..."
            ActiveRecord::Base.connection.execute( File.read( f ).gsub("[DB]", ActiveRecord::Base.connection_config[:database] ) )
        end
    end

    desc "Drop stored functions"
    task :drop => :environment do
        Dir.glob( Rails.root.join("app/sql/functions/*.sql") ).sort.each do |f|
            function_name = File.basename(f).split("_").drop(1).join("_").split(".").first
            p " - Dropping #{function_name}..."
            ActiveRecord::Base.connection.execute "drop function if exists #{ function_name }"
        end
    end

    desc "Recreate stored functions (drop & create)"
    task :recreate => [:drop, :create] do
        p "Done!"
    end
end # functions

end