Module: PgPipeline::SessionOps

Defined in:
lib/pg_pipeline/session.rb

Class Method Summary collapse

Class Method Details

.close!(session) ⇒ Object



65
66
67
68
69
# File 'lib/pg_pipeline/session.rb', line 65

def close!(session)
  session.__send__(:active=, false)
  session.__send__(:conn=, nil)
  nil
end

.connection(session) ⇒ Object



71
72
73
# File 'lib/pg_pipeline/session.rb', line 71

def connection(session)
  session.__send__(:conn)
end

.ensure_active!(session) ⇒ Object

Raises:



29
30
31
32
33
34
35
# File 'lib/pg_pipeline/session.rb', line 29

def ensure_active!(session)
  conn = connection(session)
  raise Error, "session handle is no longer active" unless session.active? && conn
  return if Fiber.current.equal?(session.owner_fiber)

  raise Error, "session handle is fiber-local and cannot be used from another fiber"
end

.exec(session, sql, params = nil) ⇒ Object



42
43
44
45
46
47
48
49
# File 'lib/pg_pipeline/session.rb', line 42

def exec(session, sql, params = nil)
  ensure_active!(session)
  if params.nil?
    connection(session).exec(sql)
  else
    connection(session).exec_params(sql, params)
  end
end

.exec_prepared(session, name, params) ⇒ Object



60
61
62
63
# File 'lib/pg_pipeline/session.rb', line 60

def exec_prepared(session, name, params)
  ensure_active!(session)
  connection(session).exec_prepared(name, params)
end

.prepare(session, name, sql, param_types) ⇒ Object



51
52
53
54
55
56
57
58
# File 'lib/pg_pipeline/session.rb', line 51

def prepare(session, name, sql, param_types)
  ensure_active!(session)
  if param_types
    connection(session).prepare(name, sql, param_types)
  else
    connection(session).prepare(name, sql)
  end
end

.query(session, sql, params) ⇒ Object



37
38
39
40
# File 'lib/pg_pipeline/session.rb', line 37

def query(session, sql, params)
  ensure_active!(session)
  connection(session).exec_params(sql, params)
end