require 'algoliasearch'

namespace :search_terms do

desc 'Publish search terms to Algolia'
task 'algolia:generate', %i[locale] => :environment do |_, args|
  unless ENV['ALGOLIA_APPLICATION_ID']
    puts 'Not rebuilding search index, Algolia Application ID not set'
    next
  end

  Algolia.init(application_id: ENV['ALGOLIA_APPLICATION_ID'], api_key: ENV['ALGOLIA_API_KEY'])
  index = Algolia::Index.new "#{Rails.env}_nexmo_developer"
  search_articles = SearchTerms.generate(args.fetch(:locale, I18n.default_locale))

  search_articles.each do |search_article|
    index.add_object(search_article)
  rescue Algolia::AlgoliaProtocolError
    # puts search_article
    puts "#{search_article[:document_path]} could not be processed"
  end
end

desc 'Clear the index in Algolia'
task 'algolia:clear' => :environment do
  unless ENV['ALGOLIA_APPLICATION_ID']
    puts 'Not rebuilding search index, Algolia Application ID not set'
    next
  end
  Algolia.init(application_id: ENV['ALGOLIA_APPLICATION_ID'], api_key: ENV['ALGOLIA_API_KEY'])
  index = Algolia::Index.new "#{Rails.env}_nexmo_developer"
  index.clear_index
end

desc 'Refresh the Algolia index'
task 'algolia:refresh' => :environment do
  Rake::Task['search_terms:algolia:clear'].invoke
  Rake::Task['search_terms:algolia:generate'].invoke
end

end