Sha256: 2be86f950f4d2fbfac84a3cd2b5bdd6b8862f389f826085a62af890a32a6c9b1
Contents?: true
Size: 1.42 KB
Versions: 1
Compression:
Stored size: 1.42 KB
Contents
module ActiveRecordViews class ChecksumCache def initialize(connection) @connection = connection init_state_table! end def init_state_table! table_exists = @connection.table_exists?('active_record_views') if table_exists && !@connection.column_exists?('active_record_views', 'class_name') @connection.execute 'DROP TABLE active_record_views;' table_exists = false end unless table_exists @connection.execute 'CREATE TABLE active_record_views(name text PRIMARY KEY, class_name text NOT NULL UNIQUE, checksum text NOT NULL);' end end def get(name) @connection.select_one("SELECT class_name, checksum FROM active_record_views WHERE name = #{@connection.quote name}").try(:symbolize_keys) end def set(name, data) if data data.assert_valid_keys :class_name, :checksum if @connection.update("UPDATE active_record_views SET class_name = #{@connection.quote data[:class_name]}, checksum = #{@connection.quote data[:checksum]} WHERE name = #{@connection.quote name}") == 0 @connection.insert "INSERT INTO active_record_views (name, class_name, checksum) VALUES (#{@connection.quote name}, #{@connection.quote data[:class_name]}, #{@connection.quote data[:checksum]})" end else @connection.delete "DELETE FROM active_record_views WHERE name = #{@connection.quote name}" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
activerecord_views-0.0.4 | lib/active_record_views/checksum_cache.rb |