Class: EventSource::Postgres::Get::Last::SelectStatement

Inherits:
Object
  • Object
show all
Includes:
Log::Dependency
Defined in:
lib/event_source/postgres/get/last/select_statement.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.build(stream_name) ⇒ Object



10
11
12
# File 'lib/event_source/postgres/get/last/select_statement.rb', line 10

def self.build(stream_name)
  new(stream_name)
end

Instance Method Details

#sqlObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/event_source/postgres/get/last/select_statement.rb', line 14

def sql
  logger.trace(tag: :sql) { "Composing select statement (Stream: #{stream_name})" }

  statement = <<-SQL
    SELECT
      id::varchar,
      stream_name::varchar,
      position::int,
      type::varchar,
      global_position::bigint,
      data::varchar,
      metadata::varchar,
      time::timestamp
    FROM
      events
    WHERE
      stream_name = '#{stream_name}'
    ORDER BY
      position DESC
    LIMIT
      1
    ;
  SQL

  logger.debug(tag: :sql) { "Composed select statement (Stream: #{stream_name})" }
  logger.debug(tags: [:data, :sql]) { "Statement: #{statement}" }

  statement
end