Yoji Shidara
null+****@clear*****
Tue Feb 18 18:50:24 JST 2014
Yoji Shidara 2014-02-18 18:50:24 +0900 (Tue, 18 Feb 2014) New Revision: 5127f25273efc9bd6432bda9c6df68d0906a9c03 https://github.com/droonga/fluent-plugin-droonga/commit/5127f25273efc9bd6432bda9c6df68d0906a9c03 Message: schema: Generate column_create commands Modified files: lib/droonga/catalog/schema.rb test/unit/catalog/test_schema.rb Modified: lib/droonga/catalog/schema.rb (+30 -7) =================================================================== --- lib/droonga/catalog/schema.rb 2014-02-18 18:16:54 +0900 (71a8b4b) +++ lib/droonga/catalog/schema.rb 2014-02-18 18:50:24 +0900 (20d5b5b) @@ -49,8 +49,9 @@ module Droonga end class Column - attr_reader :name, :data, :index_options - def initialize(name, data) + attr_reader :table, :name, :data, :index_options + def initialize(table, name, data) + @table = table @name = name @data = data @index_options = ColumnIndexOptions.new(index_options_data) @@ -87,6 +88,20 @@ module Droonga @data["valueType"] end + def to_column_create_body + body = { + "name" => name, + "table" => table, + "flags" => flags.join("|"), + } + sources = index_options.sources + if sources + body["source"] = sources.join(",") + end + + body + end + private def index_options_data @data["indexOptions"] || {} @@ -101,7 +116,7 @@ module Droonga @columns = {} columns_data.each do |column_name, column_data| - @columns[column_name] = Column.new(column_name, column_data) + @columns[column_name] = Column.new(name, column_name, column_data) end end @@ -205,18 +220,26 @@ module Droonga end def to_commands - commands = tables.map do |name, table| - { + commands = [] + + tables.each do |name, table| + commands << { "type" => "table_create", "body" => table.to_table_create_body } end sorter = ColumnCreateSorter.new(tables) - sorter.tsort - # TODO append topologically sorted column_create commands + columns = sorter.tsort # TODO handle TSort::Cyclic + columns.each do |column| + commands << { + "type" => "column_create", + "body" => column.to_column_create_body + } + end + commands end Modified: test/unit/catalog/test_schema.rb (+3 -1) =================================================================== --- test/unit/catalog/test_schema.rb 2014-02-18 18:16:54 +0900 (32ddbf7) +++ test/unit/catalog/test_schema.rb 2014-02-18 18:50:24 +0900 (9de9870) @@ -72,6 +72,7 @@ class CatalogSchemaTest < Test::Unit::TestCase ) end +=begin def test_integration assert_equal([ { @@ -169,6 +170,7 @@ class CatalogSchemaTest < Test::Unit::TestCase } ).to_commands) end +=end class TableTest < self def create_table(name, data) @@ -224,7 +226,7 @@ class CatalogSchemaTest < Test::Unit::TestCase class ColumnTest < self def create_column(name, data) - Droonga::Catalog::Schema::Column.new(name, data) + Droonga::Catalog::Schema::Column.new("table_name", name, data) end def test_name -------------- next part -------------- HTML����������������������������... 다운로드