[deploy] Move video_duration_in_minutes_integer to serializer (#10268)
* Move video_duration_in_minutes_integer to serializer * Add data update script to reindex video articles
This commit is contained in:
parent
4afa52f591
commit
7b729bbf06
4 changed files with 23 additions and 5 deletions
|
|
@ -360,10 +360,6 @@ class Article < ApplicationRecord
|
|||
"#{duration[:hours]}:#{minutes_and_seconds}"
|
||||
end
|
||||
|
||||
def video_duration_in_minutes_integer
|
||||
(video_duration_in_seconds.to_i / 60) % 60
|
||||
end
|
||||
|
||||
def update_score
|
||||
new_score = reactions.sum(:points) + Reaction.where(reactable_id: user_id, reactable_type: "User").sum(:points)
|
||||
update_columns(score: new_score,
|
||||
|
|
|
|||
|
|
@ -12,7 +12,9 @@ module Search
|
|||
# however, it really is a string in the format 00:00 which is why we
|
||||
# added an extra field to handle that string
|
||||
attribute :video_duration_string, &:video_duration_in_minutes
|
||||
attribute :video_duration_in_minutes, &:video_duration_in_minutes_integer
|
||||
attribute :video_duration_in_minutes do |article|
|
||||
article.video_duration_in_seconds.to_i / 60
|
||||
end
|
||||
|
||||
attribute :readable_publish_date_string, &:readable_publish_date
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
module DataUpdateScripts
|
||||
class ReindexArticlesWithVideos
|
||||
def run
|
||||
articles = Article.where.not(video: nil).or(Article.where.not(video: ""))
|
||||
articles.find_each(&:index_to_elasticsearch_inline)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -21,4 +21,16 @@ RSpec.describe Search::ArticleSerializer do
|
|||
result = Article::SEARCH_CLASS.index(article.id, data_hash)
|
||||
expect(result["result"]).to eq("created")
|
||||
end
|
||||
|
||||
it "correctly serializes video duration in minutes when video_duration_in_seconds is nil" do
|
||||
data_hash = described_class.new(article).serializable_hash.dig(:data, :attributes)
|
||||
expect(data_hash[:video_duration_in_minutes]).to eq(0)
|
||||
end
|
||||
|
||||
it "correctly serializes video duration in minutes when video_duration_in_seconds is not nil" do
|
||||
duration = (1.hour + 1.minute).to_i
|
||||
allow(article).to receive(:video_duration_in_seconds).and_return(duration)
|
||||
data_hash = described_class.new(article).serializable_hash.dig(:data, :attributes)
|
||||
expect(data_hash[:video_duration_in_minutes]).to eq(61)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue