From e6baf2268f26062222b8dfc8f3d5a88887daa3ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com> Date: Tue, 26 Oct 2021 12:11:24 +0200 Subject: [PATCH] added variant urls to medias --- app/models/communication/website/imported/medium.rb | 11 ++++++----- ...nt_urls_to_communication_website_imported_media.rb | 5 +++++ db/schema.rb | 3 ++- 3 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 db/migrate/20211026094556_add_variant_urls_to_communication_website_imported_media.rb diff --git a/app/models/communication/website/imported/medium.rb b/app/models/communication/website/imported/medium.rb index 4a1347d8c..8dbd6853a 100644 --- a/app/models/communication/website/imported/medium.rb +++ b/app/models/communication/website/imported/medium.rb @@ -8,6 +8,7 @@ # filename :string # identifier :string # mime_type :string +# variant_urls :text default([]), is an Array # created_at :datetime # updated_at :datetime # university_id :uuid not null @@ -36,7 +37,7 @@ class Communication::Website::Imported::Medium < ApplicationRecord has_one_attached_deletable :file - after_commit :download_file_from_file_url, on: [:create, :update], if: :saved_change_to_file_url + scope :for_variant_url, -> (variant_url) { where('? = ANY(variant_urls)', variant_url) } def data=(value) super value @@ -46,11 +47,12 @@ class Communication::Website::Imported::Medium < ApplicationRecord self.mime_type = value['mime_type'] self.created_at = value['date_gmt'] self.updated_at = value['modified_gmt'] + self.variant_urls = (value['media_details']['sizes'] || {}).values.map { |variant| + Addressable::URI.parse(variant['source_url']).display_uri.to_s + } end - protected - - def download_file_from_file_url + def load_remote_file! uri = URI(file_url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true @@ -60,5 +62,4 @@ class Communication::Website::Imported::Medium < ApplicationRecord response = http.request(request) file.attach(io: StringIO.new(response.body), filename: filename, content_type: mime_type) end - handle_asynchronously :download_file_from_file_url, queue: 'default' end diff --git a/db/migrate/20211026094556_add_variant_urls_to_communication_website_imported_media.rb b/db/migrate/20211026094556_add_variant_urls_to_communication_website_imported_media.rb new file mode 100644 index 000000000..5e13899d6 --- /dev/null +++ b/db/migrate/20211026094556_add_variant_urls_to_communication_website_imported_media.rb @@ -0,0 +1,5 @@ +class AddVariantUrlsToCommunicationWebsiteImportedMedia < ActiveRecord::Migration[6.1] + def change + add_column :communication_website_imported_media, :variant_urls, :text, array: true, default: [] + end +end diff --git a/db/schema.rb b/db/schema.rb index 6262c6ca3..303bcfee2 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_10_26_035253) do +ActiveRecord::Schema.define(version: 2021_10_26_094556) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" @@ -88,6 +88,7 @@ ActiveRecord::Schema.define(version: 2021_10_26_035253) do t.uuid "website_id", null: false t.string "filename" t.string "mime_type" + t.text "variant_urls", default: [], array: true t.index ["university_id"], name: "index_communication_website_imported_media_on_university_id" t.index ["website_id"], name: "index_communication_website_imported_media_on_website_id" end -- GitLab