Class: MiniSqlMultisiteConnection
- Inherits:
-
MiniSql::ActiveRecordPostgres::Connection
- Object
- MiniSql::ActiveRecordPostgres::Connection
- MiniSqlMultisiteConnection
show all
- Defined in:
- lib/mini_sql_multisite_connection.rb
Defined Under Namespace
Classes: AfterCommitWrapper, CustomBuilder, ParamEncoder
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.instance ⇒ Object
76
77
78
|
# File 'lib/mini_sql_multisite_connection.rb', line 76
def self.instance
new(nil, param_encoder: ParamEncoder.new)
end
|
Instance Method Details
#active_record_connection ⇒ Object
we need a tiny adapter here so we always run against the correct multisite connection
82
83
84
|
# File 'lib/mini_sql_multisite_connection.rb', line 82
def active_record_connection
ActiveRecord::Base.connection
end
|
#after_commit(&blk) ⇒ Object
Allows running arbitrary code after the current transaction has been committed. Works with nested ActiveRecord transaction blocks. Useful for scheduling sidekiq jobs. If not currently in a transaction, will execute immediately
70
71
72
73
74
|
# File 'lib/mini_sql_multisite_connection.rb', line 70
def after_commit(&blk)
return blk.call if !transaction_open?
ActiveRecord::Base.connection.add_transaction_record(AfterCommitWrapper.new(&blk))
end
|
#build(sql) ⇒ Object
100
101
102
|
# File 'lib/mini_sql_multisite_connection.rb', line 100
def build(sql)
CustomBuilder.new(self, sql)
end
|
#prepared(condition = true) ⇒ Object
make for a multisite friendly prepared statement cache
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/mini_sql_multisite_connection.rb', line 87
def prepared(condition = true)
if condition
conn = raw_connection.instance_variable_get(:@mini_sql_prepared_connection)
if !conn
conn = MiniSql::Postgres::PreparedConnection.new(self)
raw_connection.instance_variable_set(:@mini_sql_prepared_connection, conn)
end
conn
else
self
end
end
|
#sql_fragment(query, *args) ⇒ Object
104
105
106
107
108
109
110
|
# File 'lib/mini_sql_multisite_connection.rb', line 104
def sql_fragment(query, *args)
if args.length > 0
param_encoder.encode(query, *args)
else
query
end
end
|
#test_transaction=(transaction) ⇒ Object
58
59
60
|
# File 'lib/mini_sql_multisite_connection.rb', line 58
def test_transaction=(transaction)
@test_transaction = transaction
end
|
#transaction_open? ⇒ Boolean
53
54
55
|
# File 'lib/mini_sql_multisite_connection.rb', line 53
def transaction_open?
ActiveRecord::Base.connection.transaction_open?
end
|