Class: Janko::Merge
- Inherits:
-
Object
- Object
- Janko::Merge
- Includes:
- Agrippa::Delegation, Agrippa::MutableHash
- Defined in:
- lib/janko/merge.rb
Instance Method Summary collapse
- #alter(*list, &block) ⇒ Object
- #columns ⇒ Object
- #connect(connection) ⇒ Object
- #default_state ⇒ Object
- #insert(*list) ⇒ Object
- #key(*list) ⇒ Object
- #push(*args) ⇒ Object
- #returning(returning) ⇒ Object
- #select(*list) ⇒ Object
- #start ⇒ Object
- #stop ⇒ Object
- #update(*list) ⇒ Object
- #use(strategy) ⇒ Object
Instance Method Details
#alter(*list, &block) ⇒ Object
67 68 69 70 71 |
# File 'lib/janko/merge.rb', line 67 def alter(*list, &block) preserve_state_if_started columns.alter(*list, &block) self end |
#columns ⇒ Object
94 95 96 97 98 99 100 |
# File 'lib/janko/merge.rb', line 94 def columns @state[:columns] ||= begin raise("Connect before setting merge parameters.") \ unless connected? default_column_list end end |
#connect(connection) ⇒ Object
26 27 28 29 |
# File 'lib/janko/merge.rb', line 26 def connect(connection) @state[:connection] = Connection.build(connection) self end |
#default_state ⇒ Object
22 23 24 |
# File 'lib/janko/merge.rb', line 22 def default_state { strategy: Janko::BulkMerge, connection: Connection.default } end |
#insert(*list) ⇒ Object
55 56 57 58 59 |
# File 'lib/janko/merge.rb', line 55 def insert(*list) preserve_state_if_started columns.tag("insert", *list) self end |
#key(*list) ⇒ Object
43 44 45 46 47 |
# File 'lib/janko/merge.rb', line 43 def key(*list) preserve_state_if_started columns.tag("key", *list) self end |
#push(*args) ⇒ Object
81 82 83 84 85 |
# File 'lib/janko/merge.rb', line 81 def push(*args) raise("Call #start before #push") unless @state[:started] rollback_on_error { delegate.push(*args) } self end |
#returning(returning) ⇒ Object
36 37 38 39 40 41 |
# File 'lib/janko/merge.rb', line 36 def returning(returning) returning = returning.to_s raise("Merge can return inserted, updated, all, or none.") \ unless %w(inserted updated all none).include?(returning) chain(returning: returning) end |
#select(*list) ⇒ Object
61 62 63 64 65 |
# File 'lib/janko/merge.rb', line 61 def select(*list) preserve_state_if_started columns.tag("select", *list) self end |
#start ⇒ Object
73 74 75 76 77 78 79 |
# File 'lib/janko/merge.rb', line 73 def start @state[:started] = true reset_delegate begin_transaction and lock_table rollback_on_error { delegate.start } self end |
#stop ⇒ Object
87 88 89 90 91 92 |
# File 'lib/janko/merge.rb', line 87 def stop raise("Call #start before #stop") unless @state[:started] rollback_on_error { delegate.stop } @state[:started] = false self end |
#update(*list) ⇒ Object
49 50 51 52 53 |
# File 'lib/janko/merge.rb', line 49 def update(*list) preserve_state_if_started columns.tag("update", *list) self end |
#use(strategy) ⇒ Object
31 32 33 34 |
# File 'lib/janko/merge.rb', line 31 def use(strategy) @state[:strategy] = strategy self end |