summaryrefslogtreecommitdiff
path: root/lib/gitlab/slash_commands/base_command.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/slash_commands/base_command.rb')
-rw-r--r--lib/gitlab/slash_commands/base_command.rb47
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/gitlab/slash_commands/base_command.rb b/lib/gitlab/slash_commands/base_command.rb
new file mode 100644
index 00000000000..cc3c9a50555
--- /dev/null
+++ b/lib/gitlab/slash_commands/base_command.rb
@@ -0,0 +1,47 @@
+module Gitlab
+ module SlashCommands
+ class BaseCommand
+ QUERY_LIMIT = 5
+
+ def self.match(_text)
+ raise NotImplementedError
+ end
+
+ def self.help_message
+ raise NotImplementedError
+ end
+
+ def self.available?(_project)
+ raise NotImplementedError
+ end
+
+ def self.allowed?(_user, _ability)
+ true
+ end
+
+ def self.can?(object, action, subject)
+ Ability.allowed?(object, action, subject)
+ end
+
+ def execute(_)
+ raise NotImplementedError
+ end
+
+ def collection
+ raise NotImplementedError
+ end
+
+ attr_accessor :project, :current_user, :params
+
+ def initialize(project, user, params = {})
+ @project, @current_user, @params = project, user, params.dup
+ end
+
+ private
+
+ def find_by_iid(iid)
+ collection.find_by(iid: iid)
+ end
+ end
+ end
+end