summaryrefslogtreecommitdiff
path: root/app/controllers/projects/airflow/dags_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/projects/airflow/dags_controller.rb')
-rw-r--r--app/controllers/projects/airflow/dags_controller.rb38
1 files changed, 38 insertions, 0 deletions
diff --git a/app/controllers/projects/airflow/dags_controller.rb b/app/controllers/projects/airflow/dags_controller.rb
new file mode 100644
index 00000000000..9d1f0b0d63b
--- /dev/null
+++ b/app/controllers/projects/airflow/dags_controller.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+module Projects
+ module Airflow
+ class DagsController < ::Projects::ApplicationController
+ before_action :check_feature_flag
+ before_action :authorize_read_airflow_dags!
+
+ feature_category :dataops
+
+ MAX_DAGS_PER_PAGE = 15
+ def index
+ page = params[:page].to_i
+ page = 1 if page <= 0
+
+ @dags = ::Airflow::Dags.by_project_id(@project.id)
+
+ return unless @dags.any?
+
+ @dags = @dags.page(page).per(MAX_DAGS_PER_PAGE)
+ return redirect_to(url_for(page: @dags.total_pages)) if @dags.out_of_range?
+
+ @pagination = {
+ page: page,
+ is_last_page: @dags.last_page?,
+ per_page: MAX_DAGS_PER_PAGE,
+ total_items: @dags.total_count
+ }
+ end
+
+ private
+
+ def check_feature_flag
+ render_404 unless Feature.enabled?(:airflow_dags, @project)
+ end
+ end
+ end
+end