Kouhei Sutou
null+****@clear*****
Tue Mar 7 19:15:25 JST 2017
Kouhei Sutou 2017-03-07 19:15:25 +0900 (Tue, 07 Mar 2017) New Revision: cfc1ad3cc4e93b37e694a3c9d711c50bbdfb96e2 https://github.com/ranguba/groonga-client-model/commit/cfc1ad3cc4e93b37e694a3c9d711c50bbdfb96e2 Message: migration: support reference column Modified files: lib/groonga_client_model/migration.rb test/unit/migration/test_create_table.rb Modified: lib/groonga_client_model/migration.rb (+7 -0) =================================================================== --- lib/groonga_client_model/migration.rb 2017-03-07 17:54:15 +0900 (b0f7c54) +++ lib/groonga_client_model/migration.rb 2017-03-07 19:15:25 +0900 (1ba80cd) @@ -442,6 +442,13 @@ module GroongaClientModel geo_point(column_name, options.merge(datum: :tokyo)) end + def reference(column_name, reference_table_name, options={}) + @migration.add_column(@table_name, + column_name, + reference_table_name, + options) + end + def index(source_table_name, source_column_names, options={}) source_column_names = Array(source_column_names) column_name = [source_table_name, *source_column_names].join("_") Modified: test/unit/migration/test_create_table.rb (+62 -1) =================================================================== --- test/unit/migration/test_create_table.rb 2017-03-07 17:54:15 +0900 (d79db13) +++ test/unit/migration/test_create_table.rb 2017-03-07 19:15:25 +0900 (14b6672) @@ -138,7 +138,7 @@ table_create terms TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram --nor expected_up_report = <<-REPORT -- create_table(:posts, {:type=>"TABLE_NO_KEY"}) -> 0.0s --- add_column(:posts, :#{column_name}, {:flags=>["COLUMN_SCALAR"], :value_type=>"#{groonga_type}"}) +-- add_column(:posts, :#{column_name}, {:flags=>["COLUMN_SCALAR"], :value_type=>#{groonga_type.inspect}}) -> 0.0s REPORT expected_down_report = <<-REPORT @@ -302,6 +302,67 @@ column_create posts #{column_name} COLUMN_SCALAR #{groonga_type} end end + sub_test_case("#reference") do + def assert_migrate_add_reference_column(column_name, + reference_table_name, + options={}) + open_client do |client| + client.table_create(name: reference_table_name, + flags: "TABLE_HASH_KEY", + key_type: "ShortText") + end + + flags = [] + case options[:type] + when :vector + flags << "COLUMN_VECTOR" + else + flags << "COLUMN_SCALAR" + end + + expected_up_report = <<-REPORT +-- create_table(:posts, {:type=>"TABLE_NO_KEY"}) + -> 0.0s +-- add_column(:posts, :#{column_name}, {:flags=>#{flags.inspect}, :value_type=>#{reference_table_name.inspect}}) + -> 0.0s + REPORT + expected_down_report = <<-REPORT +-- remove_table(:posts) + -> 0.0s + REPORT + expected_dump = <<-DUMP.chomp +table_create posts TABLE_NO_KEY + +table_create #{reference_table_name} TABLE_HASH_KEY ShortText + +column_create posts #{column_name} #{flags.join("|")} #{reference_table_name} + DUMP + assert_migrate(expected_up_report, + expected_down_report, + expected_dump) do |migration| + migration.instance_eval do + create_table(:posts) do |table| + yield(table) + end + end + end + end + + test("default") do + assert_migrate_add_reference_column(:user, :users) do |table| + table.reference(:user, :users) + end + end + + test("type: :vector") do + assert_migrate_add_reference_column(:user, + :users, + type: :vector) do |table| + table.reference(:user, :users, type: :vector) + end + end + end + sub_test_case("#index") do test("for full text search") do expected_up_report = <<-REPORT -------------- next part -------------- HTML����������������������������... Download