Class: Groonga::Schema
- Inherits:
-
Object
- Object
- Groonga::Schema
- Defined in:
- lib/groonga/schema.rb
Overview
groongaのスキーマ(データ構造)を管理するクラス。
Groonga::Schemaを使うことにより簡単にテーブルやカラムを 追加・削除することができる。
!!
Defined Under Namespace
Modules: Path Classes: ColumnCreationWithDifferentOptions, ColumnDefinition, ColumnNotExists, ColumnRemoveDefinition, ColumnRenameDefinition, Error, IndexColumnDefinition, TableCreationWithDifferentOptions, TableDefinition, TableNotExists, TableRemoveDefinition, TableRenameDefinition, UnguessableReferenceTable, UnknownIndexTarget, UnknownIndexTargetTable, UnknownOptions, UnknownTableType, ViewDefinition, ViewRemoveDefinition
Constant Summary collapse
- NORMALIZE_TYPE_TABLE =
{ "short_text" => "ShortText", "string" => "ShortText", "text" => "Text", "binary" => "LongText", "long_text" => "LongText", "int8" => "Int8", "integer8" => "Int8", "int16" => "Int16", "integer16" => "Int16", "int" => "Int32", "integer" => "Int32", "int32" => "Int32", "integer32" => "Int32", "decimal" => "Int64", "int64" => "Int64", "integer64" => "Int64", "uint8" => "UInt8", "unsigned_integer8" => "UInt8", "uint16" => "UInt16", "unsigned_integer16" => "UInt16", "uint" => "UInt32", "unsigned_integer" => "UInt32", "uint32" => "UInt32", "unsigned_integer32" => "UInt32", "uint64" => "UInt64", "unsigned_integer64" => "UInt64", "float" => "Float", "datetime" => "Time", "timestamp" => "Time", "time" => "Time", "date" => "Time", "boolean" => "Bool", "tokyo_geo_point" => "TokyoGeoPoint", "geo_point" => "WGS84GeoPoint", "wgs84_geo_point" => "WGS84GeoPoint", "delimit" => "TokenDelimit", "token_delimit" => "TokenDelimit", "unigram" => "TokenUnigram", "token_unigram" => "TokenUnigram", "bigram" => "TokenBigram", "token_bigram" => "TokenBigram", "bigram_split_symbol" => "TokenBigramSplitSymbol", "token_bigram_split_symbol" => "TokenBigramSplitSymbol", "bigram_split_symbol_alpha" => "TokenBigramSplitSymbolAlpha", "token_bigram_split_symbol_alpha" => "TokenBigramSplitSymbolAlpha", "bigram_split_symbol_alpha_digit" => "TokenBigramSplitSymbolAlphaDigit", "token_bigram_split_symbol_alpha_digit" => "TokenBigramSplitSymbolAlphaDigit", "bigram_ignore_blank" => "TokenBigramIgnoreBlank", "token_bigram_ignore_blank" => "TokenBigramIgnoreBlank", "bigram_ignore_blank_split_symbol" => "TokenBigramIgnoreBlankSplitSymbol", "token_bigram_ignore_blank_split_symbol" => "TokenBigramIgnoreBlankSplitSymbol", "bigram_ignore_blank_split_symbol_alpha" => "TokenBigramIgnoreBlankSplitSymbolAlpha", "token_bigram_ignore_blank_split_symbol_alpha" => "TokenBigramIgnoreBlankSplitSymbolAlpha", "bigram_ignore_blank_split_symbol_alpha_digit" => "TokenBigramIgnoreBlankSplitSymbolAlphaDigit", "token_bigram_ignore_blank_split_symbol_alpha_digit" => "TokenBigramIgnoreBlankSplitSymbolAlphaDigit", "trigram" => "TokenTrigram", "token_trigram" => "TokenTrigram", "mecab" => "TokenMecab", "token_mecab"=> "TokenMecab", }
Class Method Summary collapse
-
.change_table(name, options = {}, &block) ⇒ Object
名前が name のテーブルを変更する。以下の省略形。.
-
.change_view(name, options = {}, &block) ⇒ Object
名前がnameのビューを変更する。以下の省略形。.
-
.create_table(name, options = {}, &block) ⇒ Object
ブロックにはGroonga::Schema::TableDefinitionオブジェ クトがわたるので、そのオブジェクトを利用してテーブル の詳細を定義する。.
-
.create_view(name, options = {}, &block) ⇒ Object
名前がnameのビューを作成する。以下の省略形。.
-
.define(options = {}) {|schema| ... } ⇒ Object
スキーマを定義する。ブロックにはGroonga::Schemaオブ ジェクトがわたるので、そのオブジェクトを利用してスキー マを定義する。以下の省略形。.
-
.dump(options = {}) ⇒ Object
スキーマの内容を文字列をRubyスクリプト形式またはgrn式 形式で返す。デフォルトはRubyスクリプト形式である。 Rubyスクリプト形式で返された値は Groonga::Schema.restoreすることによりスキーマ内に組み 込むことができる。.
- .normalize_type(type, options = {}) ⇒ Object
-
.remove_column(table_name, column_name) ⇒ Object
以下と同様:.
-
.remove_table(name, options = {}) ⇒ Object
名前が name のテーブルを削除する。.
-
.remove_view(name, options = {}) ⇒ Object
名前が name のテーブルを削除する。.
-
.rename_column(table_name, current_column_name, new_column_name) ⇒ Object
This is a syntax sugar of the following:.
-
.rename_table(current_name, new_name, options = {}) ⇒ Object
(See Groonga::Schema#rename_table).
-
.restore(dumped_text, options = {}) ⇒ Object
Groonga::Schema.dumpで文字列化したスキーマを組み込む。.
Instance Method Summary collapse
-
#change_table(name, options = {}) {|definition| ... } ⇒ Object
名前が name のテーブルを変更する。.
-
#change_view(name, options = {}) {|definition| ... } ⇒ Object
名前が name のビューを変更する。.
- #context ⇒ Object
-
#create_table(name, options = {}) {|definition| ... } ⇒ Object
名前が name のテーブルを作成する。.
-
#create_view(name, options = {}) {|definition| ... } ⇒ Object
名前が name のビューを作成する。.
-
#define ⇒ Object
定義されたスキーマ定義を実際に実行する。.
-
#dump ⇒ Object
スキーマの内容を文字列で返す。返された値は Groonga::Schema#restoreすることによりスキーマ内に組み込むことができる。.
-
#initialize(options = {}) ⇒ Schema
constructor
スキーマ定義を開始する。.
-
#remove_column(table_name, column_name) ⇒ Object
以下と同様:.
-
#remove_table(name, options = {}) ⇒ Object
名前が name のテーブルを削除する。.
-
#remove_view(name, options = {}) ⇒ Object
名前が name のビューを削除する。.
-
#rename_column(table_name, current_column_name, new_column_name) ⇒ Object
It is a syntax sugar of the following:.
-
#rename_table(current_name, new_name, options = {}) ⇒ Object
Renames current_name table to _new_name.
-
#restore(dumped_text) ⇒ Object
(also: #load)
Groonga::Schema#dumpで返されたスキーマの内容を読み込む。.
Constructor Details
Class Method Details
.change_table(name, options = {}, &block) ⇒ Object
名前が name のテーブルを変更する。以下の省略形。
<pre> Groonga::Schema.define do |schema|
schema.change_table(name, ) do |table|
# ...
end
end </pre>
ブロックにはGroonga::Schema::TableDefinitionオブジェ クトがわたるので、そのオブジェクトを利用してテーブル の詳細を定義する。
351 352 353 354 355 |
# File 'lib/groonga/schema.rb', line 351 def change_table(name, ={}, &block) define do |schema| schema.change_table(name, , &block) end end |
.change_view(name, options = {}, &block) ⇒ Object
名前がnameのビューを変更する。以下の省略形。
<pre> Groonga::Schema.define do |schema|
schema.change_view(name, ) do |view|
# ...
end
end </pre>
ブロックにはGroonga::Schema::ViewDefinitionオブジェ クトがわたるので、そのオブジェクトを利用してテーブル の詳細を定義する。
440 441 442 443 444 |
# File 'lib/groonga/schema.rb', line 440 def change_view(name, ={}, &block) define do |schema| schema.change_view(name, , &block) end end |
.create_table(name, options = {:type => :array}, &block) ⇒ Object .create_table(name, options = {:type => :hash}, &block) ⇒ Object .create_table(name, options = {:type => :patricia_trie}, &block) ⇒ Object
ブロックにはGroonga::Schema::TableDefinitionオブジェ クトがわたるので、そのオブジェクトを利用してテーブル の詳細を定義する。
options に指定可能な値は以下の通り。
315 316 317 318 319 |
# File 'lib/groonga/schema.rb', line 315 def create_table(name, ={}, &block) define do |schema| schema.create_table(name, , &block) end end |
.create_view(name, options = {}, &block) ⇒ Object
名前がnameのビューを作成する。以下の省略形。
<pre> Groonga::Schema.define do |schema|
schema.create_view(name, ) do |view|
# ...
end
end </pre> ブロックにはGroonga::Schema::ViewDefinitionオブジェ クトがわたるので、そのオブジェクトを利用してビュー の詳細を定義する。
403 404 405 406 407 |
# File 'lib/groonga/schema.rb', line 403 def create_view(name, ={}, &block) define do |schema| schema.create_view(name, , &block) end end |
.define(options = {}) {|schema| ... } ⇒ Object
スキーマを定義する。ブロックにはGroonga::Schemaオブ ジェクトがわたるので、そのオブジェクトを利用してスキー マを定義する。以下の省略形。
<pre> schema = Groonga::Scheme.new(options) # … schema.define </pre>
166 167 168 169 170 |
# File 'lib/groonga/schema.rb', line 166 def define(={}) schema = new() yield(schema) schema.define end |
.dump(options = {}) ⇒ Object
スキーマの内容を文字列をRubyスクリプト形式またはgrn式 形式で返す。デフォルトはRubyスクリプト形式である。 Rubyスクリプト形式で返された値は Groonga::Schema.restoreすることによりスキーマ内に組み 込むことができる。
dump.rb:
<pre> File.open(“/tmp/groonga-schema.rb”, “w”) do |schema|
dumped_text = Groonga::Schema.dump
end </pre>
restore.rb:
<pre> dumped_text = Groonga::Schema.dump Groonga::Database.create(:path => “/tmp/new-db.grn”) Groonga::Schema.restore(dumped_text) </pre>
grn式形式で返された値はgroongaコマンドで読み込むこと ができる。
dump.rb:
<pre> File.open(“/tmp/groonga-schema.grn”, “w”) do |schema|
dumped_text = Groonga::Schema.dump(:syntax => :command)
end </pre>
<pre> !!!text % groonga db/path < /tmp/groonga-schema.grn </pre>
523 524 525 526 527 |
# File 'lib/groonga/schema.rb', line 523 def dump(={}) schema = new(:context => [:context], :syntax => [:syntax]) schema.dump end |
.normalize_type(type, options = {}) ⇒ Object
605 606 607 608 609 610 611 |
# File 'lib/groonga/schema.rb', line 605 def normalize_type(type, ={}) return type if type.nil? return type if type.is_a?(Groonga::Object) type = type.to_s if type.is_a?(Symbol) return type if ([:context] || Groonga::Context.default)[type] NORMALIZE_TYPE_TABLE[type] || type end |
.remove_column(table_name, column_name) ⇒ Object
以下と同様:
<pre> Groonga::Schema.change_table(table_name) do |table|
table.remove_column(column_name)
end </pre>
453 454 455 456 457 |
# File 'lib/groonga/schema.rb', line 453 def remove_column(table_name, column_name) change_table(table_name) do |table| table.remove_column(column_name) end end |
.remove_table(name, options = {}) ⇒ Object
名前が name のテーブルを削除する。
326 327 328 329 330 |
# File 'lib/groonga/schema.rb', line 326 def remove_table(name, ={}) define do |schema| schema.remove_table(name, ) end end |
.remove_view(name, options = {}) ⇒ Object
名前が name のテーブルを削除する。
415 416 417 418 419 |
# File 'lib/groonga/schema.rb', line 415 def remove_view(name, ={}) define do |schema| schema.remove_view(name, ) end end |
.rename_column(table_name, current_column_name, new_column_name) ⇒ Object
This is a syntax sugar of the following:
<pre> Groonga::Schema.define do |schema|
schema.rename_column(table_name,
current_column_name, new_column_name)
end </pre>
467 468 469 470 471 |
# File 'lib/groonga/schema.rb', line 467 def rename_column(table_name, current_column_name, new_column_name) define do |schema| schema.rename_column(table_name, current_column_name, new_column_name) end end |
.rename_table(current_name, new_name, options = {}) ⇒ Object
(See Groonga::Schema#rename_table)
This is a syntax sugar of the following code:
<pre> Groonga::Schema.define do |schema|
schema.rename_table(current_name, new_name, )
end </pre>
366 367 368 369 370 |
# File 'lib/groonga/schema.rb', line 366 def rename_table(current_name, new_name, ={}) define do |schema| schema.rename_table(current_name, new_name, ) end end |
.restore(dumped_text, options = {}) ⇒ Object
Groonga::Schema.dumpで文字列化したスキーマを組み込む。
530 531 532 533 534 |
# File 'lib/groonga/schema.rb', line 530 def restore(dumped_text, ={}) define() do |schema| schema.restore(dumped_text) end end |
Instance Method Details
#change_table(name, options = {}) {|definition| ... } ⇒ Object
名前が name のテーブルを変更する。
テーブルの変更は #define を呼び出すまでは実行されないこ とに注意すること。
854 855 856 857 858 859 |
# File 'lib/groonga/schema.rb', line 854 def change_table(name, ={}) = @options.merge( || {}).merge(:change => true) definition = TableDefinition.new(name, ) yield(definition) @definitions << definition end |
#change_view(name, options = {}) {|definition| ... } ⇒ Object
名前が name のビューを変更する。
ビューの変更は #define を呼び出すまでは実行されないこ とに注意すること。
932 933 934 935 936 937 |
# File 'lib/groonga/schema.rb', line 932 def change_view(name, ={}) = @options.merge( || {}).merge(:change => true) definition = ViewDefinition.new(name, ) yield(definition) @definitions << definition end |
#context ⇒ Object
966 967 968 |
# File 'lib/groonga/schema.rb', line 966 def context @options[:context] || Groonga::Context.default end |
#create_table(name, options = {:type => :array}) ⇒ Object #create_table(name, options = {:type => :hash}) ⇒ Object #create_table(name, options = {:type => :double_array_trie}) ⇒ Object
名前が name のテーブルを作成する。
テーブルの作成は#defineを呼び出すまでは実行されないこ とに注意すること。
823 824 825 826 827 |
# File 'lib/groonga/schema.rb', line 823 def create_table(name, ={}) definition = TableDefinition.new(name, @options.merge( || {})) yield(definition) if block_given? @definitions << definition end |
#create_view(name, options = {}) {|definition| ... } ⇒ Object
名前が name のビューを作成する。
ビューの作成は #define を呼び出すまでは実行されないこ とに注意すること。
900 901 902 903 904 |
# File 'lib/groonga/schema.rb', line 900 def create_view(name, ={}) definition = ViewDefinition.new(name, @options.merge( || {})) yield(definition) @definitions << definition end |
#define ⇒ Object
定義されたスキーマ定義を実際に実行する。
627 628 629 630 631 |
# File 'lib/groonga/schema.rb', line 627 def define @definitions.each do |definition| definition.define end end |
#dump ⇒ Object
スキーマの内容を文字列で返す。返された値は Groonga::Schema#restoreすることによりスキーマ内に組み込むことができる。
646 647 648 649 650 |
# File 'lib/groonga/schema.rb', line 646 def dump dumper = SchemaDumper.new(:context => @options[:context], :syntax => @options[:syntax] || :ruby) dumper.dump end |
#remove_column(table_name, column_name) ⇒ Object
以下と同様:
<pre> schema.change_table(table_name) do |table|
table.remove_column(column_name)
end </pre>
946 947 948 949 950 |
# File 'lib/groonga/schema.rb', line 946 def remove_column(table_name, column_name) change_table(table_name) do |table| table.remove_column(column_name) end end |
#remove_table(name, options = {}) ⇒ Object
名前が name のテーブルを削除する。
テーブルの削除は#defineを呼び出すまでは実行されないこ とに注意すること。
839 840 841 842 |
# File 'lib/groonga/schema.rb', line 839 def remove_table(name, ={}) definition = TableRemoveDefinition.new(name, @options.merge( || {})) @definitions << definition end |
#remove_view(name, options = {}) ⇒ Object
名前が name のビューを削除する。
ビューの削除は #define を呼び出すまでは実行されないことに 注意すること。
917 918 919 920 |
# File 'lib/groonga/schema.rb', line 917 def remove_view(name, ={}) definition = ViewRemoveDefinition.new(name, @options.merge( || {})) @definitions << definition end |
#rename_column(table_name, current_column_name, new_column_name) ⇒ Object
It is a syntax sugar of the following:
<pre> schema.change_table(table_name) do |table|
table.rename_column(current_column_name, new_column_name)
end </pre>
959 960 961 962 963 |
# File 'lib/groonga/schema.rb', line 959 def rename_column(table_name, current_column_name, new_column_name) change_table(table_name) do |table| table.rename_column(current_column_name, new_column_name) end end |
#rename_table(current_name, new_name, options = {}) ⇒ Object
Renames current_name table to _new_name.
Note that table renaming will will not be performed until #define is called.
870 871 872 873 874 |
# File 'lib/groonga/schema.rb', line 870 def rename_table(current_name, new_name, ={}) = @options.merge( || {}) definition = TableRenameDefinition.new(current_name, new_name, ) @definitions << definition end |
#restore(dumped_text) ⇒ Object Also known as: load
Groonga::Schema#dumpで返されたスキーマの内容を読み込む。
読み込まれた内容は#defineを呼び出すまでは実行されない ことに注意すること。
637 638 639 |
# File 'lib/groonga/schema.rb', line 637 def restore(dumped_text) instance_eval(dumped_text) end |