[Groonga-commit] droonga/droonga-engine at 6813a7c [master] groonga: Implement column_rename command

Back to archive index

YUKI Hiroshi null+****@clear*****
Wed Apr 23 14:19:55 JST 2014


YUKI Hiroshi	2014-04-23 14:19:55 +0900 (Wed, 23 Apr 2014)

  New Revision: 6813a7c70c198d9afddac8386e619c644a482b9e
  https://github.com/droonga/droonga-engine/commit/6813a7c70c198d9afddac8386e619c644a482b9e

  Message:
    groonga: Implement column_rename command

  Added files:
    lib/droonga/plugins/groonga/column_rename.rb
  Modified files:
    lib/droonga/plugins/groonga.rb
    lib/droonga/plugins/groonga/generic_response.rb

  Modified: lib/droonga/plugins/groonga.rb (+1 -0)
===================================================================
--- lib/droonga/plugins/groonga.rb    2014-04-23 14:17:05 +0900 (7bb8af2)
+++ lib/droonga/plugins/groonga.rb    2014-04-23 14:19:55 +0900 (2b8b4cc)
@@ -30,4 +30,5 @@ require "droonga/plugins/groonga/table_create"
 require "droonga/plugins/groonga/table_remove"
 require "droonga/plugins/groonga/column_create"
 require "droonga/plugins/groonga/column_remove"
+require "droonga/plugins/groonga/column_rename"
 

  Added: lib/droonga/plugins/groonga/column_rename.rb (+82 -0) 100644
===================================================================
--- /dev/null
+++ lib/droonga/plugins/groonga/column_rename.rb    2014-04-23 14:19:55 +0900 (659b4e2)
@@ -0,0 +1,82 @@
+# Copyright (C) 2014 Droonga Project
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1 as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+require "groonga/command/column-rename"
+
+require "droonga/plugin"
+require "droonga/plugins/groonga/generic_command"
+
+module Droonga
+  module Plugins
+    module Groonga
+      module ColumnRename
+        class Command < GenericCommand
+          def process_request(request)
+            command_class = ::Groonga::Command.find("column_rename")
+            @command = command_class.new("column_rename", request)
+
+            table_name = @command["table"]
+            if table_name.nil? or @context[table_name].nil?
+              message = "table doesn't exist: <#{table_name.to_s}>"
+              raise CommandError.new(:status => Status::INVALID_ARGUMENT,
+                                     :message => message,
+                                     :result => false)
+            end
+
+            column_name = @command["name"]
+            if column_name.nil? or @context[table_name].column(column_name).nil?
+              message = "column doesn't exist: <#{column_name.to_s}>"
+              raise CommandError.new(:status => Status::INVALID_ARGUMENT,
+                                     :message => message,
+                                     :result => false)
+            end
+
+            rename_column
+          end
+
+          private
+          def rename_column
+            table_name = @command["table"]
+            column_name = @command["name"]
+            new_name = @command["new_name"]
+
+            ::Groonga::Schema.define(:context => @context) do |schema|
+              schema.change_table(table_name) do |table|
+                table.rename_column(column_name, new_name)
+              end
+            end
+            true
+          end
+        end
+
+        class Handler < Droonga::Handler
+          action.synchronous = true
+
+          def handle(message)
+            command = Command.new(@context)
+            command.execute(message.request)
+          end
+        end
+
+        Groonga.define_single_step do |step|
+          step.name = "column_rename"
+          step.write = true
+          step.handler = Handler
+          step.collector = Collectors::Or
+        end
+      end
+    end
+  end
+end

  Modified: lib/droonga/plugins/groonga/generic_response.rb (+1 -0)
===================================================================
--- lib/droonga/plugins/groonga/generic_response.rb    2014-04-23 14:17:05 +0900 (97da42d)
+++ lib/droonga/plugins/groonga/generic_response.rb    2014-04-23 14:19:55 +0900 (0e838a1)
@@ -25,6 +25,7 @@ module Droonga
             "table_remove",
             "column_create",
             "column_remove",
+            "column_rename",
           ]
           input_message.pattern  = ["type", :in, groonga_commands]
           output_message.pattern = ["body.result", :exist]
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index