Guest User

Untitled

a guest
May 14th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rails 2.91 KB | None | 0 0
  1. class User < ActiveRecord::Base
  2.   after_save do
  3.     self.class.limpar_cached
  4.   end
  5.  
  6.   class << self
  7.     def cached_quantidade
  8.       Rails.cache.fetch([:project, :count]) { count }
  9.     end
  10.     def cached_quantidade_versionadas
  11.       Rails.cache.fetch([:project, :count, :versioned]) { versionadas.count }
  12.     end
  13.    
  14.     def cached_group_tipo
  15.       Rails.cache.fetch([:project, :count, :versioned, :by_tipo]) do
  16.         r={}
  17.         ProjectVersion::TIPOS_HASH.map { |tipo, nome| r[tipo] = ProjectVersion.where(:tipo=>tipo).group(:project_id).size.size }
  18.         r
  19.       end
  20.     end
  21.    
  22.     def cached_group_revisao_texto
  23.       Rails.cache.fetch([:project, :count, :versioned, :by_texto]) { versionadas.select('status_revisao_texto, count(*)').group(:status_revisao_texto).count }
  24.     end
  25.    
  26.     def cached_group_revisao_audio
  27.       Rails.cache.fetch([:project, :count, :versioned, :by_audio]) { versionadas.select('status_revisao_audio, count(*)').group(:status_revisao_audio).count }
  28.     end
  29.    
  30.     def cached_group_revisao_final
  31.       Rails.cache.fetch([:project, :count, :versioned, :by_final]) { versionadas.select('status_revisao_final, count(*)').group(:status_revisao_final).count }
  32.     end
  33.    
  34.     def cached_group_revisao_metodo
  35.       Rails.cache.fetch([:project, :count, :versioned, :by_metodo]) { versionadas.select('status_revisao_metodo, count(*)').group(:status_revisao_metodo).count }
  36.     end
  37.    
  38.     def cached_group_degree
  39.       Rails.cache.fetch([:project, :count, :versioned, :by_degree]) { versionadas.select('degree_id, count(*)').group(:degree_id).count }
  40.     end
  41.    
  42.     def cached_group_subject
  43.       Rails.cache.fetch([:project, :count, :versioned, :by_subject]) { versionadas.select('subject_id, count(*)').group(:subject_id).count }
  44.     end
  45.    
  46.     def cached_group_numero
  47.       Rails.cache.fetch([:project, :count, :versioned, :by_numero]) { versionadas.select('numero, count(*)').group(:numero).count }
  48.     end
  49.    
  50.     def cached_group_producao
  51.       Rails.cache.fetch([:project, :count, :versioned, :by_producao]) { versionadas.select('status_producao, count(*)').group(:status_producao).count }
  52.     end
  53.    
  54.     def limpar_cached
  55.       Rails.cache.delete([:project, :count])
  56.       Rails.cache.delete([:project, :count, :versioned])
  57.       Rails.cache.delete([:project, :count, :versioned, :by_tipo])
  58.       Rails.cache.delete([:project, :count, :versioned, :by_texto])
  59.       Rails.cache.delete([:project, :count, :versioned, :by_audio])
  60.       Rails.cache.delete([:project, :count, :versioned, :by_final])
  61.       Rails.cache.delete([:project, :count, :versioned, :by_metodo])
  62.       Rails.cache.delete([:project, :count, :versioned, :by_degree])
  63.       Rails.cache.delete([:project, :count, :versioned, :by_subject])
  64.       Rails.cache.delete([:project, :count, :versioned, :by_numero])
  65.       Rails.cache.delete([:project, :count, :versioned, :by_producao])
  66.     end
  67.   end
  68. end
Add Comment
Please, Sign In to add comment