mercadolibre_rails 0.1 → 0.2

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
  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.