Module: Runestone::ActiveRecord::BaseMethods
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/runestone/active_record/base_methods.rb
Instance Method Summary collapse
- #create_runestones ⇒ Object
- #create_runestones! ⇒ Object
- #update_runestones ⇒ Object
- #update_runestones! ⇒ Object
Instance Method Details
#create_runestones ⇒ Object
76 77 78 |
# File 'lib/runestone/active_record/base_methods.rb', line 76 def create_runestones Runestone::IndexingJob.perform_later(self, :create_runestones!) end |
#create_runestones! ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/runestone/active_record/base_methods.rb', line 80 def create_runestones! conn = Runestone::Model.connection self.runestone_settings.each do |index_name, settings| settings.each do |setting| rdata = setting.extract_attributes(self) ts_column_names = %w(record_type record_id name dictionary data vector).map { |name| conn.quote_column_name(name) } ts_values = [ conn.quote(conn.send(:type_map).lookup('varchar').serialize(self.class.base_class.name)), conn.quote(conn.send(:type_map).lookup('uuid').serialize(id)), index_name == :default ? 'NULL' : conn.quote(conn.send(:type_map).lookup('varchar').serialize(index_name.to_s)), conn.quote(conn.send(:type_map).lookup('varchar').serialize(setting.dictionary)), conn.quote(conn.send(:type_map).lookup('jsonb').serialize(rdata)), setting.vectorize(rdata).join(' || ') ] conn.execute(" INSERT INTO \#{Runestone::Model.quoted_table_name} (\#{ts_column_names.join(\",\")})\n VALUES (\#{ts_values.join(',')})\n SQL\n\n Runestone::Corpus.add(*setting.corpus(rdata))\n end\n end\nend\n") |
#update_runestones ⇒ Object
105 106 107 |
# File 'lib/runestone/active_record/base_methods.rb', line 105 def update_runestones Runestone::IndexingJob.preform_later(self, :update_runestones!) end |
#update_runestones! ⇒ Object
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/runestone/active_record/base_methods.rb', line 109 def update_runestones! conn = Runestone::Model.connection self.runestone_settings.each do |index_name, settings| settings.each do |setting| rdata = setting.extract_attributes(self) if conn.execute(" UPDATE \#{Runestone::Model.quoted_table_name}\n SET\n data = \#{conn.quote(conn.send(:type_map).lookup('jsonb').serialize(rdata))},\n vector = \#{setting.vectorize(rdata).join(' || ')}\n WHERE record_type = \#{conn.quote(conn.send(:type_map).lookup('varchar').serialize(self.class.base_class.name))}\n AND record_id = \#{conn.quote(conn.send(:type_map).lookup('integer').serialize(id))}\n AND name \#{index_name == :default ? 'IS NULL' : \"= \" + conn.quote(conn.send(:type_map).lookup('integer').serialize(index_name))}\n AND dictionary = \#{conn.quote(conn.send(:type_map).lookup('integer').serialize(setting.dictionary))}\n SQL\n create_runestones!\n else\n Runestone::Corpus.add(*setting.corpus(rdata))\n end\n\n end\n end\nend\n").cmd_tuples == 0 |