evt-consumer-postgres 0.1.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 +7 -0
- data/lib/consumer/postgres.rb +8 -0
- data/lib/consumer/postgres/controls.rb +13 -0
- data/lib/consumer/postgres/controls/category.rb +7 -0
- data/lib/consumer/postgres/controls/consumer.rb +20 -0
- data/lib/consumer/postgres/controls/event_data.rb +7 -0
- data/lib/consumer/postgres/controls/id.rb +7 -0
- data/lib/consumer/postgres/controls/position.rb +11 -0
- data/lib/consumer/postgres/controls/position/store/message.rb +19 -0
- data/lib/consumer/postgres/controls/position/stream/write.rb +21 -0
- data/lib/consumer/postgres/controls/stream_name.rb +33 -0
- data/lib/consumer/postgres/position_store.rb +49 -0
- data/lib/consumer/postgres/position_store/messages.rb +13 -0
- data/lib/consumer/postgres/position_store/stream_name.rb +29 -0
- data/lib/consumer/postgres/postgres.rb +24 -0
- metadata +99 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5d147e491fa712d35abeaebcc0c1f5e50156ba7d
|
4
|
+
data.tar.gz: 601b341ec4809e57634e242d9bad037d8837812d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1180f82832a6cdf5137d3a750faa1b89f87084a4a610df2e0cb8ad71a835f9a63afe589ebd76c5f8ccb3e30384054445e12d9dbffb027d132f6937168698e121
|
7
|
+
data.tar.gz: 3f6e858e159d64d0e96cd79800c2a3fb84f7e32b253fae33abd57fc5673843f9ba4c988d70006d916d17c81d89a4354bbc5e5f15b2a23405354295183a990809
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'consumer/controls'
|
2
|
+
|
3
|
+
require 'event_source/postgres/controls'
|
4
|
+
|
5
|
+
require 'consumer/postgres/controls/category'
|
6
|
+
require 'consumer/postgres/controls/id'
|
7
|
+
require 'consumer/postgres/controls/event_data'
|
8
|
+
require 'consumer/postgres/controls/position'
|
9
|
+
require 'consumer/postgres/controls/position/store/message'
|
10
|
+
require 'consumer/postgres/controls/position/stream/write'
|
11
|
+
require 'consumer/postgres/controls/stream_name'
|
12
|
+
|
13
|
+
require 'consumer/postgres/controls/consumer'
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Consumer
|
2
|
+
module Postgres
|
3
|
+
module Controls
|
4
|
+
module Consumer
|
5
|
+
class Example
|
6
|
+
include ::Consumer::Postgres
|
7
|
+
end
|
8
|
+
|
9
|
+
class Incrementing
|
10
|
+
include ::Consumer::Postgres
|
11
|
+
|
12
|
+
handler do |event_data|
|
13
|
+
logger.info { "Handled event (StreamName: #{event_data.stream_name}, GlobalPosition: #{event_data.global_position})" }
|
14
|
+
logger.debug { event_data.data.pretty_inspect }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Consumer
|
2
|
+
module Postgres
|
3
|
+
module Controls
|
4
|
+
module Position
|
5
|
+
module Store
|
6
|
+
module Message
|
7
|
+
def self.example(position: nil)
|
8
|
+
position ||= Position.example
|
9
|
+
|
10
|
+
message = PositionStore::Messages::PositionUpdated.new
|
11
|
+
message.position = position
|
12
|
+
message
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Consumer
|
2
|
+
module Postgres
|
3
|
+
module Controls
|
4
|
+
module Position
|
5
|
+
module Stream
|
6
|
+
module Write
|
7
|
+
def self.call(stream_name=nil, position: nil)
|
8
|
+
stream_name ||= StreamName::Position.example
|
9
|
+
|
10
|
+
message = Store::Message.example position: position
|
11
|
+
|
12
|
+
Messaging::Postgres::Write.(message, stream_name)
|
13
|
+
|
14
|
+
stream_name
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Consumer
|
2
|
+
module Postgres
|
3
|
+
module Controls
|
4
|
+
StreamName = ::Consumer::Controls::StreamName
|
5
|
+
|
6
|
+
module StreamName
|
7
|
+
module Position
|
8
|
+
def self.example(id: nil, randomize_category: nil, types: nil)
|
9
|
+
types ||= []
|
10
|
+
|
11
|
+
types << 'position'
|
12
|
+
|
13
|
+
StreamName.example(
|
14
|
+
id: id,
|
15
|
+
randomize_category: randomize_category,
|
16
|
+
types: types
|
17
|
+
)
|
18
|
+
end
|
19
|
+
|
20
|
+
module Category
|
21
|
+
def self.example(category: nil)
|
22
|
+
category = Controls::Category.example category: category
|
23
|
+
|
24
|
+
position_type = 'position'
|
25
|
+
|
26
|
+
EventSource::Postgres::StreamName.stream_name category, type: position_type
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Consumer
|
2
|
+
module Postgres
|
3
|
+
class PositionStore
|
4
|
+
include Consumer::PositionStore
|
5
|
+
|
6
|
+
initializer :stream_name
|
7
|
+
|
8
|
+
dependency :read, EventSource::Postgres::Get::Last
|
9
|
+
dependency :session, EventSource::Postgres::Session
|
10
|
+
dependency :write, ::Messaging::Postgres::Write
|
11
|
+
|
12
|
+
def self.build(stream_name, session: nil)
|
13
|
+
position_stream_name = StreamName.get stream_name
|
14
|
+
|
15
|
+
instance = new position_stream_name
|
16
|
+
EventSource::Postgres::Session.configure instance, session: session
|
17
|
+
instance.configure
|
18
|
+
instance
|
19
|
+
end
|
20
|
+
|
21
|
+
def configure
|
22
|
+
EventSource::Postgres::Get::Last.configure(
|
23
|
+
self,
|
24
|
+
session: session,
|
25
|
+
attr_name: :read
|
26
|
+
)
|
27
|
+
|
28
|
+
Messaging::Postgres::Write.configure self, session: session
|
29
|
+
end
|
30
|
+
|
31
|
+
def get
|
32
|
+
event_data = read.(stream_name)
|
33
|
+
|
34
|
+
return nil if event_data.nil?
|
35
|
+
|
36
|
+
message = Messaging::Message::Import.(event_data, Messages::PositionUpdated)
|
37
|
+
|
38
|
+
message.position
|
39
|
+
end
|
40
|
+
|
41
|
+
def put(position)
|
42
|
+
message = Messages::PositionUpdated.new
|
43
|
+
message.position = position
|
44
|
+
|
45
|
+
write.(message, stream_name)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Consumer
|
2
|
+
module Postgres
|
3
|
+
class PositionStore
|
4
|
+
module StreamName
|
5
|
+
def self.get(stream_name)
|
6
|
+
id = EventSource::Postgres::StreamName.get_id stream_name
|
7
|
+
entity = EventSource::Postgres::StreamName.get_entity_name stream_name
|
8
|
+
type_list = EventSource::Postgres::StreamName.get_types stream_name
|
9
|
+
|
10
|
+
position_type = Type.get
|
11
|
+
|
12
|
+
type_list << position_type unless type_list.include? position_type
|
13
|
+
|
14
|
+
EventSource::Postgres::StreamName.stream_name(
|
15
|
+
entity,
|
16
|
+
id,
|
17
|
+
types: type_list
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
module Type
|
22
|
+
def self.get
|
23
|
+
'position'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Consumer
|
2
|
+
module Postgres
|
3
|
+
def self.included(cls)
|
4
|
+
cls.class_exec do
|
5
|
+
include ::Consumer
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def configure(session: nil, batch_size: nil, position_store: nil)
|
10
|
+
EventSource::Postgres::Get.configure(
|
11
|
+
self,
|
12
|
+
session: session,
|
13
|
+
batch_size: batch_size
|
14
|
+
)
|
15
|
+
|
16
|
+
PositionStore.configure(
|
17
|
+
self,
|
18
|
+
stream_name,
|
19
|
+
position_store: position_store,
|
20
|
+
session: session
|
21
|
+
)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
metadata
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: evt-consumer-postgres
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- The Eventide Project
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-03-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: evt-consumer
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: evt-messaging-postgres
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: test_bench
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: " "
|
56
|
+
email: opensource@eventide-project.org
|
57
|
+
executables: []
|
58
|
+
extensions: []
|
59
|
+
extra_rdoc_files: []
|
60
|
+
files:
|
61
|
+
- lib/consumer/postgres.rb
|
62
|
+
- lib/consumer/postgres/controls.rb
|
63
|
+
- lib/consumer/postgres/controls/category.rb
|
64
|
+
- lib/consumer/postgres/controls/consumer.rb
|
65
|
+
- lib/consumer/postgres/controls/event_data.rb
|
66
|
+
- lib/consumer/postgres/controls/id.rb
|
67
|
+
- lib/consumer/postgres/controls/position.rb
|
68
|
+
- lib/consumer/postgres/controls/position/store/message.rb
|
69
|
+
- lib/consumer/postgres/controls/position/stream/write.rb
|
70
|
+
- lib/consumer/postgres/controls/stream_name.rb
|
71
|
+
- lib/consumer/postgres/position_store.rb
|
72
|
+
- lib/consumer/postgres/position_store/messages.rb
|
73
|
+
- lib/consumer/postgres/position_store/stream_name.rb
|
74
|
+
- lib/consumer/postgres/postgres.rb
|
75
|
+
homepage: https://github.com/eventide-project/consumer-postgres
|
76
|
+
licenses:
|
77
|
+
- MIT
|
78
|
+
metadata: {}
|
79
|
+
post_install_message:
|
80
|
+
rdoc_options: []
|
81
|
+
require_paths:
|
82
|
+
- lib
|
83
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 2.2.3
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
requirements: []
|
94
|
+
rubyforge_project:
|
95
|
+
rubygems_version: 2.6.8
|
96
|
+
signing_key:
|
97
|
+
specification_version: 4
|
98
|
+
summary: Category and stream consumer for postgres
|
99
|
+
test_files: []
|