diff options
Diffstat (limited to 'app/graphql/resolvers/concerns/time_frame_arguments.rb')
-rw-r--r-- | app/graphql/resolvers/concerns/time_frame_arguments.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/app/graphql/resolvers/concerns/time_frame_arguments.rb b/app/graphql/resolvers/concerns/time_frame_arguments.rb new file mode 100644 index 00000000000..ef333dd05a5 --- /dev/null +++ b/app/graphql/resolvers/concerns/time_frame_arguments.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +module TimeFrameArguments + extend ActiveSupport::Concern + + included do + argument :start_date, Types::TimeType, + required: false, + description: 'List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)' + + argument :end_date, Types::TimeType, + required: false, + description: 'List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)' + end + + def validate_timeframe_params!(args) + return unless args[:start_date].present? || args[:end_date].present? + + error_message = + if args[:start_date].nil? || args[:end_date].nil? + "Both startDate and endDate must be present." + elsif args[:start_date] > args[:end_date] + "startDate is after endDate" + end + + if error_message + raise Gitlab::Graphql::Errors::ArgumentError, error_message + end + end +end |