2015-05-05 00:50:13 -05:00
|
|
|
class StylesheetCache < ActiveRecord::Base
|
|
|
|
self.table_name = 'stylesheet_cache'
|
|
|
|
|
2015-05-21 20:21:16 -05:00
|
|
|
MAX_TO_KEEP = 50
|
2015-05-05 00:50:13 -05:00
|
|
|
|
2017-07-27 20:20:09 -05:00
|
|
|
def self.add(target, digest, content, source_map)
|
2015-05-05 16:12:38 -05:00
|
|
|
|
|
|
|
return false if where(target: target, digest: digest).exists?
|
|
|
|
|
2017-04-12 09:52:52 -05:00
|
|
|
success = create(target: target, digest: digest, content: content, source_map: source_map)
|
2015-05-05 00:50:13 -05:00
|
|
|
|
|
|
|
count = StylesheetCache.count
|
|
|
|
if count > MAX_TO_KEEP
|
|
|
|
|
2015-05-05 16:33:32 -05:00
|
|
|
remove_lower = StylesheetCache
|
2017-07-27 20:20:09 -05:00
|
|
|
.where(target: target)
|
|
|
|
.limit(MAX_TO_KEEP)
|
|
|
|
.order('id desc')
|
|
|
|
.pluck(:id)
|
|
|
|
.last
|
2015-05-05 00:50:13 -05:00
|
|
|
|
|
|
|
exec_sql("DELETE FROM stylesheet_cache where id < :id", id: remove_lower)
|
|
|
|
end
|
|
|
|
|
|
|
|
success
|
|
|
|
rescue ActiveRecord::RecordNotUnique
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
2015-09-17 19:41:10 -05:00
|
|
|
|
|
|
|
# == Schema Information
|
|
|
|
#
|
|
|
|
# Table name: stylesheet_cache
|
|
|
|
#
|
|
|
|
# id :integer not null, primary key
|
2016-02-22 17:33:53 -06:00
|
|
|
# target :string not null
|
|
|
|
# digest :string not null
|
2015-09-17 19:41:10 -05:00
|
|
|
# content :text not null
|
2017-08-16 09:38:11 -05:00
|
|
|
# created_at :datetime not null
|
|
|
|
# updated_at :datetime not null
|
2017-04-12 09:52:52 -05:00
|
|
|
# theme_id :integer default(-1), not null
|
|
|
|
# source_map :text
|
2015-09-17 19:41:10 -05:00
|
|
|
#
|
|
|
|
# Indexes
|
|
|
|
#
|
|
|
|
# index_stylesheet_cache_on_target_and_digest (target,digest) UNIQUE
|
|
|
|
#
|