Module: ActiveRecordUpsert::Arel::Visitors::ToSqlExtensions
- Defined in:
- lib/active_record_upsert/arel/visitors/to_sql.rb
Instance Method Summary collapse
- #table_exists?(name) ⇒ Boolean
- #visit_Arel_Nodes_DoNothing(_o, collector) ⇒ Object
- #visit_Arel_Nodes_DoUpdateSet(o, collector) ⇒ Object
- #visit_Arel_Nodes_ExcludedColumn(o, collector) ⇒ Object
- #visit_Arel_Nodes_InsertStatement(o, collector) ⇒ Object
- #visit_Arel_Nodes_OnConflict(o, collector) ⇒ Object
Instance Method Details
#table_exists?(name) ⇒ Boolean
47 48 49 |
# File 'lib/active_record_upsert/arel/visitors/to_sql.rb', line 47 def table_exists?(name) schema_cache.data_source_exists?(name) end |
#visit_Arel_Nodes_DoNothing(_o, collector) ⇒ Object
21 22 23 |
# File 'lib/active_record_upsert/arel/visitors/to_sql.rb', line 21 def visit_Arel_Nodes_DoNothing _o, collector collector << "DO NOTHING" end |
#visit_Arel_Nodes_DoUpdateSet(o, collector) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/active_record_upsert/arel/visitors/to_sql.rb', line 25 def visit_Arel_Nodes_DoUpdateSet o, collector wheres = o.wheres collector << "DO UPDATE " unless o.values.empty? collector << " SET " collector = inject_join o.values, collector, ", " end unless wheres.empty? collector << " WHERE " collector = inject_join wheres, collector, " AND " end collector end |
#visit_Arel_Nodes_ExcludedColumn(o, collector) ⇒ Object
42 43 44 45 |
# File 'lib/active_record_upsert/arel/visitors/to_sql.rb', line 42 def visit_Arel_Nodes_ExcludedColumn o, collector collector << "EXCLUDED.#{quote_column_name o.column}" collector end |
#visit_Arel_Nodes_InsertStatement(o, collector) ⇒ Object
5 6 7 8 9 10 11 12 |
# File 'lib/active_record_upsert/arel/visitors/to_sql.rb', line 5 def visit_Arel_Nodes_InsertStatement(o, collector) collector = super if o.on_conflict maybe_visit o.on_conflict, collector else collector end end |
#visit_Arel_Nodes_OnConflict(o, collector) ⇒ Object
14 15 16 17 18 19 |
# File 'lib/active_record_upsert/arel/visitors/to_sql.rb', line 14 def visit_Arel_Nodes_OnConflict o, collector collector << "ON CONFLICT " collector << " (#{quote_column_name o.target.name}) ".gsub(',', '","') collector << " WHERE #{o.where}" if o.where maybe_visit o.action, collector end |