mercadolibre_rails 0.1 → 0.2

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
  SHA256:
3
- metadata.gz: a4a6bf3a03b3c04a197cd843986e13c4389639502ffe2dc75a60c7b575b68a96
4
- data.tar.gz: 5d6cdf7540de334a6141a7cc5f44cd76ca83bbe0038f3d37cb8861220b7e3316
3
+ metadata.gz: 18f52d0362d633577e38e3a9bf61d5beab759a6fe3a8ee271b48d454e2e61b5f
4
+ data.tar.gz: ed5ecdb66145691b7a8a84ad13c15fb97fbbc4d808bf3ea5b059ef4ee689831d
5
5
  SHA512:
6
- metadata.gz: 900cf4b4a65596577f20ce2f5b861858fad58db5480291b4b4538b88eaa382be5214176a080d48acc0eb8b363471102f284ecb68e75f9209849962523ddb9e75
7
- data.tar.gz: ddd38e3394b138f1fa90b92d8ca0d1019ceb4e3e155f1f70ce95d8eb504066398173f7a592dacbf13f0f096667e53019d1835ba08fca12c1530c287fd6dcb58a
6
+ metadata.gz: 2b4341c850e11c460b70ff98fd9b1dabfd9adcba346d35078d481a3a8c7c27e01b91279dd7dcd736e9484f79764ab5d04c7fd0efcd7fd5aa04cf00a2db4594b0
7
+ data.tar.gz: b72f9cf83de2fb5b1bb64940a82d16ff407ad1d60504ab038a4c8522d31cf23ac9bc374acdb5fa25fab289870724f7531a2ce651c730087fd496e913978db773
data/MIT-LICENSE CHANGED
File without changes
data/README.md CHANGED
@@ -14,11 +14,7 @@ gem 'mercadolibre_rails'
14
14
  And then execute:
15
15
  ```bash
16
16
  $ bundle
17
- ```
18
-
19
- Or install it yourself as:
20
- ```bash
21
- $ gem install mercadolibre_rails
17
+ $ rails db:migrate
22
18
  ```
23
19
 
24
20
  ## Contributing
data/Rakefile CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,34 @@
1
+ require 'mercadolibre_api'
2
+
3
+ module MercadolibreRails
4
+ class Product < ApplicationRecord
5
+ belongs_to :seller, optional: true
6
+ belongs_to :site, optional: true
7
+
8
+ validates_presence_of :mercadolibre_id
9
+ validates_uniqueness_of :mercadolibre_id, scope: :site_id
10
+
11
+ delegate :code, to: :site, prefix: true
12
+ after_create_commit :update_metadata
13
+
14
+ def self.create_from(url:)
15
+ ml_id = MercadolibreApi::Products::Queries::GetID.run!(product_url: url)
16
+ site_code = MercadolibreApi::Sites::Queries::GetCode.run!(product_url: url)
17
+
18
+ return unless ml_id && site_code
19
+
20
+ mercadolibre_site = MercadolibreRails::Site.find_or_create_by!(code: site_code)
21
+ mercadolibre_site.products.find_or_create_by!(mercadolibre_id: ml_id)
22
+ end
23
+
24
+ def update_metadata
25
+ ml_product = MercadolibreApi::Products::Queries::Find.run!(product_id: mercadolibre_id)
26
+ ml_seller = Seller.find_or_create_by!(mercadolibre_id: ml_product[:seller_id])
27
+
28
+ update!(seller: ml_seller, title: ml_product[:title], price: ml_product[:price],
29
+ currency_code: ml_product[:currency_id], sold_quantity: ml_product[:sold_quantity],
30
+ description: ml_product[:description], status: ml_product[:status],
31
+ latitude: ml_product.dig(:geolocation, :latitude), longitude: ml_product.dig(:geolocation, :longitude))
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,5 @@
1
+ module MercadolibreRails
2
+ class Seller < ApplicationRecord
3
+ has_many :products, dependent: :destroy
4
+ end
5
+ end
@@ -1,5 +1,7 @@
1
1
  module MercadolibreRails
