evt-event_source-postgres 0.12.1.1 → 0.13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4b46187f05253e8212ff186ad05a8abbc3dca713
4
- data.tar.gz: d2f17eddaf8845b2480b026bb7f10fe28c4dda7d
3
+ metadata.gz: bcc6eb15d8ed107da6ccd448e0be92c6f93d1cc7
4
+ data.tar.gz: bf794d6b3d1ffe7c8f514fec02d38e7cca63645d
5
5
  SHA512:
6
- metadata.gz: f78fb4d3182f54385e4a9356d3c2f3d235c16f45f843fc471761c20a6367cbd0d79c7af0cbe5231af4b38649422b9e184fe74abe2eddf112798bdc961b357c54
7
- data.tar.gz: 5b58dcaf4cde0d8b5831cd0c0d64567c9572b05e02f7bb43af24f5d40075463075861f861a984e466cf79349671e2eb34d2bc4359ba39a07bccd2fa53c2a6d21
6
+ metadata.gz: 22637fcf20e69a19a7b933adec20b0ffc6626abd1319507bbf68f70ba125553beed71ce1f295798e8f0aa1ef22eaff42ac4dd53173a6a54375be08880421c069
7
+ data.tar.gz: 215c302408bab981a768fec5a3baf8511e3fbec22346dfbf7bcab5be31b7acd0672c322d7651d17bff1357a269d03b57c7c091b247014cced6b71282719b8242
@@ -1,21 +1,21 @@
1
1
  module EventSource
2
2
  module Postgres
3
3
  class Get
4
- include Log::Dependency
4
+ include EventSource::Get
5
5
 
6
- initializer :batch_size, :precedence
6
+ initializer :batch_size
7
7
 
8
8
  dependency :session, Session
9
9
 
10
- def self.build(batch_size: nil, precedence: nil, session: nil)
11
- new(batch_size, precedence).tap do |instance|
10
+ def self.build(batch_size: nil, session: nil)
11
+ new(batch_size).tap do |instance|
12
12
  instance.configure(session: session)
13
13
  end
14
14
  end
15
15
 
16
- def self.configure(receiver, attr_name: nil, position: nil, batch_size: nil, precedence: nil, session: nil)
16
+ def self.configure(receiver, attr_name: nil, position: nil, batch_size: nil, session: nil)
17
17
  attr_name ||= :get
18
- instance = build(batch_size: batch_size, precedence: precedence, session: session)
18
+ instance = build(batch_size: batch_size, session: session)
19
19
  receiver.public_send "#{attr_name}=", instance
20
20
  end
21
21
 
@@ -23,32 +23,32 @@ module EventSource
23
23
  Session.configure self, session: session
24
24
  end
25
25
 
26
- def self.call(stream_name, position: nil, batch_size: nil, precedence: nil, session: nil)
27
- instance = build(batch_size: batch_size, precedence: precedence, session: session)
26
+ def self.call(stream_name, position: nil, batch_size: nil, session: nil)
27
+ instance = build(batch_size: batch_size, session: session)
28
28
  instance.(stream_name, position: position)
29
29
  end
30
30
 
31
31
  def call(stream_name, position: nil)
32
- logger.trace { "Getting event data (Position: #{position.inspect}, Stream Name: #{stream_name}, Batch Size: #{batch_size.inspect}, Precedence: #{precedence.inspect})" }
32
+ logger.trace { "Getting event data (Position: #{position.inspect}, Stream Name: #{stream_name}, Batch Size: #{batch_size.inspect})" }
33
33
 
34
34
  records = get_records(stream_name, position)
35
35
 
36
36
  events = convert(records)
37
37
 
38
- logger.info { "Finished getting event data (Count: #{events.length}, Position: #{position.inspect}, Stream Name: #{stream_name}, Batch Size: #{batch_size.inspect}, Precedence: #{precedence.inspect})" }
38
+ logger.info { "Finished getting event data (Count: #{events.length}, Position: #{position.inspect}, Stream Name: #{stream_name}, Batch Size: #{batch_size.inspect})" }
39
39
  logger.info(tags: [:data, :event_data]) { events.pretty_inspect }
40
40
 
41
41
  events
42
42
  end
43
43
 
44
44
  def get_records(stream_name, position)
45
- logger.trace { "Getting records (Stream: #{stream_name}, Position: #{position.inspect}, Batch Size: #{batch_size.inspect}, Precedence: #{precedence.inspect})" }
45
+ logger.trace { "Getting records (Stream: #{stream_name}, Position: #{position.inspect}, Batch Size: #{batch_size.inspect})" }
46
46
 
