class ArticleSweeper < ActionController::Caching::Sweeper

  observe Article

  # Při vytvoření nového článku je nutné 
  # znovu vygenerovat veřejný seznam článků
  def after_create(article)
    expire_public_page
  end

  # Při aktualizaci stávajícího článku 
  # je jeho verze v mezipaměti zastaralá
  def after_update(article)
    expire_article_page(article.id)
  end

  # Vymazání stránky znamená, že aktualizujeme veřejný seznam 
  # a zahodíme článek v mezipaměti
  def after_destroy(article)
    expire_public_page
    expire_article_page(article.id)
  end

private

  def expire_public_page
    expire_page(:controller => "content", :action => 'public_content')
  end

  def expire_article_page(article_id)
    expire_action(:controller => "content",
                  :action => "premium_content",
                  :id => article_id)
  end
end
