module Logical 
  class Movie < CachedObject 

    class MovieSweeper < Sweeper 
      observe Physical::Movie, Physical::Rating 

      def after_save(obj) 
        if obj.kind_of?(Physical::Movie) 
          CacheManager.instance.schedule_rebuild(Movie, obj.id) 
        end 
        if obj.kind_of?(Physical::Rating) 
          Physical::Movie.find_all_by_rating_id(obj.id, :select => 'id' 
            ).each do |movie| 
              Movie.clear(movie.id) 
            end 
        end 
      end 

      def after_destroy(obj) 
        if obj.kind_of?(Physical::Movie) 
          Movie.clear(obj.id) 
        end 
      end 
    end 
    MovieSweeper.instance 
  end 
end 


