From 76d88ba749df39695b71b6c6dfc42d0215efb0e9 Mon Sep 17 00:00:00 2001 From: neryam3 Date: Fri, 18 Oct 2024 17:08:10 -0300 Subject: [PATCH 01/10] first commit --- lib/hq/graphql.rb | 2 ++ lib/hq/graphql/field_extension/paginated_arguments.rb | 2 +- lib/hq/graphql/inputs.rb | 1 + lib/hq/graphql/types.rb | 5 +++++ spec/internal/app/models/manager.rb | 2 +- 5 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/hq/graphql.rb b/lib/hq/graphql.rb index 0f2a506..862d528 100644 --- a/lib/hq/graphql.rb +++ b/lib/hq/graphql.rb @@ -41,6 +41,8 @@ def self.excluded_inputs end def self.lookup_resource(klass) + # klass = HasHelpers::User if klass.to_s == "User" + # byebug if klass.to_s == "HasHelpers::User" [klass, klass.base_class, klass.superclass].lazy.map do |k| config.resource_lookup.call(k) || resources.detect { |r| r.model_klass == k } end.reject(&:nil?).first diff --git a/lib/hq/graphql/field_extension/paginated_arguments.rb b/lib/hq/graphql/field_extension/paginated_arguments.rb index 8942d58..39fe559 100644 --- a/lib/hq/graphql/field_extension/paginated_arguments.rb +++ b/lib/hq/graphql/field_extension/paginated_arguments.rb @@ -11,7 +11,7 @@ def apply field.argument :offset, Integer, required: false field.argument :limit, Integer, required: false field.argument :sort_order, Enum::SortOrder, required: false - + # byebug resource = ::HQ::GraphQL.lookup_resource(options[:klass]) enum = resource ? resource.sort_fields_enum : ::HQ::GraphQL::Enum::SortBy field.argument :sort_by, enum, required: false diff --git a/lib/hq/graphql/inputs.rb b/lib/hq/graphql/inputs.rb index 18bfab8..2216d66 100644 --- a/lib/hq/graphql/inputs.rb +++ b/lib/hq/graphql/inputs.rb @@ -23,6 +23,7 @@ class << self private def klass_for(klass_or_string) + klass_or_string = HasHelpers::User if klass_or_string.to_s == "User" klass = klass_or_string.is_a?(String) ? klass_or_string.constantize : klass_or_string resource = ::HQ::GraphQL.lookup_resource(klass) diff --git a/lib/hq/graphql/types.rb b/lib/hq/graphql/types.rb index cf5725e..03c4974 100644 --- a/lib/hq/graphql/types.rb +++ b/lib/hq/graphql/types.rb @@ -13,6 +13,10 @@ class Error < StandardError def self.registry @registry ||= Hash.new do |hash, options| klass, nil_klass = Array(options) + # byebug + # Aca sigue llegando solo User!!!! + # byebug if klass.to_s == "User" + klass = HasHelpers::User if klass.to_s == "User" hash[options] = nil_klass ? nil_query_object(klass) : klass_for(klass) end end @@ -70,6 +74,7 @@ def klass_for(klass_or_string) end def find_klass(klass_or_string, method) + klass_or_string = HasHelpers::User if klass_or_string.to_s == "User" klass = klass_or_string.is_a?(String) ? klass_or_string.constantize : klass_or_string resource = ::HQ::GraphQL.lookup_resource(klass) diff --git a/spec/internal/app/models/manager.rb b/spec/internal/app/models/manager.rb index 2ee8e44..e70b9df 100644 --- a/spec/internal/app/models/manager.rb +++ b/spec/internal/app/models/manager.rb @@ -1,7 +1,7 @@ class Manager < ::ActiveRecord::Base belongs_to :organization - has_many :active_users, -> { where(inactive: [nil, false]) }, class_name: "User" + has_many :active_users, -> { where(inactive: [nil, false]) }, class_name: "::HasHelpers::User" has_many :users, inverse_of: :organization has_many :advisors, through: :users has_many :not_joe, -> { where.not(name: "Joe" ) }, through: :users, source: :advisor From ca39b8692fda73c10f837ed119b0dd759a4101de Mon Sep 17 00:00:00 2001 From: neryam3 Date: Thu, 31 Oct 2024 18:00:10 -0300 Subject: [PATCH 02/10] organization updated for specs --- lib/hq/graphql/types.rb | 2 +- spec/internal/app/models/advisor.rb | 2 +- spec/internal/app/models/manager.rb | 5 +++-- spec/internal/app/models/user.rb | 3 ++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/hq/graphql/types.rb b/lib/hq/graphql/types.rb index 03c4974..843fd0f 100644 --- a/lib/hq/graphql/types.rb +++ b/lib/hq/graphql/types.rb @@ -15,7 +15,7 @@ def self.registry klass, nil_klass = Array(options) # byebug # Aca sigue llegando solo User!!!! - # byebug if klass.to_s == "User" + byebug if klass.to_s == "User" klass = HasHelpers::User if klass.to_s == "User" hash[options] = nil_klass ? nil_query_object(klass) : klass_for(klass) end diff --git a/spec/internal/app/models/advisor.rb b/spec/internal/app/models/advisor.rb index 381bedb..b5b22a5 100644 --- a/spec/internal/app/models/advisor.rb +++ b/spec/internal/app/models/advisor.rb @@ -1,5 +1,5 @@ class Advisor < ActiveRecord::Base - belongs_to :organization + belongs_to :organization, class_name: "::HasHelpers::Organization" def hydrate end diff --git a/spec/internal/app/models/manager.rb b/spec/internal/app/models/manager.rb index e70b9df..73e66dd 100644 --- a/spec/internal/app/models/manager.rb +++ b/spec/internal/app/models/manager.rb @@ -1,8 +1,9 @@ class Manager < ::ActiveRecord::Base - belongs_to :organization + belongs_to :organization, class_name: "::HasHelpers::Organization" has_many :active_users, -> { where(inactive: [nil, false]) }, class_name: "::HasHelpers::User" - has_many :users, inverse_of: :organization + # has_many :users, inverse_of: :organization + has_many :users, class_name: "::HasHelpers::User" has_many :advisors, through: :users has_many :not_joe, -> { where.not(name: "Joe" ) }, through: :users, source: :advisor end diff --git a/spec/internal/app/models/user.rb b/spec/internal/app/models/user.rb index c96e836..d1bf213 100644 --- a/spec/internal/app/models/user.rb +++ b/spec/internal/app/models/user.rb @@ -1,7 +1,8 @@ class User < ::ActiveRecord::Base belongs_to :advisor, optional: true belongs_to :manager, optional: true - belongs_to :organization + has_many :user_organizations, dependent: :destroy, class_name: "::HasHelpers::UserOrganization" + has_many :organizations, class_name: "::HasHelpers::Organization", through: :user_organizations def hydrate end From ca8b13c59d16384a0d6202b139f95b24c916f74b Mon Sep 17 00:00:00 2001 From: neryam3 Date: Tue, 5 Nov 2024 17:38:33 -0300 Subject: [PATCH 03/10] gema updated --- lib/hq/graphql/inputs.rb | 3 ++- lib/hq/graphql/types.rb | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/hq/graphql/inputs.rb b/lib/hq/graphql/inputs.rb index 2216d66..9f37ce8 100644 --- a/lib/hq/graphql/inputs.rb +++ b/lib/hq/graphql/inputs.rb @@ -23,7 +23,8 @@ class << self private def klass_for(klass_or_string) - klass_or_string = HasHelpers::User if klass_or_string.to_s == "User" + # byebug if klass_or_string.to_s == "User" + # klass_or_string = HasHelpers::User if klass_or_string.to_s == "User" klass = klass_or_string.is_a?(String) ? klass_or_string.constantize : klass_or_string resource = ::HQ::GraphQL.lookup_resource(klass) diff --git a/lib/hq/graphql/types.rb b/lib/hq/graphql/types.rb index 843fd0f..58c099b 100644 --- a/lib/hq/graphql/types.rb +++ b/lib/hq/graphql/types.rb @@ -15,8 +15,8 @@ def self.registry klass, nil_klass = Array(options) # byebug # Aca sigue llegando solo User!!!! - byebug if klass.to_s == "User" - klass = HasHelpers::User if klass.to_s == "User" + # byebug if klass.to_s == "User" + # klass = HasHelpers::User if klass.to_s == "User" hash[options] = nil_klass ? nil_query_object(klass) : klass_for(klass) end end @@ -74,7 +74,8 @@ def klass_for(klass_or_string) end def find_klass(klass_or_string, method) - klass_or_string = HasHelpers::User if klass_or_string.to_s == "User" + # byebug if klass_or_string.to_s == "User" + # klass_or_string = HasHelpers::User if klass_or_string.to_s == "User" klass = klass_or_string.is_a?(String) ? klass_or_string.constantize : klass_or_string resource = ::HQ::GraphQL.lookup_resource(klass) From 0a4713443be371e2e9790e7c35e11457bbd46014 Mon Sep 17 00:00:00 2001 From: neryam3 Date: Wed, 20 Nov 2024 13:52:16 -0300 Subject: [PATCH 04/10] erased commented codes --- lib/hq/graphql.rb | 2 -- lib/hq/graphql/field_extension/paginated_arguments.rb | 2 +- lib/hq/graphql/inputs.rb | 2 -- lib/hq/graphql/types.rb | 6 ------ spec/internal/app/models/manager.rb | 4 ++-- 5 files changed, 3 insertions(+), 13 deletions(-) diff --git a/lib/hq/graphql.rb b/lib/hq/graphql.rb index 862d528..0f2a506 100644 --- a/lib/hq/graphql.rb +++ b/lib/hq/graphql.rb @@ -41,8 +41,6 @@ def self.excluded_inputs end def self.lookup_resource(klass) - # klass = HasHelpers::User if klass.to_s == "User" - # byebug if klass.to_s == "HasHelpers::User" [klass, klass.base_class, klass.superclass].lazy.map do |k| config.resource_lookup.call(k) || resources.detect { |r| r.model_klass == k } end.reject(&:nil?).first diff --git a/lib/hq/graphql/field_extension/paginated_arguments.rb b/lib/hq/graphql/field_extension/paginated_arguments.rb index 39fe559..8942d58 100644 --- a/lib/hq/graphql/field_extension/paginated_arguments.rb +++ b/lib/hq/graphql/field_extension/paginated_arguments.rb @@ -11,7 +11,7 @@ def apply field.argument :offset, Integer, required: false field.argument :limit, Integer, required: false field.argument :sort_order, Enum::SortOrder, required: false - # byebug + resource = ::HQ::GraphQL.lookup_resource(options[:klass]) enum = resource ? resource.sort_fields_enum : ::HQ::GraphQL::Enum::SortBy field.argument :sort_by, enum, required: false diff --git a/lib/hq/graphql/inputs.rb b/lib/hq/graphql/inputs.rb index 9f37ce8..18bfab8 100644 --- a/lib/hq/graphql/inputs.rb +++ b/lib/hq/graphql/inputs.rb @@ -23,8 +23,6 @@ class << self private def klass_for(klass_or_string) - # byebug if klass_or_string.to_s == "User" - # klass_or_string = HasHelpers::User if klass_or_string.to_s == "User" klass = klass_or_string.is_a?(String) ? klass_or_string.constantize : klass_or_string resource = ::HQ::GraphQL.lookup_resource(klass) diff --git a/lib/hq/graphql/types.rb b/lib/hq/graphql/types.rb index 58c099b..cf5725e 100644 --- a/lib/hq/graphql/types.rb +++ b/lib/hq/graphql/types.rb @@ -13,10 +13,6 @@ class Error < StandardError def self.registry @registry ||= Hash.new do |hash, options| klass, nil_klass = Array(options) - # byebug - # Aca sigue llegando solo User!!!! - # byebug if klass.to_s == "User" - # klass = HasHelpers::User if klass.to_s == "User" hash[options] = nil_klass ? nil_query_object(klass) : klass_for(klass) end end @@ -74,8 +70,6 @@ def klass_for(klass_or_string) end def find_klass(klass_or_string, method) - # byebug if klass_or_string.to_s == "User" - # klass_or_string = HasHelpers::User if klass_or_string.to_s == "User" klass = klass_or_string.is_a?(String) ? klass_or_string.constantize : klass_or_string resource = ::HQ::GraphQL.lookup_resource(klass) diff --git a/spec/internal/app/models/manager.rb b/spec/internal/app/models/manager.rb index 73e66dd..d94d744 100644 --- a/spec/internal/app/models/manager.rb +++ b/spec/internal/app/models/manager.rb @@ -1,9 +1,9 @@ class Manager < ::ActiveRecord::Base belongs_to :organization, class_name: "::HasHelpers::Organization" - + has_many :user_organizations, class_name: "::HasHelpers::UserOrganization" has_many :active_users, -> { where(inactive: [nil, false]) }, class_name: "::HasHelpers::User" # has_many :users, inverse_of: :organization - has_many :users, class_name: "::HasHelpers::User" + has_many :users, class_name: "::HasHelpers::User", through: :user_organizations has_many :advisors, through: :users has_many :not_joe, -> { where.not(name: "Joe" ) }, through: :users, source: :advisor end From 92be522ae393dbacd00c3459eb9bd4246a228556 Mon Sep 17 00:00:00 2001 From: neryam3 Date: Wed, 20 Nov 2024 14:05:38 -0300 Subject: [PATCH 05/10] Update user.rb --- spec/internal/app/models/user.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/internal/app/models/user.rb b/spec/internal/app/models/user.rb index d1bf213..21f045a 100644 --- a/spec/internal/app/models/user.rb +++ b/spec/internal/app/models/user.rb @@ -1,8 +1,8 @@ class User < ::ActiveRecord::Base belongs_to :advisor, optional: true belongs_to :manager, optional: true - has_many :user_organizations, dependent: :destroy, class_name: "::HasHelpers::UserOrganization" - has_many :organizations, class_name: "::HasHelpers::Organization", through: :user_organizations + has_many :user_organizations, dependent: :destroy, class_name: "::HasHelpers::UserOrganization", inverse_of: :user + has_many :organizations, class_name: "::HasHelpers::Organization", through: :user_organizations, inverse_of: :users def hydrate end From 4438f41306f369e4eeef9f8a5efa8c838c846cd8 Mon Sep 17 00:00:00 2001 From: neryam3 Date: Fri, 10 Jan 2025 21:07:49 -0300 Subject: [PATCH 06/10] updated after rebase --- spec/lib/graphql/object_association_spec.rb | 2 +- spec/lib/graphql/paginated_association_loader_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/lib/graphql/object_association_spec.rb b/spec/lib/graphql/object_association_spec.rb index b34cb75..25df4e9 100644 --- a/spec/lib/graphql/object_association_spec.rb +++ b/spec/lib/graphql/object_association_spec.rb @@ -14,7 +14,7 @@ scope do |name: nil| if name - User.where(name: name) + ::HasHelpers::User.where(name: name) end end end diff --git a/spec/lib/graphql/paginated_association_loader_spec.rb b/spec/lib/graphql/paginated_association_loader_spec.rb index 88434a1..15b57ac 100644 --- a/spec/lib/graphql/paginated_association_loader_spec.rb +++ b/spec/lib/graphql/paginated_association_loader_spec.rb @@ -90,7 +90,7 @@ def load(association, **options) user3.update(advisor: advisor3) # Create dummy data to verify data is properly filtered - other_user = ::User.find_by(manager: manager2) + other_user = ::HasHelpers::User.find_by(manager: manager2) 2.times do advisor = ::FactoryBot.create(:advisor, organization: organization) other_user.update(advisor: advisor) From 98389a6db08e6aac386ad46863c77a4fa34bb615 Mon Sep 17 00:00:00 2001 From: neryam3 Date: Wed, 22 Jan 2025 10:17:17 -0300 Subject: [PATCH 07/10] spec updated --- spec/internal/app/models/user.rb | 5 +++-- spec/internal/app/models/user_organization.rb | 2 ++ spec/lib/graphql/types_spec.rb | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 spec/internal/app/models/user_organization.rb diff --git a/spec/internal/app/models/user.rb b/spec/internal/app/models/user.rb index 21f045a..9367343 100644 --- a/spec/internal/app/models/user.rb +++ b/spec/internal/app/models/user.rb @@ -1,8 +1,9 @@ class User < ::ActiveRecord::Base belongs_to :advisor, optional: true belongs_to :manager, optional: true - has_many :user_organizations, dependent: :destroy, class_name: "::HasHelpers::UserOrganization", inverse_of: :user - has_many :organizations, class_name: "::HasHelpers::Organization", through: :user_organizations, inverse_of: :users + belongs_to :organization + # has_many :user_organizations, dependent: :destroy, class_name: "::HasHelpers::UserOrganization", inverse_of: :user + # has_many :organizations, class_name: "::HasHelpers::Organization", through: :user_organizations, inverse_of: :users def hydrate end diff --git a/spec/internal/app/models/user_organization.rb b/spec/internal/app/models/user_organization.rb new file mode 100644 index 0000000..2bd6961 --- /dev/null +++ b/spec/internal/app/models/user_organization.rb @@ -0,0 +1,2 @@ +class UserOrganization < ::ActiveRecord::Base +end diff --git a/spec/lib/graphql/types_spec.rb b/spec/lib/graphql/types_spec.rb index e8b7585..236531a 100644 --- a/spec/lib/graphql/types_spec.rb +++ b/spec/lib/graphql/types_spec.rb @@ -36,7 +36,7 @@ end it "raises an exception for unknown types" do - expect { described_class[Organization] }.to raise_error(described_class::Error) + expect { described_class[::HasHelpers::Organization] }.to raise_error(described_class::Error) end it "works with sti" do From 3252517b4002b13d52d6baceb47388aba5c198d5 Mon Sep 17 00:00:00 2001 From: neryam3 Date: Mon, 10 Feb 2025 10:09:50 -0300 Subject: [PATCH 08/10] Update graphql.rb --- lib/hq/graphql.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/hq/graphql.rb b/lib/hq/graphql.rb index 0f2a506..ca60fd6 100644 --- a/lib/hq/graphql.rb +++ b/lib/hq/graphql.rb @@ -41,6 +41,7 @@ def self.excluded_inputs end def self.lookup_resource(klass) + klass = HasHelpers::Organization if klass.to_s == "Organization" [klass, klass.base_class, klass.superclass].lazy.map do |k| config.resource_lookup.call(k) || resources.detect { |r| r.model_klass == k } end.reject(&:nil?).first From 10337fe89afe3d6276bbf77f6ad6d34869510197 Mon Sep 17 00:00:00 2001 From: neryam3 Date: Mon, 10 Feb 2025 10:38:18 -0300 Subject: [PATCH 09/10] Update graphql.rb --- lib/hq/graphql.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/hq/graphql.rb b/lib/hq/graphql.rb index ca60fd6..5f6da81 100644 --- a/lib/hq/graphql.rb +++ b/lib/hq/graphql.rb @@ -41,7 +41,11 @@ def self.excluded_inputs end def self.lookup_resource(klass) - klass = HasHelpers::Organization if klass.to_s == "Organization" + if klass.to_s == "Organization" + klass = HasHelpers::Organization + elsif klass.to_s == "User" + klass = HasHelpers::User if klass.to_s == "User" + end [klass, klass.base_class, klass.superclass].lazy.map do |k| config.resource_lookup.call(k) || resources.detect { |r| r.model_klass == k } end.reject(&:nil?).first From 67fbe8e814bc2c012ca0c59a4d7e181e1e1c7941 Mon Sep 17 00:00:00 2001 From: neryam3 Date: Mon, 10 Feb 2025 11:24:11 -0300 Subject: [PATCH 10/10] Update graphql.rb --- lib/hq/graphql.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/hq/graphql.rb b/lib/hq/graphql.rb index 5f6da81..0e90e0d 100644 --- a/lib/hq/graphql.rb +++ b/lib/hq/graphql.rb @@ -44,7 +44,7 @@ def self.lookup_resource(klass) if klass.to_s == "Organization" klass = HasHelpers::Organization elsif klass.to_s == "User" - klass = HasHelpers::User if klass.to_s == "User" + klass = HasHelpers::User end [klass, klass.base_class, klass.superclass].lazy.map do |k| config.resource_lookup.call(k) || resources.detect { |r| r.model_klass == k }