mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-26 10:26:22 +00:00
feat: obtener valores desde la base de datos #7537
This commit is contained in:
parent
ecf44311ea
commit
84419c05f8
3 changed files with 17 additions and 19 deletions
|
@ -34,6 +34,20 @@ class IndexedPost < ApplicationRecord
|
|||
scope :in_category, ->(category) { where("front_matter->'categories' ? :category", category: category.to_s) }
|
||||
scope :by_usuarie, ->(usuarie) { where("front_matter->'usuaries' @> :usuarie::jsonb", usuarie: usuarie.to_s) }
|
||||
|
||||
# Trae todos los valores únicos para un atributo
|
||||
#
|
||||
# @param :attribute [String,Symbol]
|
||||
# @return [Array]
|
||||
scope :everything_of, ->(attribute) do
|
||||
where('front_matter ? :attribute', attribute: attribute)
|
||||
.pluck(
|
||||
Arel.sql(
|
||||
ActiveRecord::Base::sanitize_sql(['front_matter -> :attribute', attribute: attribute])
|
||||
)
|
||||
)
|
||||
.flatten.uniq
|
||||
end
|
||||
|
||||
belongs_to :site
|
||||
|
||||
# La ubicación del Post en el disco
|
||||
|
|
|
@ -74,8 +74,10 @@ MetadataTemplate = Struct.new(:site, :document, :name, :label, :type,
|
|||
|
||||
# Valores posibles, busca todos los valores actuales en otros
|
||||
# artículos del mismo sitio
|
||||
#
|
||||
# @return [Array]
|
||||
def values
|
||||
site.everything_of(name, lang: lang)
|
||||
site.indexed_posts.everything_of(name)
|
||||
end
|
||||
|
||||
# Valor actual o por defecto. Al memoizarlo podemos modificarlo
|
||||
|
|
|
@ -317,24 +317,6 @@ class Site < ApplicationRecord
|
|||
end
|
||||
end
|
||||
|
||||
# Trae todos los valores disponibles para un campo
|
||||
#
|
||||
# TODO: Traer recursivamente, si el campo contiene Hash
|
||||
#
|
||||
# TODO: Mover a PostRelation#pluck
|
||||
#
|
||||
# @param attr [Symbol|String] El atributo a buscar
|
||||
# @return Array
|
||||
def everything_of(attr, lang: nil)
|
||||
Rails.cache.fetch("#{cache_key_with_version}/everything_of/#{lang}/#{attr}", expires_in: 1.hour) do
|
||||
attr = attr.to_sym
|
||||
|
||||
posts(lang: lang).flat_map do |p|
|
||||
p[attr].value if p.attribute? attr
|
||||
end.uniq.compact
|
||||
end
|
||||
end
|
||||
|
||||
# Poner en la cola de compilación
|
||||
def enqueue!
|
||||
update(status: 'enqueued') if waiting?
|
||||
|
|
Loading…
Reference in a new issue