evt-command_line-component_generator 0.1.0.4 → 0.1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/source/%component_name%.gemspec.tt +20 -0
- data/source/Gemfile.tt +5 -0
- data/source/init.rb.tt +3 -0
- data/source/install-gems.sh +23 -0
- data/source/lib/%component_name%.rb.tt +11 -0
- data/source/lib/%component_name%/%entity_name%.rb.tt +11 -0
- data/source/lib/%component_name%/controls.rb.tt +12 -0
- data/source/lib/%component_name%/controls/%entity_name%.rb.tt +36 -0
- data/source/lib/%component_name%/controls/id.rb.tt +5 -0
- data/source/lib/%component_name%/controls/time.rb.tt +62 -0
- data/source/lib/%component_name%/controls/version.rb.tt +9 -0
- data/source/lib/%component_name%/handlers/commands.rb.tt +44 -0
- data/source/lib/%component_name%/handlers/events.rb.tt +17 -0
- data/source/lib/%component_name%/projection.rb.tt +20 -0
- data/source/lib/%component_name%/store.rb.tt +10 -0
- data/source/load_path.rb +18 -0
- data/source/settings/message_store_postgres.json.example +7 -0
- data/source/test.sh +3 -0
- data/source/test/automated.rb +8 -0
- data/source/test/automated/automated_init.rb +1 -0
- data/source/test/automated/database_connection.rb +13 -0
- data/source/test/interactive/interactive_init.rb +3 -0
- data/source/test/test_init.rb.tt +14 -0
- metadata +24 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d924f5e873050831b6d2008643baf44a7b97ee12
|
4
|
+
data.tar.gz: 6e48f29d1a333f07f3e4d3f8d1db82a3b30fa061
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76b91cac6f658adaf4f32c42ce1e250244fe4449804dc5c8a755fca5f1561243fce75ae4cf1046571db1807f58df41b32efa7e5c2d3078252adcc5731900ed80
|
7
|
+
data.tar.gz: e5da2c0d8d49defffa308ff3c8493101162eef1e6d9afa3d5207a0e4f2b232665bd968818d44e4a1395c2f8e6fcf981a5ddd7f2d7f2f638c86f33befab9c820b
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
Gem::Specification.new do |s|
|
3
|
+
s.name = '<%= component_name %>'
|
4
|
+
s.version = '0.0.0'
|
5
|
+
s.summary = ' '
|
6
|
+
s.description = ' '
|
7
|
+
|
8
|
+
s.authors = ['email@domain.com']
|
9
|
+
s.homepage = 'http://domain.com'
|
10
|
+
s.licenses = ['TODO']
|
11
|
+
|
12
|
+
s.require_paths = ['lib']
|
13
|
+
s.files = Dir.glob('{lib}/**/*')
|
14
|
+
s.platform = Gem::Platform::RUBY
|
15
|
+
s.required_ruby_version = '>= 2.4'
|
16
|
+
|
17
|
+
s.add_runtime_dependency 'eventide-postgres'
|
18
|
+
|
19
|
+
s.add_development_dependency 'test_bench'
|
20
|
+
end
|
data/source/Gemfile.tt
ADDED
data/source/init.rb.tt
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
echo "Removing gems directory..."
|
4
|
+
rm -rf gems
|
5
|
+
echo "Removing .bundle directory..."
|
6
|
+
rm -rf .bundle
|
7
|
+
echo "Removing Gemfile.lock file..."
|
8
|
+
rm -f Gemfile.lock
|
9
|
+
echo
|
10
|
+
|
11
|
+
set -e
|
12
|
+
|
13
|
+
echo "Installing gems to ./gems"
|
14
|
+
echo '= = ='
|
15
|
+
|
16
|
+
cmd="bundle install --standalone --path=./gems"
|
17
|
+
|
18
|
+
echo $cmd
|
19
|
+
($cmd)
|
20
|
+
|
21
|
+
echo '- - -'
|
22
|
+
echo '(done)'
|
23
|
+
echo
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'eventide/postgres'
|
2
|
+
|
3
|
+
# require '<%= component_name %>/messages/commands/...'
|
4
|
+
# require '<%= component_name %>/messages/events/...'
|
5
|
+
|
6
|
+
require '<%= component_name %>/<%= entity_name %>'
|
7
|
+
require '<%= component_name %>/projection'
|
8
|
+
require '<%= component_name %>/store'
|
9
|
+
|
10
|
+
require '<%= component_name %>/handlers/commands'
|
11
|
+
require '<%= component_name %>/handlers/events'
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module <%= component_constant_name %>
|
2
|
+
class <%= entity_constant_name %>
|
3
|
+
include Schema::DataStructure
|
4
|
+
|
5
|
+
attribute :id, String
|
6
|
+
|
7
|
+
# TODO Implement attributes
|
8
|
+
# TODO Implement entity logic, predicates, mutations, calculations, etc?
|
9
|
+
# Note: This class's methods should pertain to its attributes
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'clock/controls'
|
2
|
+
require 'identifier/uuid/controls'
|
3
|
+
|
4
|
+
require '<%= component_name %>/controls/id'
|
5
|
+
require '<%= component_name %>/controls/time'
|
6
|
+
require '<%= component_name %>/controls/version'
|
7
|
+
|
8
|
+
require '<%= component_name %>/controls/<%= entity_name %>'
|
9
|
+
|
10
|
+
# require '<%= component_name %>/controls/commands/...'
|
11
|
+
|
12
|
+
# require '<%= component_name %>/controls/events/...'
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module <%= component_constant_name %>
|
2
|
+
module Controls
|
3
|
+
module <%= entity_constant_name %>
|
4
|
+
def self.example
|
5
|
+
<%= entity_name %> = <%= component_constant_name %>::<%= entity_constant_name %>.build
|
6
|
+
|
7
|
+
<%= entity_name %>.id = self.id
|
8
|
+
<%= entity_name %>.something_happened_time = Time::Effective::Raw.example
|
9
|
+
|
10
|
+
<%= entity_name %>
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.id
|
14
|
+
ID.example(increment: id_increment)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.id_increment
|
18
|
+
1111
|
19
|
+
end
|
20
|
+
|
21
|
+
module New
|
22
|
+
def self.example
|
23
|
+
<%= component_constant_name %>::<%= entity_constant_name %>.build
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
module Identified
|
28
|
+
def self.example
|
29
|
+
<%= entity_name %> = New.example
|
30
|
+
<%= entity_name %>.id = <%= entity_constant_name %>.id
|
31
|
+
<%= entity_name %>
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module <%= component_constant_name %>
|
2
|
+
module Controls
|
3
|
+
module Time
|
4
|
+
def self.example(time=nil)
|
5
|
+
time ||= Raw.example
|
6
|
+
ISO8601.example(time)
|
7
|
+
end
|
8
|
+
|
9
|
+
module Raw
|
10
|
+
def self.example
|
11
|
+
Clock::Controls::Time::Raw.example
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module ISO8601
|
16
|
+
def self.example(time=nil)
|
17
|
+
Clock::Controls::Time::ISO8601.example(time)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.precision
|
21
|
+
3
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
module Processed
|
26
|
+
def self.example(time=nil, offset_milliseconds: nil)
|
27
|
+
offset_milliseconds ||= self.offset_milliseconds
|
28
|
+
Clock::Controls::Time::Offset.example(offset_milliseconds, time: time, precision: ISO8601.precision)
|
29
|
+
end
|
30
|
+
|
31
|
+
module Raw
|
32
|
+
def self.example(time=nil, offset_milliseconds: nil)
|
33
|
+
offset_milliseconds ||= Processed.offset_milliseconds
|
34
|
+
Clock::Controls::Time::Offset::Raw.example(offset_milliseconds, time: time, precision: ISO8601.precision)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.offset_milliseconds
|
39
|
+
11
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
module Effective
|
44
|
+
def self.example(time=nil, offset_milliseconds: nil)
|
45
|
+
offset_milliseconds ||= self.offset_milliseconds
|
46
|
+
Clock::Controls::Time::Offset.example(offset_milliseconds, time: time, precision: ISO8601.precision)
|
47
|
+
end
|
48
|
+
|
49
|
+
module Raw
|
50
|
+
def self.example(time=nil, offset_milliseconds: nil)
|
51
|
+
offset_milliseconds ||= Processed.offset_milliseconds
|
52
|
+
Clock::Controls::Time::Offset::Raw.example(offset_milliseconds, time: time, precision: ISO8601.precision)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.offset_milliseconds
|
57
|
+
1
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module <%= component_constant_name %>
|
2
|
+
module Handlers
|
3
|
+
class Commands
|
4
|
+
include Messaging::Handle
|
5
|
+
include Messaging::StreamName
|
6
|
+
include Log::Dependency
|
7
|
+
include Messages::Commands
|
8
|
+
include Messages::Events
|
9
|
+
|
10
|
+
dependency :write, Messaging::Postgres::Write
|
11
|
+
dependency :clock, Clock::UTC
|
12
|
+
dependency :store, Store
|
13
|
+
|
14
|
+
def configure
|
15
|
+
Messaging::Postgres::Write.configure(self)
|
16
|
+
Clock::UTC.configure(self)
|
17
|
+
Store.configure(self)
|
18
|
+
end
|
19
|
+
|
20
|
+
category :<%= entity_name %>
|
21
|
+
|
22
|
+
# TODO Implement command handler block
|
23
|
+
# eg:
|
24
|
+
# handle DoSomething do |do_something|
|
25
|
+
# <%= entity_name %>_id = do_something.<%= entity_name %>_id
|
26
|
+
|
27
|
+
# <%= entity_name %>, version = store.fetch(<%= entity_name %>_id, include: :version)
|
28
|
+
|
29
|
+
# if <%= entity_name %>.something_happened?
|
30
|
+
# logger.info(tag: :ignored) { "Command ignored (Command: #{do_something.message_type}, <%= entity_constant_name %> ID: #{<%= entity_name %>_id})" }
|
31
|
+
# return
|
32
|
+
# end
|
33
|
+
|
34
|
+
# something_happened = SomethingHappened.follow(do_something)
|
35
|
+
|
36
|
+
# something_happened.processed_time = clock.iso8601
|
37
|
+
|
38
|
+
# stream_name = stream_name(<%= entity_name %>_id)
|
39
|
+
|
40
|
+
# write.(something_happened, stream_name, expected_version: version)
|
41
|
+
# end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module <%= component_constant_name %>
|
2
|
+
module Handlers
|
3
|
+
class Events
|
4
|
+
include Messaging::Handle
|
5
|
+
include Messaging::StreamName
|
6
|
+
include Log::Dependency
|
7
|
+
include Messages::Commands
|
8
|
+
include Messages::Events
|
9
|
+
|
10
|
+
# TODO Implement event handler blocks
|
11
|
+
# Note: Delete this file if not handling events
|
12
|
+
|
13
|
+
# handle SomethingHappened do |something_happened|
|
14
|
+
# end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module <%= component_constant_name %>
|
2
|
+
class Projection
|
3
|
+
include EntityProjection
|
4
|
+
include Messages::Events
|
5
|
+
|
6
|
+
entity_name :<%= entity_name %>
|
7
|
+
|
8
|
+
# TODO Implement event projection blocks
|
9
|
+
# eg:
|
10
|
+
# apply SomethingHappened do |something_happened|
|
11
|
+
# SetAttributes.(<%= entity_name %>, something_happened, copy: [
|
12
|
+
# { :<%= entity_name %>_id => :id }
|
13
|
+
# ])
|
14
|
+
|
15
|
+
# something_happened_time = Clock.parse(something_happened.time)
|
16
|
+
|
17
|
+
# <%= entity_name %>.something_happened_time = something_happened_time
|
18
|
+
# end
|
19
|
+
end
|
20
|
+
end
|
data/source/load_path.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
bundler_standalone_loader = 'gems/bundler/setup'
|
2
|
+
|
3
|
+
begin
|
4
|
+
require_relative bundler_standalone_loader
|
5
|
+
rescue LoadError
|
6
|
+
puts "WARNING: Standalone bundle loader is not at #{bundler_standalone_loader}. Using Bundler to load gems."
|
7
|
+
require "bundler/setup"
|
8
|
+
Bundler.require
|
9
|
+
end
|
10
|
+
|
11
|
+
lib_dir = File.expand_path('../lib', __FILE__)
|
12
|
+
$LOAD_PATH.unshift lib_dir unless $LOAD_PATH.include?(lib_dir)
|
13
|
+
|
14
|
+
libraries_dir = ENV['LIBRARIES_HOME']
|
15
|
+
unless libraries_dir.nil?
|
16
|
+
libraries_dir = File.expand_path(libraries_dir)
|
17
|
+
$LOAD_PATH.unshift libraries_dir unless $LOAD_PATH.include?(libraries_dir)
|
18
|
+
end
|
data/source/test.sh
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require_relative '../test_init'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative './automated_init'
|
2
|
+
|
3
|
+
context "Database Connection" do
|
4
|
+
session = MessageStore::Postgres::Session.build
|
5
|
+
|
6
|
+
refute(session.connected?)
|
7
|
+
|
8
|
+
test "Connects on first use" do
|
9
|
+
refute proc { session.execute('SELECT 1;') } do
|
10
|
+
raises_error?
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
ENV['CONSOLE_DEVICE'] ||= 'stdout'
|
2
|
+
ENV['LOG_LEVEL'] ||= '_min'
|
3
|
+
|
4
|
+
puts RUBY_DESCRIPTION
|
5
|
+
|
6
|
+
require_relative '../init.rb'
|
7
|
+
|
8
|
+
require 'test_bench'; TestBench.activate
|
9
|
+
|
10
|
+
require 'pp'
|
11
|
+
|
12
|
+
require '<%= component_name %>/controls'
|
13
|
+
|
14
|
+
include <%= component_constant_name %>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evt-command_line-component_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.
|
4
|
+
version: 0.1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Eventide Project
|
@@ -63,6 +63,29 @@ files:
|
|
63
63
|
- lib/command_line/component_generator.rb
|
64
64
|
- lib/command_line/component_generator/commands/component.rb
|
65
65
|
- lib/command_line/component_generator/interface.rb
|
66
|
+
- source/%component_name%.gemspec.tt
|
67
|
+
- source/Gemfile.tt
|
68
|
+
- source/init.rb.tt
|
69
|
+
- source/install-gems.sh
|
70
|
+
- source/lib/%component_name%.rb.tt
|
71
|
+
- source/lib/%component_name%/%entity_name%.rb.tt
|
72
|
+
- source/lib/%component_name%/controls.rb.tt
|
73
|
+
- source/lib/%component_name%/controls/%entity_name%.rb.tt
|
74
|
+
- source/lib/%component_name%/controls/id.rb.tt
|
75
|
+
- source/lib/%component_name%/controls/time.rb.tt
|
76
|
+
- source/lib/%component_name%/controls/version.rb.tt
|
77
|
+
- source/lib/%component_name%/handlers/commands.rb.tt
|
78
|
+
- source/lib/%component_name%/handlers/events.rb.tt
|
79
|
+
- source/lib/%component_name%/projection.rb.tt
|
80
|
+
- source/lib/%component_name%/store.rb.tt
|
81
|
+
- source/load_path.rb
|
82
|
+
- source/settings/message_store_postgres.json.example
|
83
|
+
- source/test.sh
|
84
|
+
- source/test/automated.rb
|
85
|
+
- source/test/automated/automated_init.rb
|
86
|
+
- source/test/automated/database_connection.rb
|
87
|
+
- source/test/interactive/interactive_init.rb
|
88
|
+
- source/test/test_init.rb.tt
|
66
89
|
homepage: https://github.com/eventide-project/command-line-component-generator
|
67
90
|
licenses:
|
68
91
|
- MIT
|