From b844b188ce5f333ea89f57162b390fd6a8b3a6ed Mon Sep 17 00:00:00 2001 From: Dung Bui Date: Tue, 26 Dec 2023 22:55:32 +0700 Subject: [PATCH 1/4] fix enterprise roles page performance --- .../admin/enterprise_roles_controller.rb | 5 +- app/queries/admin/enterprise_roles_query.rb | 47 +++++++++++++++++++ .../admin/enterprise_roles/_data.html.haml | 7 ++- 3 files changed, 52 insertions(+), 7 deletions(-) create mode 100644 app/queries/admin/enterprise_roles_query.rb diff --git a/app/controllers/admin/enterprise_roles_controller.rb b/app/controllers/admin/enterprise_roles_controller.rb index 79a52d8b41..4c0aeffc86 100644 --- a/app/controllers/admin/enterprise_roles_controller.rb +++ b/app/controllers/admin/enterprise_roles_controller.rb @@ -3,9 +3,8 @@ module Admin class EnterpriseRolesController < Admin::ResourceController def index - @enterprise_roles = EnterpriseRole.by_user_email - @users = Spree::User.order('spree_users.email') - @my_enterprises = @all_enterprises = Enterprise.by_name + @enterprise_roles, @users, @all_enterprises = Admin::EnterpriseRolesQuery.query + @my_enterprises = @all_enterprises end def create diff --git a/app/queries/admin/enterprise_roles_query.rb b/app/queries/admin/enterprise_roles_query.rb new file mode 100644 index 0000000000..6cd1f53c2d --- /dev/null +++ b/app/queries/admin/enterprise_roles_query.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +module Admin + class EnterpriseRolesQuery + EnterpriseRoleStruct = Struct.new(:id, :user_id, :enterprise_id, :user_, :enterprise_name) + UserStruct = Struct.new(:id, :email) + EnterpriseStruct = Struct.new(:id, :name) + + class << self + def query + enterprise_roles = query_enterprice_roles + users = query_users + enterprises = query_enterprises + + [enterprise_roles, users, enterprises] + end + + private + + def query_enterprice_roles + EnterpriseRole.joins(:user, :enterprise).order('spree_users.email ASC'). + pluck(:id, :user_id, :enterprise_id, 'spree_users.email', 'enterprises.name'). + map do |data| + id, user_id, enterprise_id, user_email, enterprise_name = data + + { id:, user_id:, enterprise_id:, user_email:, enterprise_name: } + end + end + + def query_users + Spree::User.order(:email).pluck(:id, :email).map do |data| + id, email = data + + { id:, email: } + end + end + + def query_enterprises + Enterprise.order(:name).pluck(:id, :name).map do |data| + id, name = data + + { id:, name: } + end + end + end + end +end diff --git a/app/views/admin/enterprise_roles/_data.html.haml b/app/views/admin/enterprise_roles/_data.html.haml index d24fb584a7..a1b6b3472e 100644 --- a/app/views/admin/enterprise_roles/_data.html.haml +++ b/app/views/admin/enterprise_roles/_data.html.haml @@ -1,4 +1,3 @@ -= admin_inject_enterprise_roles(@enterprise_roles) -= admin_inject_users(@users) -= admin_inject_enterprises(@my_enterprises, @all_enterprises) - += admin_inject_json('ofn.admin', 'enterpriseRoles', @enterprise_roles) += admin_inject_json('ofn.admin', 'users', @users) += admin_inject_json('ofn.admin', 'my_enterprises', @my_enterprises) + admin_inject_json('ofn.admin', 'all_enterprises', @all_enterprises) From f1da550912eecac3e4ccc88551132549ae55e03a Mon Sep 17 00:00:00 2001 From: Dung Bui Date: Tue, 26 Dec 2023 23:22:53 +0700 Subject: [PATCH 2/4] remove unused structs --- app/queries/admin/enterprise_roles_query.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/queries/admin/enterprise_roles_query.rb b/app/queries/admin/enterprise_roles_query.rb index 6cd1f53c2d..6b08cb3e6c 100644 --- a/app/queries/admin/enterprise_roles_query.rb +++ b/app/queries/admin/enterprise_roles_query.rb @@ -2,10 +2,6 @@ module Admin class EnterpriseRolesQuery - EnterpriseRoleStruct = Struct.new(:id, :user_id, :enterprise_id, :user_, :enterprise_name) - UserStruct = Struct.new(:id, :email) - EnterpriseStruct = Struct.new(:id, :name) - class << self def query enterprise_roles = query_enterprice_roles From ab6a7e307bb85bc2e9adb9e716c9a5613f9db73c Mon Sep 17 00:00:00 2001 From: Dung Bui Date: Wed, 3 Jan 2024 22:36:58 +0700 Subject: [PATCH 3/4] remove unused helpers --- app/helpers/admin/injection_helper.rb | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/app/helpers/admin/injection_helper.rb b/app/helpers/admin/injection_helper.rb index f85d9a6f54..3585fb0817 100644 --- a/app/helpers/admin/injection_helper.rb +++ b/app/helpers/admin/injection_helper.rb @@ -27,13 +27,6 @@ module Admin Api::Admin::EnterpriseRelationshipSerializer end - def admin_inject_enterprise_roles(enterprise_roles) - admin_inject_json_ams_array "ofn.admin", - "enterpriseRoles", - enterprise_roles, - Api::Admin::EnterpriseRoleSerializer - end - def admin_inject_payment_methods(payment_methods) admin_inject_json_ams_array "admin.paymentMethods", "paymentMethods", @@ -137,13 +130,6 @@ module Admin Api::Admin::TaxonSerializer end - def admin_inject_users(users) - admin_inject_json_ams_array "ofn.admin", - "users", - users, - Api::Admin::UserSerializer - end - def admin_inject_variant_overrides(variant_overrides) admin_inject_json_ams_array "admin.variantOverrides", "variantOverrides", From 14d755d7063ace37bc467c9eaff8103885e8c811 Mon Sep 17 00:00:00 2001 From: Dung Bui Date: Thu, 4 Jan 2024 07:55:00 +0700 Subject: [PATCH 4/4] fix typo --- app/queries/admin/enterprise_roles_query.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/queries/admin/enterprise_roles_query.rb b/app/queries/admin/enterprise_roles_query.rb index 6b08cb3e6c..4828bb8ec1 100644 --- a/app/queries/admin/enterprise_roles_query.rb +++ b/app/queries/admin/enterprise_roles_query.rb @@ -4,7 +4,7 @@ module Admin class EnterpriseRolesQuery class << self def query - enterprise_roles = query_enterprice_roles + enterprise_roles = query_enterprise_roles users = query_users enterprises = query_enterprises @@ -13,7 +13,7 @@ module Admin private - def query_enterprice_roles + def query_enterprise_roles EnterpriseRole.joins(:user, :enterprise).order('spree_users.email ASC'). pluck(:id, :user_id, :enterprise_id, 'spree_users.email', 'enterprises.name'). map do |data|