2
2
  class Site < ApplicationRecord
3
+ has_many :products, dependent: :destroy
4
+
3
5
  validates_presence_of :code
4
6
  validates_uniqueness_of :code
5
7
  end
data/config/routes.rb CHANGED
File without changes
@@ -0,0 +1,17 @@
1
+ class CreateMercadolibreRailsProducts < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :mercadolibre_rails_products do |t|
4
+ t.string :mercadolibre_id, null: false, index: { unique: true }
5
+ t.string :title
6
+ t.decimal :price, precision: 8, scale: 2
7
+ t.string :currency_code
8
+ t.integer :sold_quantity, default: 0
9
+ t.text :description
10
+ t.string :status, default: :sync_needed
11
+ t.decimal :latitude, precision: 10, scale: 6
12
+ t.decimal :longitude, precision: 10, scale: 6
13
+
14
+ t.timestamps
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ class CreateMercadolibreRailsSellers < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :mercadolibre_rails_sellers do |t|
4
+ t.integer :mercadolibre_id, null: false, index: { unique: true }
5
+
6
+ t.timestamps
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ class AddSiteToProducts < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_reference :mercadolibre_rails_products, :site, foreign_key: true
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddSellerToMercadolibreRailsProducts < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_reference :mercadolibre_rails_products, :seller, foreign_key: true
4
+ end
5
+ end
@@ -3,5 +3,11 @@
3
3
  module MercadolibreRails
4
4
  class Engine < ::Rails::Engine
5
5
  isolate_namespace MercadolibreRails
6
+
7
+ initializer 'mercadolibre_rails', before: :load_config_initializers do |_app|
8
+ config.paths['db/migrate'].expanded.each do |expanded_path|
9
+ Rails.application.config.paths['db/migrate'] << expanded_path
10
+ end
11
+ end
6
12
  end
7
13
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MercadolibreRails
4
- VERSION = '0.1'
4
+ VERSION = '0.2'
5
5
  end
@@ -3,5 +3,4 @@
3
3
  require 'mercadolibre_rails/engine'
4
4
 
5
5
  module MercadolibreRails
6
- # Your code goes here...
7
6
  end
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mercadolibre_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Gonzaga
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-04 00:00:00.000000000 Z
11
+ date: 2018-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mercadolibre_api
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.3'
19
+ version: '0.8'
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.3'
26
+ version: '0.8'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rails
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 5.2.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: redis
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 4.0.2
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 4.0.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 10.0.2
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 10.0.2
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: factory_bot_rails
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -126,10 +154,16 @@ files:
126
154
  - app/jobs/mercadolibre_rails/application_job.rb
127
155
  - app/mailers/mercadolibre_rails/application_mailer.rb
128
156
  - app/models/mercadolibre_rails/application_record.rb
157
+ - app/models/mercadolibre_rails/product.rb
158
+ - app/models/mercadolibre_rails/seller.rb
129
159
  - app/models/mercadolibre_rails/site.rb
130
160
  - app/views/layouts/mercadolibre_rails/application.html.erb
131
161
  - config/routes.rb
132
162
  - db/migrate/20181003152541_create_mercadolibre_rails_sites.rb
163
+ - db/migrate/20181004142438_create_mercadolibre_rails_products.rb
164
+ - db/migrate/20181004143133_create_mercadolibre_rails_sellers.rb
165
+ - db/migrate/20181004143244_add_site_to_products.rb
166
+ - db/migrate/20181004150308_add_seller_to_mercadolibre_rails_products.rb
133
167
  - lib/mercadolibre_rails.rb
134
168
  - lib/mercadolibre_rails/engine.rb
135
169
  - lib/mercadolibre_rails/version.rb
@@ -154,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
154
188
  version: '0'
155
189
  requirements: []
156
190
  rubyforge_project:
157
- rubygems_version: 2.7.7
191
+ rubygems_version: 2.7.6
158
192
  signing_key:
159
193
  specification_version: 4
160
194
  summary: Library to integrate MercadolibreApi into a Rails Project.