diff options
Diffstat (limited to 'app/models/concerns/has_integrations.rb')
-rw-r--r-- | app/models/concerns/has_integrations.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/app/models/concerns/has_integrations.rb b/app/models/concerns/has_integrations.rb new file mode 100644 index 00000000000..b2775f4cbb2 --- /dev/null +++ b/app/models/concerns/has_integrations.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +module HasIntegrations + extend ActiveSupport::Concern + + class_methods do + def with_custom_integration_for(integration, page = nil, per = nil) + custom_integration_project_ids = Integration + .select(:project_id) + .where(type: integration.type) + .where(inherit_from_id: nil) + .where.not(project_id: nil) + .page(page) + .per(per) + + Project.where(id: custom_integration_project_ids) + end + + def without_integration(integration) + integrations = Integration + .select('1') + .where('services.project_id = projects.id') + .where(type: integration.type) + + Project + .where('NOT EXISTS (?)', integrations) + .where(pending_delete: false) + .where(archived: false) + end + end +end |