Class: TursoLibsql::LocalConnection
- Inherits:
-
Object
- Object
- TursoLibsql::LocalConnection
- Defined in:
- lib/turso_libsql/database.rb
Overview
ローカル SQLite 接続(Embedded Replica 用)sqlite3 gem を使用sqlite3 gem 2.x は fork 後に接続を自動クローズする(ForkSafety)。AR の discard! が @raw_connection を nil にするので、子プロセスではreconnect が走って新しい接続が確立される。
Instance Attribute Summary collapse
-
#last_insert_rowid ⇒ Object
readonly
Returns the value of attribute last_insert_rowid.
Instance Method Summary collapse
- #begin_transaction ⇒ Object
- #commit_transaction ⇒ Object
- #execute(sql) ⇒ Object
- #execute_with_params(sql, params) ⇒ Object
-
#initialize(path, remote_url, token, mode) ⇒ LocalConnection
constructor
A new instance of LocalConnection.
- #query(sql) ⇒ Object
- #rollback_transaction ⇒ Object
Constructor Details
#initialize(path, remote_url, token, mode) ⇒ LocalConnection
Returns a new instance of LocalConnection.
113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/turso_libsql/database.rb', line 113 def initialize(path, remote_url, token, mode) require 'sqlite3' @path = path @remote_url = remote_url @token = token @mode = mode @db = SQLite3::Database.new(path) @db.results_as_hash = true @last_insert_rowid = 0 @last_affected_rows = 0 end |
Instance Attribute Details
#last_insert_rowid ⇒ Object (readonly)
Returns the value of attribute last_insert_rowid.
163 164 165 |
# File 'lib/turso_libsql/database.rb', line 163 def last_insert_rowid @last_insert_rowid end |
Instance Method Details
#begin_transaction ⇒ Object
143 144 145 |
# File 'lib/turso_libsql/database.rb', line 143 def begin_transaction @db.execute('BEGIN') end |
#commit_transaction ⇒ Object
147 148 149 150 151 152 153 |
# File 'lib/turso_libsql/database.rb', line 147 def commit_transaction @db.execute('COMMIT') rescue SQLite3::Exception => e # fork 後に接続が強制クローズされた場合など、トランザクションが # 既に存在しない状態での COMMIT は無視する raise unless e..include?('no transaction is active') end |
#execute(sql) ⇒ Object
125 126 127 128 129 130 |
# File 'lib/turso_libsql/database.rb', line 125 def execute(sql) @db.execute(sql) @last_affected_rows = @db.changes @last_insert_rowid = @db.last_insert_row_id @last_affected_rows end |
#execute_with_params(sql, params) ⇒ Object
136 137 138 139 140 141 |
# File 'lib/turso_libsql/database.rb', line 136 def execute_with_params(sql, params) @db.execute(sql, params) @last_affected_rows = @db.changes @last_insert_rowid = @db.last_insert_row_id @last_affected_rows end |
#query(sql) ⇒ Object
132 133 134 |
# File 'lib/turso_libsql/database.rb', line 132 def query(sql) @db.execute(sql) end |
#rollback_transaction ⇒ Object
155 156 157 158 159 160 161 |
# File 'lib/turso_libsql/database.rb', line 155 def rollback_transaction @db.execute('ROLLBACK') rescue SQLite3::Exception => e # fork 後に接続が強制クローズされた場合など、トランザクションが # 既に存在しない状態での ROLLBACK は無視する raise unless e..include?('no transaction is active') end |