summaryrefslogtreecommitdiff
path: root/app/models/concerns/has_integrations.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/concerns/has_integrations.rb')
-rw-r--r--app/models/concerns/has_integrations.rb31
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