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