Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
V
VietTH-VenShop
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
4
Merge Requests
4
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tran Hoang Viet
VietTH-VenShop
Commits
2f3c0762
Commit
2f3c0762
authored
Jul 17, 2015
by
Tran Hoang Viet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
VietTH: Add rake update price for products amazon
parent
92e948d5
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
30 additions
and
6 deletions
+30
-6
app/models/product.rb
+1
-1
lib/tasks/aws.rake
+29
-5
No files found.
app/models/product.rb
View file @
2f3c0762
...
@@ -12,7 +12,7 @@ class Product < ActiveRecord::Base
...
@@ -12,7 +12,7 @@ class Product < ActiveRecord::Base
# validates
# validates
validates
:title
,
presence:
true
,
length:
{
maximum:
255
}
validates
:title
,
presence:
true
,
length:
{
maximum:
255
}
validates
:category
,
presence:
true
validates
:category
,
presence:
true
validates
:stock
,
presence:
true
,
numericality:
{
greater_than:
0
}
validates
:stock
,
presence:
true
,
numericality:
{
greater_than
_or_equal_to
:
0
}
enum
product_type:
%i(system amazon)
enum
product_type:
%i(system amazon)
...
...
lib/tasks/aws.rake
View file @
2f3c0762
namespace
:aws
do
namespace
:aws
do
desc
"Get data and update to database"
@request
=
Vacuum
.
new
(
'GB'
)
task
load_data: :environment
do
request
=
Vacuum
.
new
(
'GB'
)
request
.
configure
(
@
request
.
configure
(
aws_access_key_id:
ENV
[
'AWS_ACCESS'
],
aws_access_key_id:
ENV
[
'AWS_ACCESS'
],
aws_secret_access_key:
ENV
[
'AWS_SECRET'
],
aws_secret_access_key:
ENV
[
'AWS_SECRET'
],
associate_tag:
ENV
[
'AWS_TAG'
]
associate_tag:
ENV
[
'AWS_TAG'
]
)
)
desc
"Get data and update to database"
task
load_data: :environment
do
params
=
{
params
=
{
SearchIndex
:
'All'
,
SearchIndex
:
'All'
,
Keywords
:
'*'
,
Keywords
:
'*'
,
...
@@ -17,12 +17,36 @@ namespace :aws do
...
@@ -17,12 +17,36 @@ namespace :aws do
}
}
until
params
[
:ItemPage
]
>
5
until
params
[
:ItemPage
]
>
5
raw_products
=
request
.
item_search
(
query:
params
).
to_h
raw_products
=
@
request
.
item_search
(
query:
params
).
to_h
set_data
(
raw_products
[
'ItemSearchResponse'
][
'Items'
])
set_data
(
raw_products
[
'ItemSearchResponse'
][
'Items'
])
params
[
:ItemPage
]
+=
1
params
[
:ItemPage
]
+=
1
end
end
end
end
desc
'Update price data every one hour'
task
update_price: :environment
do
Product
.
amazon
.
find_each
(
batch_size:
100
)
do
|
product
|
response
=
find_product
(
product
.
asin
)
if
response
.
present?
price
=
response
[
'LowestNewPrice'
].
try
(
:[]
,
'Amount'
).
to_i
product
.
update
(
price:
price
)
if
product
.
price
!=
price
end
end
end
def
find_product
(
asin
)
response
=
@request
.
item_lookup
(
query:
{
ItemId
:
asin
,
ResponseGroup
:
'OfferSummary'
}
).
to_h
if
response
[
'ItemLookupResponse'
][
'Items'
][
'Request'
][
'Errors'
].
blank?
response
[
'ItemLookupResponse'
][
'Items'
][
'Item'
][
'OfferSummary'
]
end
end
def
set_data
(
data
)
def
set_data
(
data
)
return
unless
data
[
'Request'
][
'IsValid'
].
downcase
==
'true'
return
unless
data
[
'Request'
][
'IsValid'
].
downcase
==
'true'
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment