rom_factory 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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