module SidekiqUniqueJobs::Web

Utility module to help manage unique keys in redis. Useful for deleting keys that for whatever reason wasn't deleted

@author Mikael Henriksson <mikael@mhenrixon.com>

Public Class Methods

registered(app) click to toggle source
# File lib/sidekiq_unique_jobs/web.rb, line 11
def self.registered(app) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
  app.helpers do
    include Web::Helpers
  end

  app.get "/changelogs" do
    @filter         = params[:filter] || "*"
    @filter         = "*" if @filter == ""
    @count          = (params[:count] || 100).to_i
    @current_cursor = params[:cursor]
    @prev_cursor    = params[:prev_cursor]
    @total_size, @next_cursor, @changelogs = changelog.page(
      cursor: @current_cursor,
      pattern: @filter,
      page_size: @count,
    )

    erb(unique_template(:changelogs))
  end

  app.get "/changelogs/delete_all" do
    changelog.clear
    redirect_to :changelogs
  end

  app.get "/locks" do
    @filter         = params[:filter] || "*"
    @filter         = "*" if @filter == ""
    @count          = (params[:count] || 100).to_i
    @current_cursor = params[:cursor]
    @prev_cursor    = params[:prev_cursor]

    @total_size, @next_cursor, @locks = digests.page(
      cursor: @current_cursor,
      pattern: @filter,
      page_size: @count,
    )

    erb(unique_template(:locks))
  end

  app.get "/locks/delete_all" do
    digests.delete_by_pattern("*", count: digests.count)
    redirect_to :locks
  end

  app.get "/locks/:digest" do
    @digest = params[:digest]
    @lock   = SidekiqUniqueJobs::Lock.new(@digest)

    erb(unique_template(:lock))
  end

  app.get "/locks/:digest/delete" do
    digests.delete_by_digest(params[:digest])
    redirect_to :locks
  end

  app.get "/locks/:digest/jobs/:job_id/delete" do
    @digest = params[:digest]
    @lock   = SidekiqUniqueJobs::Lock.new(@digest)
    @lock.unlock(params[:job_id])

    redirect_to "locks/#{@lock.key}"
  end
end