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 +4 -4
- data/lib/rom_factory/builder.rb +30 -23
- data/lib/rom_factory/version.rb +1 -1
- data/lib/rom_factory.rb +2 -5
- data/rom_factory.gemspec +5 -1
- metadata +45 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f75acf0aa7b436ae09de80afca3d384cfcd89c2b
         | 
| 4 | 
            +
              data.tar.gz: 638cd6b2d05ecfc3ffb573621c2d97f4f8360233
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: addfb3fa009d20bf7449e6c3e84ea0d81d50cd3198caaaaecc543a8cbef6c65c798b1b14c3882b8582a35a2a21cbafa05bb653e1ac63aae3507cd189668fa326
         | 
| 7 | 
            +
              data.tar.gz: 36b672e490acec16b9c6a98fbf4275f64be5fc298d7556eb99900b7ed66c9095619b1434f1b95884b3702f97b53c34b1dcb05fdaf739bef438907c9793a70d6b
         | 
    
        data/lib/rom_factory/builder.rb
    CHANGED
    
    | @@ -8,22 +8,14 @@ module RomFactory | |
| 8 8 |  | 
| 9 9 | 
             
                def self.define(&block)
         | 
| 10 10 | 
             
                  factory = new(&block)
         | 
| 11 | 
            -
                  raise ArgumentError, "Factory #{factory. | 
| 12 | 
            -
                  container.register(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 | 
            -
                   | 
| 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 | 
            -
                  @ | 
| 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 | 
            -
                 | 
| 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 | 
            -
                 | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
                     | 
| 50 | 
            -
                       | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 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
         | 
    
        data/lib/rom_factory/version.rb
    CHANGED
    
    
    
        data/lib/rom_factory.rb
    CHANGED
    
    
    
        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 | 
| 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. | 
| 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 | 
| 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 | 
| 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
         |