Class: EasyMapper::Adapters::PostgreAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/easy_mapper/adapters/postgre_adapter.rb

Instance Method Summary collapse

Constructor Details

#initialize(host: '127.0.0.1', port: 5432, database:, user:, password:) ⇒ PostgreAdapter

Returns a new instance of PostgreAdapter.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/easy_mapper/adapters/postgre_adapter.rb', line 10

def initialize(
    host: '127.0.0.1',
    port: 5432,
    database:,
    user:,
    password:
)

  @connection_options = {
    host: host,
    port: port,
    dbname: database,
    user: user,
    password: password
  }
end

Instance Method Details

#connectObject



27
28
29
30
31
32
33
34
35
36
# File 'lib/easy_mapper/adapters/postgre_adapter.rb', line 27

def connect
  @connection = PGconn.connect(@connection_options)

  @connection.set_notice_processor do |warning|
    Logger.logger.warn(warning)
  end

  @connection.type_map_for_results =
    PG::BasicTypeMapForResults.new(@connection)
end

#execute(query) ⇒ Object



38
39
40
41
# File 'lib/easy_mapper/adapters/postgre_adapter.rb', line 38

def execute(query)
  Logger.logger.info("Executing query: #{query}")
  Results::PostgreResult.new @connection.exec(query)
end

#next_id(table_name) ⇒ Object



47
48
49
50
51
52
53
54
# File 'lib/easy_mapper/adapters/postgre_adapter.rb', line 47

def next_id(table_name)
  seq_name = "#{table_name}_id_seq"

  execute(sql_builder.sequence(seq_name).create_unless_exists)

  query = sql_builder.sequence(seq_name).next_val
  execute(query).single_value
end

#sql_builderObject



43
44
45
# File 'lib/easy_mapper/adapters/postgre_adapter.rb', line 43

def sql_builder
  Sqlbuilder::Builders::PostgresBuilder.new
end