class Sequel::Postgres::Adapter
Midori
Extension of sequel postgres through meta programming
Public Instance Methods
execute_query(sql, args)
click to toggle source
# File lib/midori-contrib/sequel/postgres.rb, line 16 def execute_query(sql, args) if Fiber.current == EventLoop.root_fiber # Block usage return execute_query_block(sql, args) else # Nonblock usage return execute_query_nonblock(sql, args) end end
Also aliased as: execute_query_block
execute_query_block(sql, args)
Call a sql request asynchronously @param [String] sql sql request @param [Array] args args to send @return [Array] sql query result
Alias for: execute_query
execute_query_nonblock(sql, args)
click to toggle source
# File lib/midori-contrib/sequel/postgres.rb, line 26 def execute_query_nonblock(sql, args) @db.log_connection_yield(sql, self, args) do if POSTGRES_SOCKETS[self].nil? POSTGRES_SOCKETS[self] = IO::open(socket) end socket_object = POSTGRES_SOCKETS[self] await(Promise.new do |resolve| count = 0 EventLoop.register(socket_object, :rw) do begin if (count == 0) # Writable unless is_busy send_query(sql) count += 1 end else # Readable EventLoop.deregister(socket_object) resolve.call(get_result) end # For extra errors # :nocov: rescue => e resolve.call(PromiseException.new(e)) # :nocov: end end end) end end