47
- select_statement = SelectStatement.build(stream_name, offset: position, batch_size: batch_size, precedence: precedence)
47
+ select_statement = SelectStatement.build(stream_name, position: position, batch_size: batch_size)
48
48
 
49
49
  records = session.execute(select_statement.sql)
50
50
 
51
- logger.debug { "Finished getting records (Count: #{records.ntuples}, Stream: #{stream_name}, Position: #{position.inspect}, Batch Size: #{batch_size.inspect}, Precedence: #{precedence.inspect})" }
51
+ logger.debug { "Finished getting records (Count: #{records.ntuples}, Stream: #{stream_name}, Position: #{position.inspect}, Batch Size: #{batch_size.inspect})" }
52
52
 
53
53
  records
54
54
  end
@@ -4,20 +4,16 @@ module EventSource
4
4
  class SelectStatement
5
5
  include Log::Dependency
6
6
 
7
- initializer :stream, w(:offset), w(:batch_size), w(:precedence)
7
+ initializer :stream, w(:position), w(:batch_size)
8
8
 
9
- def offset
10
- @offset ||= Defaults.offset
9
+ def position
10
+ @position ||= Defaults.position
11
11
  end
12
12
 
13
13
  def batch_size
14
14
  @batch_size ||= Defaults.batch_size
15
15
  end
16
16
 
17
- def precedence
18
- @precedence ||= Defaults.precedence
19
- end
20
-
21
17
  def stream_name
22
18
  stream.name
23
19
  end
@@ -26,13 +22,13 @@ module EventSource
26
22
  stream.type
27
23
  end
28
24
 
29
- def self.build(stream_name, offset: nil, batch_size: nil, precedence: nil)
25
+ def self.build(stream_name, position: nil, batch_size: nil)
30
26
  stream = Stream.new(stream_name)
31
- new(stream, offset, batch_size, precedence)
27
+ new(stream, position, batch_size)
32
28
  end
33
29
 
34
30
  def sql
35
- logger.trace(tag: :sql) { "Composing select statement (Stream: #{stream_name}, Category: #{stream.category?}, Type: #{stream_type}, Position: #{offset}, Batch Size: #{batch_size}, Precedence: #{precedence})" }
31
+ logger.trace(tag: :sql) { "Composing select statement (Stream: #{stream_name}, Category: #{stream.category?}, Type: #{stream_type}, Position: #{position}, Batch Size: #{batch_size})" }
36
32
 
37
33
  statement = <<-SQL
38
34
  SELECT
@@ -47,17 +43,16 @@ module EventSource
47
43
  FROM
48
44
  events
49
45
  WHERE
50
- #{where_clause_field} = '#{stream_name}'
46
+ #{where_clause_field} = '#{stream_name}' AND
47
+ #{position_field} >= #{position}
51
48
  ORDER BY
52
- global_position #{precedence.to_s.upcase}
49
+ #{position_field} ASC
53
50
  LIMIT
54
51
  #{batch_size}
55
- OFFSET
56
- #{offset}
57
52
  ;
58
53
  SQL
59
54
 
60
- logger.debug(tag: :sql) { "Composed select statement (Stream: #{stream_name}, Category: #{stream.category?}, Type: #{stream_type}, Position: #{offset}, Batch Size: #{batch_size}, Precedence: #{precedence})" }
55
+ logger.debug(tag: :sql) { "Composed select statement (Stream: #{stream_name}, Category: #{stream.category?}, Type: #{stream_type}, Position: #{position}, Batch Size: #{batch_size})" }
61
56
  logger.debug(tags: [:data, :sql]) { "Statement: #{statement}" }
62
57
 
63
58
  statement
@@ -71,18 +66,22 @@ module EventSource
71
66
  end
72
67
  end
73
68
 
69
+ def position_field
70
+ unless stream.category?
71
+ 'position'
72
+ else
73
+ 'global_position'
74
+ end
75
+ end
76
+
74
77
  module Defaults
75
- def self.offset
78
+ def self.position
76
79
  0
77
80
  end
78
81
 
79
82
  def self.batch_size
80
83
  1000
81
84
  end
82
-
83
- def self.precedence
84
- :asc
85
- end
86
85
  end
87
86
  end
88
87
  end
@@ -3,8 +3,8 @@ module EventSource
3
3
  class Read
4
4
  include EventSource::Read
5
5
 
6
- def configure(batch_size: nil, precedence: nil, session: nil)
7
- Get.configure(self, batch_size: batch_size, precedence: precedence, session: session)
6
+ def configure(batch_size: nil, session: nil)
7
+ Get.configure(self, batch_size: batch_size, session: session)
8
8
  end
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-event_source-postgres
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.1.1
4
+ version: 0.13.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-25 00:00:00.000000000 Z
11
+ date: 2017-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evt-event_source