Sha256: 7ce47d497c6c86d2de97eb5de9fcc85110af7304e8eade06eb4771f7d11ece48

Contents?: true

Size: 866 Bytes

Versions: 3

Compression:

Stored size: 866 Bytes

Contents

module ActiveRecordViews
  class RegisteredView
    attr_reader :model_class, :sql_path

    def initialize(model_class, sql_path)
      @model_class_name = model_class.name
      @sql_path = sql_path
      update_timestamp!
    end

    def model_class
      @model_class_name.constantize
    end

    def stale?
      sql_timestamp != @cached_sql_timestamp
    end

    def reload!
      if File.exists? sql_path
        ActiveRecordViews.create_view model_class.connection, model_class.table_name, model_class.name, File.read(sql_path)
      else
        ActiveRecordViews.drop_view model_class.connection, model_class.table_name
      end
      update_timestamp!
    end

    private

    def sql_timestamp
      File.exists?(sql_path) ? File.mtime(sql_path) : nil
    end

    def update_timestamp!
      @cached_sql_timestamp = sql_timestamp
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
activerecord_views-0.0.6 lib/active_record_views/registered_view.rb
activerecord_views-0.0.5 lib/active_record_views/registered_view.rb
activerecord_views-0.0.4 lib/active_record_views/registered_view.rb