module SidekiqUniqueJobs::Web

def self.registered(app) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize

rubocop:disable Metrics/MethodLength, Metrics/AbcSize
def self.registered(app) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
  app.helpers do
    include Web::Helpers
  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]
    @pagination     = { pattern: @filter, cursor: @current_cursor, page_size: @count }
    @total_size, @next_cursor, @locks = digests.page(**@pagination)
    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