class PGJsonBuilder
Attributes
_alias[RW]
attrs[RW]
relation[RW]
Public Class Methods
new(relation, opts={})
click to toggle source
# File lib/pg_flash_json/pg_json_builder.rb, line 5 def initialize(relation, opts={}) @relation = relation raise ArgumentError unless @relation.is_a?(ActiveRecord::Relation) || @relation.is_a?(ActiveRecord::AssociationRelation) @_alias = SqlAlias.new.sql_alias @attrs = opts.fetch(:attrs, @relation.column_names) SqlAlias.clear self end
Public Instance Methods
attr_pairs_string()
click to toggle source
# File lib/pg_flash_json/pg_json_builder.rb, line 14 def attr_pairs_string aps = "" @attrs.each do |a| a = a.to_s value = "#{@_alias}.#{a}" aps << "'#{a}', #{value}," end aps[0..-2] end
build_json_object_query(from_sub=false, relation_aps=attr_pairs_string)
click to toggle source
# File lib/pg_flash_json/pg_json_builder.rb, line 28 def build_json_object_query(from_sub=false, relation_aps=attr_pairs_string) first_char = from_sub ? "(" : "" "#{first_char}SELECT json_agg( json_build_object(#{relation_aps}))" end
json()
click to toggle source
# File lib/pg_flash_json/pg_json_builder.rb, line 37 def json @relation.connection.execute(to_sql).first["json"] end
query_end()
click to toggle source
# File lib/pg_flash_json/pg_json_builder.rb, line 33 def query_end " as json FROM(#{@relation.to_sql})#{@_alias}" end
to_sql()
click to toggle source
# File lib/pg_flash_json/pg_json_builder.rb, line 24 def to_sql build_json_object_query + query_end end