docbrown/app/services/exporter/articles.rb
Michael Kohl e258e36c92
Remove language settings (#12502)
* Remove language settings

* Remove more language related code

* Remove leftover spec

* Remove language from ES mapping
2021-02-04 08:35:00 +07:00

78 lines
1.5 KiB
Ruby

module Exporter
class Articles
attr_reader :name, :user
def initialize(user)
@name = :articles
@user = user
end
def export(slug: nil)
articles = user.articles
articles = articles.where(slug: slug) if slug.present?
{ "#{name}.json" => jsonify(articles) }
end
private
def allowed_attributes
time_attributes | url_attributes | general_attributes
end
def time_attributes
%i[
created_at
crossposted_at
edited_at
last_comment_at
published_at
]
end
def url_attributes
%i[
canonical_url
feed_source_url
video_closed_caption_track_url
video_source_url
video_thumbnail_url
]
end
def general_attributes
%i[
body_markdown
cached_tag_list
cached_user_name
cached_user_username
comments_count
description
main_image
main_image_background_hex_color
path
public_reactions_count
processed_html
published
published_from_feed
show_comments
slug
social_image
title
video
video_code
]
end
def jsonify(articles)
articles_to_jsonify = []
# load articles in batches and select only needed attributes
articles.select([:id] + allowed_attributes).find_each do |article|
articles_to_jsonify << article
end
articles_to_jsonify.to_json(only: allowed_attributes)
end
end
end