| Class | Sequel::Amalgalite::Database |
| In: |
lib/sequel/adapters/amalgalite.rb
|
| Parent: | Sequel::Database |
Connect to the database. Since SQLite is a file based database, the only options available are :database (to specify the database name), and :timeout, to specify how long to wait for the database to be available if it is locked, given in milliseconds (default is 5000).
# File lib/sequel/adapters/amalgalite.rb, line 66
66: def connect(server)
67: opts = server_opts(server)
68: opts[:database] = ':memory:' if blank_object?(opts[:database])
69: db = ::Amalgalite::Database.new(opts[:database])
70: db.busy_handler(::Amalgalite::BusyTimeout.new(opts.fetch(:timeout, 5000)/50, 50))
71: db.type_map = SequelTypeMap.new
72: db
73: end
Amalgalite is just the SQLite database without a separate SQLite installation.
# File lib/sequel/adapters/amalgalite.rb, line 76
76: def database_type
77: :sqlite
78: end
Return instance of Sequel::Amalgalite::Dataset with the given options.
# File lib/sequel/adapters/amalgalite.rb, line 81
81: def dataset(opts = nil)
82: Amalgalite::Dataset.new(self, opts)
83: end
Run the given SQL with the given arguments and yield each row.
# File lib/sequel/adapters/amalgalite.rb, line 102
102: def execute(sql, opts={})
103: retried = false
104: _execute(sql, opts) do |conn|
105: conn.prepare(sql) do |stmt|
106: begin
107: stmt.result_meta
108: rescue NoMethodError
109: conn.reload_schema!
110: stmt.result_meta
111: end
112: yield stmt
113: end
114: end
115: end
Use the native driver transaction method if there isn‘t already a transaction in progress on the connection, always yielding a connection inside a transaction transaction.
# File lib/sequel/adapters/amalgalite.rb, line 125
125: def transaction(opts={})
126: synchronize(opts[:server]) do |conn|
127: return yield(conn) if conn.in_transaction?
128: begin
129: result = nil
130: log_info('Transaction.begin')
131: conn.transaction{result = yield(conn)}
132: result
133: rescue ::Exception => e
134: log_info('Transaction.rollback')
135: transaction_error(e, ::Amalgalite::Error, ::Amalgalite::SQLite3::Error)
136: ensure
137: log_info('Transaction.commit') unless e
138: end
139: end
140: end