rom_factory 0.1.0 → 0.1.1

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: 89b9204be8676e712c9615526bcd5dd26871ca0f
4
- data.tar.gz: 924ac3c5c7317aa847c067b8923ae464a7750df3
3
+ metadata.gz: f75acf0aa7b436ae09de80afca3d384cfcd89c2b
4
+ data.tar.gz: 638cd6b2d05ecfc3ffb573621c2d97f4f8360233
5
5
  SHA512:
6
- metadata.gz: 8c3d100354782edd3dba4718f8dbf7ec2b7ba9425d10acfc74cc726b50fa72591b9d937a88f92fd8aa323acd4adf3675ffe7aa8dd608d354efd74250c85ddc27
7
- data.tar.gz: f7916356eb92878a012951aaad9ce87b35e95ba4c0347abf5bfeea28f03ba7de1391efaf3fd44cd13d5acde8de24dd7fe44c32e20cdbff1d7effa61a835f686b
6
+ metadata.gz: addfb3fa009d20bf7449e6c3e84ea0d81d50cd3198caaaaecc543a8cbef6c65c798b1b14c3882b8582a35a2a21cbafa05bb653e1ac63aae3507cd189668fa326
7
+ data.tar.gz: 36b672e490acec16b9c6a98fbf4275f64be5fc298d7556eb99900b7ed66c9095619b1434f1b95884b3702f97b53c34b1dcb05fdaf739bef438907c9793a70d6b
@@ -8,22 +8,14 @@ module RomFactory
8
8
 
9
9
  def self.define(&block)
10
10
  factory = new(&block)
11
- raise ArgumentError, "Factory #{factory._name} already present" if container.key?(factory._name)
12
- container.register(factory._name, factory)
11
+ raise ArgumentError, "Factory with key #{factory.name} already present" if container.key?(factory.name)
12
+ container.register(factory.name, factory)
13
13
  end
14
14
 
15
15
  def self.create(name, attrs = {})
16
+ raise ArgumentError, "Factory #{name} does not exist" unless container.key?(name)
16
17
  factory = container.resolve(name)
17
- schema = factory._schema.merge(attrs)
18
- schema = schema.map do |k,v|
19
- if v.respond_to?(:call)
20
- [k, v.call]
21
- else
22
- [k, v]
23
- end
24
- end
25
- record = factory._repo.create(schema.to_h)
26
- factory._as ? factory._as.call(record.to_h) : record
18
+ factory.create(attrs)
27
19
  end
28
20
 
29
21
  def initialize
@@ -32,25 +24,40 @@ module RomFactory
32
24
 
33
25
  def factory(name:, repo:, as: nil, &block)
34
26
  @_repo = repo.new(RomFactory::Config.config.container)
35
- @_name = name
27
+ @name = name
36
28
  @_as = as
37
29
  @_schema = {}
30
+ define_methods_from_repos_schema
38
31
  yield(self)
39
32
  end
40
33
 
41
- attr_reader :_repo, :_name, :_as, :_schema
34
+ def create(attrs)
35
+ values = _schema.merge(attrs).map do |k, v|
36
+ if v.respond_to?(:call)
37
+ [k, v.call]
38
+ else
39
+ [k, v]
40
+ end
41
+ end
42
+ record = _repo.create(values.to_h)
43
+ _as ? _as.call(record.to_h) : record
44
+ end
45
+
46
+ attr_reader :name
42
47
 
43
48
  private
44
49
 
45
- def method_missing(name, *args, &block)
46
- if @_repo.root.relation.attributes.include?(name)
47
- if block_given?
48
- @_schema[name] = block
49
- else
50
- @_schema[name] = args.first
51
- end
52
- else
53
- raise NoMethodError, "undefined method `#{name}' for #{self}"
50
+ attr_reader :_repo, :_as, :_schema
51
+
52
+ def define_methods_from_repos_schema
53
+ _repo.root.relation.attributes.each do |a|
54
+ define_singleton_method a, Proc.new {|v = nil, &block|
55
+ if block
56
+ _schema[a] = block
57
+ else
58
+ _schema[a] = v
59
+ end
60
+ }
54
61
  end
55
62
  end
56
63
  end
@@ -1,3 +1,3 @@
1
1
  module RomFactory
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/rom_factory.rb CHANGED
@@ -1,10 +1,7 @@
1
- require "pry"
2
- require "rom"
3
- require 'rom-repository'
4
- require 'dry-configurable'
1
+ require "dry-configurable"
2
+ require "dry-container"
5
3
 
6
4
  require "rom_factory/version"
7
-
8
5
  require "rom_factory/config"
9
6
  require "rom_factory/builder"
10
7
 
data/rom_factory.gemspec CHANGED
@@ -27,11 +27,15 @@ Gem::Specification.new do |spec|
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ["lib"]
29
29
 
30
- spec.add_dependency "dry-configurable", "~> 0.1.7"
30
+ spec.add_dependency "dry-configurable", "~> 0.1"
31
+ spec.add_dependency "dry-container", "~> 0.4"
32
+
31
33
  spec.add_development_dependency "bundler", "~> 1.12"
32
34
  spec.add_development_dependency "rake", "~> 10.0"
33
35
  spec.add_development_dependency "rspec", "~> 3.0"
34
36
  spec.add_development_dependency "rom", "~> 2.0"
35
37
  spec.add_development_dependency "rom-repository", "~> 0.3.1"
38
+ spec.add_development_dependency "rom-sql", "~> 0.8.0"
39
+ spec.add_development_dependency "sqlite3", "~> 1.3.11"
36
40
  spec.add_development_dependency "pry"
37
41
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rom_factory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Janis Miezitis
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.7
19
+ version: '0.1'
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.1.7
26
+ version: '0.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: dry-container
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.4'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.4'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +108,34 @@ dependencies:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
110
  version: 0.3.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: rom-sql
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.8.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.8.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: sqlite3
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 1.3.11
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 1.3.11
97
139
  - !ruby/object:Gem::Dependency
98
140
  name: pry
99
141
  requirement: !ruby/object:Gem::Requirement