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