Module: Sivel2Gen::Concerns::Models::Conscaso::ClassMethods
- Defined in:
- lib/sivel2_gen/concerns/models/conscaso.rb
Instance Method Summary collapse
- #consulta_base ⇒ Object
- #consulta_base_sivel2_gen ⇒ Object
-
#interpreta_ordenar_por(campo) ⇒ Object
def refresca_conscaso.
-
#refresca_conscaso ⇒ Object
Retorna ” sii puede refrescar o crear sivel2_gen_conscaso en otro caso retorna cadena con problema o razón por la que no refresca.
Instance Method Details
#consulta_base ⇒ Object
302 303 304 |
# File 'lib/sivel2_gen/concerns/models/conscaso.rb', line 302 def consulta_base consulta_base_sivel2_gen end |
#consulta_base_sivel2_gen ⇒ Object
265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 |
# File 'lib/sivel2_gen/concerns/models/conscaso.rb', line 265 def consulta_base_sivel2_gen r = "SELECT caso.id as caso_id, caso.fecha, caso.memo, ARRAY_TO_STRING(ARRAY(SELECT COALESCE(departamento.nombre, '') || ' / ' || COALESCE(municipio.nombre, '') FROM public.msip_ubicacion AS ubicacion LEFT JOIN public.msip_departamento AS departamento ON (ubicacion.departamento_id = departamento.id) LEFT JOIN public.msip_municipio AS municipio ON (ubicacion.municipio_id=municipio.id) WHERE ubicacion.caso_id=caso.id), ', ') AS ubicaciones, ARRAY_TO_STRING(ARRAY(SELECT nombres || ' ' || apellidos FROM public.msip_persona AS persona, public.sivel2_gen_victima AS victima WHERE persona.id=victima.persona_id AND victima.caso_id=caso.id), ', ') AS victimas, ARRAY_TO_STRING(ARRAY(SELECT nombre FROM public.sivel2_gen_presponsable AS presponsable, public.sivel2_gen_caso_presponsable AS caso_presponsable WHERE presponsable.id=caso_presponsable.presponsable_id AND caso_presponsable.caso_id=caso.id), ', ') AS presponsables, ARRAY_TO_STRING(ARRAY(SELECT supracategoria.tviolencia_id || ':' || categoria.supracategoria_id || ':' || categoria.id || ' ' || categoria.nombre FROM public.sivel2_gen_categoria AS categoria, public.sivel2_gen_supracategoria AS supracategoria, public.sivel2_gen_acto WHERE categoria.id=sivel2_gen_acto.categoria_id AND supracategoria.id=categoria.supracategoria_id AND sivel2_gen_acto.caso_id=caso.id), ', ') AS tipificacion FROM public.sivel2_gen_caso AS caso" #Rails.logger.info r return r end |
#interpreta_ordenar_por(campo) ⇒ Object
def refresca_conscaso
343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 |
# File 'lib/sivel2_gen/concerns/models/conscaso.rb', line 343 def interpreta_ordenar_por(campo) critord = "" case campo.to_s when /^fechadesc/ critord = "sivel2_gen_conscaso.fecha desc" when /^fecha/ critord = "sivel2_gen_conscaso.fecha asc" when /^ubicaciondesc/ critord = "sivel2_gen_conscaso.ubicaciones desc" when /^ubicacion/ critord = "sivel2_gen_conscaso.ubicaciones asc" when /^codigodesc/ critord = "sivel2_gen_conscaso.caso_id desc" when /^codigo/ critord = "sivel2_gen_conscaso.caso_id asc" else raise(ArgumentError, "Ordenamiento invalido: #{ campo.inspect }") end critord += ", sivel2_gen_conscaso.caso_id" return critord end |
#refresca_conscaso ⇒ Object
Retorna ” sii puede refrescar o crear sivel2_gen_conscaso en otro caso retorna cadena con problema o razón por la que no refresca
309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 |
# File 'lib/sivel2_gen/concerns/models/conscaso.rb', line 309 def refresca_conscaso if ARGV.include?("db:migrate") return 'Ejecutando migración' end if !ActiveRecord::Base.connection.data_source_exists? 'sivel2_gen_conscaso' ActiveRecord::Base.connection.execute("CREATE OR REPLACE VIEW sivel2_gen_conscaso1 AS #{consulta_base};") ActiveRecord::Base.connection.execute( "CREATE MATERIALIZED VIEW sivel2_gen_conscaso AS SELECT caso_id, fecha, memo, ubicaciones, victimas, presponsables, tipificacion, now() AS ultimo_refresco, to_tsvector('spanish', unaccent(caso_id || ' ' || replace(cast(fecha AS varchar), '-', ' ') || ' ' || memo || ' ' || ubicaciones || ' ' || victimas || ' ' || presponsables || ' ' || tipificacion)) as q FROM public.sivel2_gen_conscaso1"); ActiveRecord::Base.connection.execute( "CREATE INDEX busca_sivel2_gen_conscaso ON sivel2_gen_conscaso USING gin(q);" ) else p = Msip::ProcesosHelper.procesos_OpenBSD r = p.select {|u| u[:command] =~ /REFRESH/ } if r.count > 0 return "Ejecución de otro(s) REFRESH en curso (#{r.map {|x| x[:command]}})" else ActiveRecord::Base.connection.execute( 'REFRESH MATERIALIZED VIEW sivel2_gen_conscaso' ) end end return '' end |