From 51f809f951b3d75ff229ac42658fd28450286d25 Mon Sep 17 00:00:00 2001 From: BoHung Chiu Date: Fri, 3 Feb 2023 13:22:39 +0800 Subject: [PATCH] Fix bug and accelerate loading sites list. --- .../admin/admin_modules_controller.rb | 30 ++++++++----------- app/helpers/registered_module_helper.rb | 4 ++- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/app/controllers/admin/admin_modules_controller.rb b/app/controllers/admin/admin_modules_controller.rb index 2962ab4..043f92b 100644 --- a/app/controllers/admin/admin_modules_controller.rb +++ b/app/controllers/admin/admin_modules_controller.rb @@ -137,13 +137,9 @@ class Admin::AdminModulesController < OrbitAdminController def site_list_without_module(rm) registered_sites = [] if !rm.nil? - rss = RegisteredSite.active - rss.each do |rs| - im = InstalledModule.where(:r_module => rm.id, :registered_site_id => rs.id) - if im.count == 0 - registered_sites << rs - end - end + active_ids = RegisteredSite.active.pluck(:id) + already_installed_ids = InstalledModule.where(:r_module => rm.id, :registered_site_id.in => active_ids).pluck(:registered_site_id) + registered_sites = RegisteredSite.where(:id.in=>active_ids - already_installed_ids).order_by(:id=>-1).to_a end registered_sites end @@ -152,18 +148,16 @@ class Admin::AdminModulesController < OrbitAdminController registered_sites = [] times = [] if !rm.nil? - rss = RegisteredSite.active - rss.each do |rs| - if access.nil? - im = InstalledModule.where(:r_module => rm.id, :registered_site_id => rs.id) - else - im = InstalledModule.where(:r_module => rm.id, :registered_site_id => rs.id,:permission_granted => access) - end - if im.count > 0 - registered_sites << rs - times << im.first.created_at.strftime("%Y-%m-%d %H:%M") rescue "" - end + if access.nil? + ims = InstalledModule.where(:r_module => rm.id, :registered_site_id.in => RegisteredSite.active.pluck(:id)) + else + ims = InstalledModule.where(:r_module => rm.id, :registered_site_id.in => RegisteredSite.active.pluck(:id), :permission_granted => access) end + ims_info = ims.pluck(:registered_site_id, :created_at) + ims_info.uniq!{|rs_id, created_at| rs_id} + ims_info = ims_info.to_h + registered_sites = RegisteredSite.where(:id.in=>ims_info.keys).order_by(:id=>-1).to_a + times = registered_sites.map{|rs| ims_info[rs.id].strftime("%Y-%m-%d %H:%M") rescue ""} end [registered_sites, times] end diff --git a/app/helpers/registered_module_helper.rb b/app/helpers/registered_module_helper.rb index dd7149e..05dffde 100644 --- a/app/helpers/registered_module_helper.rb +++ b/app/helpers/registered_module_helper.rb @@ -24,19 +24,21 @@ module RegisteredModuleHelper site.installed_modules << im site.save end - restart_remote_server(site) end def restart_remote_server(site) + params_to_send = {"site_token" => site.site_token} uri = URI.parse("http://#{site.site_domain}/") http = Net::HTTP.new(uri.host,uri.port) request = Net::HTTP::Post.new("/store/restart_server_after_install") + request.body = params_to_send.to_query response = http.request(request) if response.code != "200" uri = URI.parse("https://#{site.site_domain}/") Net::HTTP.start(uri.host, uri.port,:use_ssl => true,open_timeout: 30,read_timeout: 30,verify_mode: OpenSSL::SSL::VERIFY_NONE) do |http| request = Net::HTTP::Post.new("/store/restart_server_after_install") + request.body = params_to_send.to_query response = http.request(request) end end