Class: Groonga::Schema
- Inherits:
-
Object
- Object
- Groonga::Schema
- Defined in:
- lib/groonga/schema.rb
Overview
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
名前が name のテーブルを作成する。以下の省略形。.
-
.create_view(name, options = {}, &block) ⇒ Object
名前がnameのビューを作成する。以下の省略形。.
-
.define(options = {}) {|schema| ... } ⇒ Object
スキーマを定義する。ブロックには Schema オブ ジェクトがわたるので、そのオブジェクトを利用してスキー マを定義する。以下の省略形。.
-
.dump(options = {}) ⇒ Object
スキーマの内容を文字列をRubyスクリプト形式またはgrn式 形式で返す。デフォルトはRubyスクリプト形式である。 Rubyスクリプト形式で返された値は 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
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
スキーマの内容を文字列で返す。返された値は #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)
#dump で返されたスキーマの内容を読み込む。.
Constructor Details
Class Method Details
.change_table(name, options = {}, &block) ⇒ Object
名前が name のテーブルを変更する。以下の省略形。
<pre> !!!ruby Groonga::Schema.define do |schema|
schema.change_table(name, ) do |table|
# ...
end
end </pre>
ブロックには TableDefinition オブジェ クトがわたるので、そのオブジェクトを利用してテーブル の詳細を定義する。
451 452 453 454 455 |
# File 'lib/groonga/schema.rb', line 451 def change_table(name, ={}, &block) define do |schema| schema.change_table(name, , &block) end end |
.change_view(name, options = {}, &block) ⇒ Object
名前が name のビューを変更する。以下の省略形。
<pre> !!!ruby Groonga::Schema.define do |schema|
schema.change_view(name, ) do |view|
# ...
end
end </pre>
ブロックには ViewDefinition オブジェ クトがわたるので、そのオブジェクトを利用してテーブル の詳細を定義する。
543 544 545 546 547 |
# File 'lib/groonga/schema.rb', line 543 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 .create_table(name, options = {:type => :double_array_trie}) ⇒ Object
名前が name のテーブルを作成する。以下の省略形。
<pre> !!!ruby Groonga::Schema.define do |schema|
schema.create_table(name, ) do |table|
# ...
end
end </pre>
ブロックには TableDefinition オブジェ クトがわたるので、そのオブジェクトを利用してテーブル の詳細を定義する。
options に指定可能な値は以下の通り。
414 415 416 417 418 |
# File 'lib/groonga/schema.rb', line 414 def create_table(name, ={}, &block) define do |schema| schema.create_table(name, , &block) end end |
.create_view(name, options = {}, &block) ⇒ Object
名前がnameのビューを作成する。以下の省略形。
<pre> !!!ruby Groonga::Schema.define do |schema|
schema.create_view(name, ) do |view|
# ...
end
end </pre> ブロックには ViewDefinition オブジェ クトがわたるので、そのオブジェクトを利用してビュー の詳細を定義する。
505 506 507 508 509 |
# File 'lib/groonga/schema.rb', line 505 def create_view(name, ={}, &block) define do |schema| schema.create_view(name, , &block) end end |
.define(options = {}) {|schema| ... } ⇒ Object
スキーマを定義する。ブロックには Groonga::Schema オブ ジェクトがわたるので、そのオブジェクトを利用してスキー マを定義する。以下の省略形。
<pre> !!!ruby schema = Groonga::Scheme.new(options) # … schema.define </pre>
167 168 169 170 171 |
# File 'lib/groonga/schema.rb', line 167 def define(={}) schema = new() yield(schema) schema.define end |
.dump(options = {}) ⇒ Object
スキーマの内容を文字列をRubyスクリプト形式またはgrn式 形式で返す。デフォルトはRubyスクリプト形式である。 Rubyスクリプト形式で返された値は restore することによりスキーマ内に組み 込むことができる。
dump.rb:
<pre> !!!ruby File.open(“/tmp/groonga-schema.rb”, “w”) do |schema|
dumped_text = Groonga::Schema.dump
end </pre>
restore.rb:
<pre> !!!ruby dumped_text = Groonga::Schema.dump Groonga::Database.create(:path => “/tmp/new-db.grn”) Groonga::Schema.restore(dumped_text) </pre>
grn式形式で返された値はgroongaコマンドで読み込むこと ができる。
dump.rb:
<pre> !!!ruby 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>
631 632 633 634 635 |
# File 'lib/groonga/schema.rb', line 631 def dump(={}) schema = new(:context => [:context], :syntax => [:syntax]) schema.dump end |
.normalize_type(type, options = {}) ⇒ Object
714 715 716 717 718 719 720 |
# File 'lib/groonga/schema.rb', line 714 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> !!!ruby Groonga::Schema.change_table(table_name) do |table|
table.remove_column(column_name)
end </pre>
557 558 559 560 561 |
# File 'lib/groonga/schema.rb', line 557 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 のテーブルを削除する。
425 426 427 428 429 |
# File 'lib/groonga/schema.rb', line 425 def remove_table(name, ={}) define do |schema| schema.remove_table(name, ) end end |
.remove_view(name, options = {}) ⇒ Object
名前が name のテーブルを削除する。
517 518 519 520 521 |
# File 'lib/groonga/schema.rb', line 517 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> !!!ruby Groonga::Schema.define do |schema|
schema.rename_column(table_name,
current_column_name, new_column_name)
end </pre>
572 573 574 575 576 |
# File 'lib/groonga/schema.rb', line 572 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> !!!ruby Groonga::Schema.define do |schema|
schema.rename_table(current_name, new_name, )
end </pre>
467 468 469 470 471 |
# File 'lib/groonga/schema.rb', line 467 def rename_table(current_name, new_name, ={}) define do |schema| schema.rename_table(current_name, new_name, ) end end |
Instance Method Details
#change_table(name, options = {}) {|definition| ... } ⇒ Object
名前が name のテーブルを変更する。
テーブルの変更は #define を呼び出すまでは実行されないこ とに注意すること。
806 807 808 809 810 811 |
# File 'lib/groonga/schema.rb', line 806 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 を呼び出すまでは実行されないこ とに注意すること。
884 885 886 887 888 889 |
# File 'lib/groonga/schema.rb', line 884 def change_view(name, ={}) = @options.merge( || {}).merge(:change => true) definition = ViewDefinition.new(name, ) yield(definition) @definitions << definition end |
#context ⇒ Object
920 921 922 |
# File 'lib/groonga/schema.rb', line 920 def context @options[:context] || Groonga::Context.default 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 #create_table(name, options = {:type => :double_array_trie}) ⇒ Object
名前が name のテーブルを作成する。
テーブルの作成は #define を呼び出すまでは実行されないこ とに注意すること。
775 776 777 778 779 |
# File 'lib/groonga/schema.rb', line 775 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 を呼び出すまでは実行されないこ とに注意すること。
852 853 854 855 856 |
# File 'lib/groonga/schema.rb', line 852 def create_view(name, ={}) definition = ViewDefinition.new(name, @options.merge( || {})) yield(definition) @definitions << definition end |
#define ⇒ Object
定義されたスキーマ定義を実際に実行する。
736 737 738 739 740 |
# File 'lib/groonga/schema.rb', line 736 def define @definitions.each do |definition| definition.define end end |
#dump ⇒ Object
スキーマの内容を文字列で返す。返された値は #restore することによりスキーマ内に組み込むことができる。
755 756 757 758 759 |
# File 'lib/groonga/schema.rb', line 755 def dump dumper = SchemaDumper.new(:context => @options[:context], :syntax => @options[:syntax] || :ruby) dumper.dump end |
#remove_column(table_name, column_name) ⇒ Object
以下と同様:
<pre> !!!ruby schema.change_table(table_name) do |table|
table.remove_column(column_name)
end </pre>
899 900 901 902 903 |
# File 'lib/groonga/schema.rb', line 899 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 を呼び出すまでは実行されないこ とに注意すること。
791 792 793 794 |
# File 'lib/groonga/schema.rb', line 791 def remove_table(name, ={}) definition = TableRemoveDefinition.new(name, @options.merge( || {})) @definitions << definition end |
#remove_view(name, options = {}) ⇒ Object
名前が name のビューを削除する。
ビューの削除は #define を呼び出すまでは実行されないことに 注意すること。
869 870 871 872 |
# File 'lib/groonga/schema.rb', line 869 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> !!!ruby schema.change_table(table_name) do |table|
table.rename_column(current_column_name, new_column_name)
end </pre>
913 914 915 916 917 |
# File 'lib/groonga/schema.rb', line 913 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.
822 823 824 825 826 |
# File 'lib/groonga/schema.rb', line 822 def rename_table(current_name, new_name, ={}) = @options.merge( || {}) definition = TableRenameDefinition.new(current_name, new_name, ) @definitions << definition end |