hecks-domain 0.1.16.rc → 0.2.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 +4 -4
- data/lib/cli/builder/aggregate_command_line_builder.rb +15 -16
- data/lib/cli/builder/reference_command_line_builder.rb +15 -16
- data/lib/cli/builder/value_object_command_line_builder.rb +15 -16
- data/lib/cli/command_builder.rb +50 -45
- data/lib/cli/domain_object/assignment_template.rb +30 -31
- data/lib/cli/domain_object/option_formatter.rb +24 -25
- data/lib/cli/generate_domain_object.rb +50 -51
- data/lib/cli/new.rb +44 -45
- data/lib/cli/templates/aggregate/lib/domain/%name%/repository.rb.tt +2 -5
- data/lib/domain_builder/attribute.rb +58 -57
- data/lib/domain_builder/domain.rb +12 -15
- data/lib/domain_builder/domain_module.rb +24 -20
- data/lib/domain_builder/domain_object.rb +40 -39
- data/lib/domain_builder/head.rb +3 -6
- data/lib/domain_builder/hecks-domain-builder.rb +37 -0
- data/lib/domain_builder/reference.rb +11 -14
- data/lib/domain_builder/value.rb +3 -6
- data/lib/hecks-domain.rb +1 -3
- metadata +11 -27
- data/lib/adapters/adapters.rb +0 -2
- data/lib/adapters/resource_server/cli/cli.rb +0 -1
- data/lib/adapters/resource_server/cli/generate_resource_server.rb +0 -25
- data/lib/adapters/resource_server/cli/templates/resource_server/config.ru.tt +0 -8
- data/lib/adapters/resource_server/resource_server.rb +0 -3
- data/lib/adapters/sql_database/cli/cli.rb +0 -3
- data/lib/adapters/sql_database/cli/generate_domain_migrations.rb +0 -33
- data/lib/adapters/sql_database/cli/generate_sql_database.rb +0 -35
- data/lib/adapters/sql_database/cli/migration_builder.rb +0 -51
- data/lib/adapters/sql_database/cli/templates/migration.rb.tt +0 -14
- data/lib/adapters/sql_database/cli/templates/repository.rb.tt +0 -24
- data/lib/adapters/sql_database/cli/templates/sql_database/Rakefile +0 -15
- data/lib/adapters/sql_database/commands/read/fetch_references.rb +0 -58
- data/lib/adapters/sql_database/commands/update/delete_references.rb +0 -45
- data/lib/adapters/sql_database/commands/update/link_to_references.rb +0 -45
- data/lib/adapters/sql_database/sql_database.rb +0 -1
- data/lib/domain_builder/domain_builder.rb +0 -37
@@ -1,60 +1,61 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
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
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
1
|
+
class HecksDomainBuilder
|
2
|
+
# A Domain Object attribute
|
3
|
+
class Attribute
|
4
|
+
attr_writer :type
|
5
|
+
attr_reader :object_name
|
6
|
+
|
7
|
+
def initialize(string)
|
8
|
+
@string = string
|
9
|
+
@object_name = object_name
|
10
|
+
end
|
11
|
+
|
12
|
+
def list?
|
13
|
+
@string.include?("[")
|
14
|
+
end
|
15
|
+
|
16
|
+
def name
|
17
|
+
@string.split(":").first
|
18
|
+
end
|
19
|
+
|
20
|
+
def type
|
21
|
+
return @type if @type
|
22
|
+
@string.split(":").last.delete("[").delete("]").camelize
|
23
|
+
end
|
24
|
+
|
25
|
+
def domain_module
|
26
|
+
return unless @string.include?("::")
|
27
|
+
@string.split("::").first.split(":").last.camelize
|
28
|
+
end
|
29
|
+
|
30
|
+
def copy(new_values={})
|
31
|
+
result = self.class.new(@string)
|
32
|
+
result.type = new_values[:type] if new_values[:type]
|
33
|
+
result
|
34
|
+
end
|
35
|
+
|
36
|
+
def reference?
|
37
|
+
!primitive? && !list?
|
38
|
+
end
|
39
|
+
|
40
|
+
def domain_reference?
|
41
|
+
@string.include?('::')
|
42
|
+
end
|
43
|
+
|
44
|
+
def referenced_object
|
45
|
+
return unless reference?
|
46
|
+
return @string.split("::").last if @string.include?("::")
|
47
|
+
@string.split(":").last
|
48
|
+
end
|
49
|
+
|
50
|
+
def primitive?
|
51
|
+
['String', 'Integer', 'Currency'].include?(type)
|
52
|
+
end
|
53
|
+
|
54
|
+
def ==(other)
|
55
|
+
return false if other.name != name
|
56
|
+
return false if other.type != type
|
57
|
+
return false if other.domain_module != domain_module
|
58
|
+
return true
|
58
59
|
end
|
59
60
|
end
|
60
61
|
end
|
@@ -1,19 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
end
|
1
|
+
class HecksDomainBuilder
|
2
|
+
# A domain
|
3
|
+
class Domain
|
4
|
+
attr_reader :domain_modules, :name
|
5
|
+
def initialize(name:)
|
6
|
+
@name = name
|
7
|
+
@domain_modules = {}
|
8
|
+
end
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
10
|
+
def module(name, &block)
|
11
|
+
result = DomainModule.new(name: name)
|
12
|
+
@domain_modules[name.to_sym] = result
|
13
|
+
yield(result)
|
17
14
|
end
|
18
15
|
end
|
19
16
|
end
|
@@ -1,28 +1,32 @@
|
|
1
|
-
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
attr_reader :objects, :name, :references
|
1
|
+
class HecksDomainBuilder
|
2
|
+
# A domain module
|
3
|
+
class DomainModule
|
4
|
+
attr_reader :objects, :name, :references
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
def initialize(name:)
|
7
|
+
@name = name
|
8
|
+
@objects = []
|
9
|
+
@references = []
|
10
|
+
end
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
def head(name=nil)
|
13
|
+
return (@objects << Head.new(name: name)).last if name
|
14
|
+
objects.find{ |o| o.is_a?(Head) }
|
15
|
+
end
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
def value(name)
|
18
|
+
(@objects << Value.new(name: name)).last
|
19
|
+
end
|
20
|
+
|
21
|
+
def reference(name)
|
22
|
+
(@references << Reference.new(name)).last
|
23
|
+
end
|
21
24
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
+
def find(name)
|
26
|
+
@objects.each do |object|
|
27
|
+
return object if object.name.downcase == name.downcase
|
25
28
|
end
|
29
|
+
return nil
|
26
30
|
end
|
27
31
|
end
|
28
32
|
end
|
@@ -1,43 +1,44 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
[attribute.name, type_with_domain_module(attribute)].join(':')
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def references
|
29
|
-
@attributes.reject(&:primitive?)
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def type_with_domain_module(attribute)
|
35
|
-
type = DomainBuilder::Types.values.include?(attribute.type) ? "Value" : attribute.type
|
36
|
-
type = '[' + type + ']' if attribute.list?
|
37
|
-
return type unless attribute.domain_module
|
38
|
-
[attribute.domain_module, type].join("::")
|
39
|
-
end
|
1
|
+
class HecksDomainBuilder
|
2
|
+
# A Domain Object
|
3
|
+
class DomainObject
|
4
|
+
attr_reader :name, :attributes
|
5
|
+
|
6
|
+
def initialize(name:)
|
7
|
+
@name = name
|
8
|
+
end
|
9
|
+
|
10
|
+
def attributes(*values)
|
11
|
+
return @attributes if @attributes
|
12
|
+
@attributes = values.map { |value| Attribute.new(value) }
|
13
|
+
end
|
14
|
+
|
15
|
+
def attribute_hash
|
16
|
+
attributes.map do |attribute|
|
17
|
+
[attribute.name.to_sym, type_with_domain_module(attribute)]
|
18
|
+
end.to_h
|
19
|
+
end
|
20
|
+
|
21
|
+
def attribute_string
|
22
|
+
attributes.map do |attribute|
|
23
|
+
[attribute.name, type_with_domain_module(attribute)].join(':')
|
40
24
|
end
|
41
25
|
end
|
26
|
+
|
27
|
+
def references
|
28
|
+
@attributes.reject(&:primitive?)
|
29
|
+
end
|
30
|
+
|
31
|
+
def domain_references
|
32
|
+
@attributes.select(&:domain_reference?)
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def type_with_domain_module(attribute)
|
38
|
+
type = Types.values.include?(attribute.type) ? "Value" : attribute.type
|
39
|
+
type = '[' + type + ']' if attribute.list?
|
40
|
+
return type unless attribute.domain_module
|
41
|
+
[attribute.domain_module, type].join("::")
|
42
|
+
end
|
42
43
|
end
|
43
44
|
end
|
data/lib/domain_builder/head.rb
CHANGED
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative 'attribute'
|
2
|
+
require_relative 'domain'
|
3
|
+
require_relative 'domain_module'
|
4
|
+
require_relative 'domain_object'
|
5
|
+
require_relative 'value'
|
6
|
+
require_relative 'head'
|
7
|
+
require_relative 'reference'
|
8
|
+
|
9
|
+
# Represents information about your domain
|
10
|
+
class HecksDomainBuilder
|
11
|
+
Types ||= {
|
12
|
+
string: 'String',
|
13
|
+
integer: 'Integer',
|
14
|
+
currency: 'Currency'
|
15
|
+
}
|
16
|
+
|
17
|
+
attr_accessor :domain, :specification, :name
|
18
|
+
|
19
|
+
def initialize(domain_name:, &block)
|
20
|
+
@name = domain_name
|
21
|
+
@domain = Domain.new(name: domain_name)
|
22
|
+
block.yield(@domain)
|
23
|
+
self
|
24
|
+
end
|
25
|
+
|
26
|
+
def domain_modules
|
27
|
+
@domain.domain_modules
|
28
|
+
end
|
29
|
+
|
30
|
+
def [](module_name)
|
31
|
+
domain_modules[module_name]
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.build(domain_name, &block)
|
35
|
+
new(domain_name: domain_name, &block)
|
36
|
+
end
|
37
|
+
end
|
@@ -1,19 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
end
|
1
|
+
class HecksDomainBuilder
|
2
|
+
# Represents a reference object
|
3
|
+
class Reference
|
4
|
+
def initialize(reference)
|
5
|
+
@reference = reference
|
6
|
+
end
|
8
7
|
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
def referenced_entity
|
9
|
+
@reference.split("::").map(&:camelcase).join("::")
|
10
|
+
end
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
12
|
+
def name
|
13
|
+
@reference.split("::").last.camelcase + "Reference"
|
17
14
|
end
|
18
15
|
end
|
19
16
|
end
|
data/lib/domain_builder/value.rb
CHANGED
data/lib/hecks-domain.rb
CHANGED
metadata
CHANGED
@@ -1,65 +1,49 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hecks-domain
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Young
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
19
|
+
version: '5.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0
|
26
|
+
version: '5.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: thor
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0.19'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0.19'
|
41
41
|
description: Hecks Domain
|
42
42
|
email: chris@example.com
|
43
43
|
executables: []
|
44
44
|
extensions: []
|
45
45
|
extra_rdoc_files: []
|
46
46
|
files:
|
47
|
-
- lib/adapters/adapters.rb
|
48
|
-
- lib/adapters/resource_server/cli/cli.rb
|
49
|
-
- lib/adapters/resource_server/cli/generate_resource_server.rb
|
50
|
-
- lib/adapters/resource_server/cli/templates/resource_server/config.ru.tt
|
51
|
-
- lib/adapters/resource_server/resource_server.rb
|
52
|
-
- lib/adapters/sql_database/cli/cli.rb
|
53
|
-
- lib/adapters/sql_database/cli/generate_domain_migrations.rb
|
54
|
-
- lib/adapters/sql_database/cli/generate_sql_database.rb
|
55
|
-
- lib/adapters/sql_database/cli/migration_builder.rb
|
56
|
-
- lib/adapters/sql_database/cli/templates/migration.rb.tt
|
57
|
-
- lib/adapters/sql_database/cli/templates/repository.rb.tt
|
58
|
-
- lib/adapters/sql_database/cli/templates/sql_database/Rakefile
|
59
|
-
- lib/adapters/sql_database/commands/read/fetch_references.rb
|
60
|
-
- lib/adapters/sql_database/commands/update/delete_references.rb
|
61
|
-
- lib/adapters/sql_database/commands/update/link_to_references.rb
|
62
|
-
- lib/adapters/sql_database/sql_database.rb
|
63
47
|
- lib/cli/builder/aggregate_command_line_builder.rb
|
64
48
|
- lib/cli/builder/builder.rb
|
65
49
|
- lib/cli/builder/reference_command_line_builder.rb
|
@@ -81,10 +65,10 @@ files:
|
|
81
65
|
- lib/cli/templates/value_object/lib/domain/%module_name%/%name%.rb.tt
|
82
66
|
- lib/domain_builder/attribute.rb
|
83
67
|
- lib/domain_builder/domain.rb
|
84
|
-
- lib/domain_builder/domain_builder.rb
|
85
68
|
- lib/domain_builder/domain_module.rb
|
86
69
|
- lib/domain_builder/domain_object.rb
|
87
70
|
- lib/domain_builder/head.rb
|
71
|
+
- lib/domain_builder/hecks-domain-builder.rb
|
88
72
|
- lib/domain_builder/reference.rb
|
89
73
|
- lib/domain_builder/value.rb
|
90
74
|
- lib/hecks-domain.rb
|
@@ -103,9 +87,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
103
87
|
version: '0'
|
104
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
89
|
requirements:
|
106
|
-
- - "
|
90
|
+
- - ">="
|
107
91
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
92
|
+
version: '0'
|
109
93
|
requirements: []
|
110
94
|
rubyforge_project:
|
111
95
|
rubygems_version: 2.6.10
|
data/lib/adapters/adapters.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require_relative 'generate_resource_server'
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Hecks
|
2
|
-
module Domain
|
3
|
-
module Adapters
|
4
|
-
module ResourceServer
|
5
|
-
module CLI
|
6
|
-
class GenerateResourceServer < Thor::Group
|
7
|
-
include Thor::Actions
|
8
|
-
|
9
|
-
def self.source_root
|
10
|
-
File.dirname(__FILE__) + '/templates/'
|
11
|
-
end
|
12
|
-
|
13
|
-
def create_aggregate_folder
|
14
|
-
directory('resource_server', '.')
|
15
|
-
end
|
16
|
-
|
17
|
-
def domain
|
18
|
-
File.basename(Dir.getwd)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Hecks
|
2
|
-
module Domain
|
3
|
-
module Adapters
|
4
|
-
class SQLDatabase
|
5
|
-
module CLI
|
6
|
-
class GenerateDomainMigrations < Thor::Group
|
7
|
-
include Thor::Actions
|
8
|
-
attr_writer :migration_builder
|
9
|
-
|
10
|
-
def load_domain_spec
|
11
|
-
load('../../Domain')
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.source_root
|
15
|
-
File.dirname(__FILE__) + '/templates/'
|
16
|
-
end
|
17
|
-
|
18
|
-
def create_migration_file
|
19
|
-
@migration_builder = MigrationBuilder.new(self, DOMAIN)
|
20
|
-
@migration_builder.call
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def migration_builder
|
26
|
-
@migration_builder
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
module Hecks
|
2
|
-
module Domain
|
3
|
-
module Adapters
|
4
|
-
class SQLDatabase
|
5
|
-
module CLI
|
6
|
-
class GenerateSQLDatabase < Thor::Group
|
7
|
-
include Thor::Actions
|
8
|
-
|
9
|
-
def self.source_root
|
10
|
-
File.dirname(__FILE__) + '/templates/'
|
11
|
-
end
|
12
|
-
|
13
|
-
def create_sql_database_folder
|
14
|
-
directory('sql_database', './adapters/sql_database')
|
15
|
-
end
|
16
|
-
|
17
|
-
def bundle
|
18
|
-
run 'bundle'
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def class_name
|
24
|
-
@class_name
|
25
|
-
end
|
26
|
-
|
27
|
-
def domain_module_name
|
28
|
-
DOMAIN.name.camelize
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
module Hecks
|
2
|
-
module Domain
|
3
|
-
module Adapters
|
4
|
-
class SQLDatabase
|
5
|
-
module CLI
|
6
|
-
class MigrationBuilder
|
7
|
-
def initialize(generator, specification)
|
8
|
-
@generator = generator
|
9
|
-
@schema = Hecks::Adapters::SQLDatabase::Schema.factory(specification)
|
10
|
-
end
|
11
|
-
|
12
|
-
def call
|
13
|
-
generate_migrations
|
14
|
-
self
|
15
|
-
end
|
16
|
-
|
17
|
-
def table_name
|
18
|
-
@table.name
|
19
|
-
end
|
20
|
-
|
21
|
-
def columns
|
22
|
-
@table.columns
|
23
|
-
end
|
24
|
-
|
25
|
-
def tables
|
26
|
-
@schema.tables
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
attr_reader :generator
|
32
|
-
|
33
|
-
def file_name(index, object)
|
34
|
-
"#{index}_create_#{table_name}.rb"
|
35
|
-
end
|
36
|
-
|
37
|
-
def generate_migrations
|
38
|
-
tables.each.with_index(1) do |table, index|
|
39
|
-
@table = table
|
40
|
-
@generator.template(
|
41
|
-
"migration.rb.tt",
|
42
|
-
"db/migrate/" + file_name(index, table)
|
43
|
-
)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|