Class: Groonga::Schema
- Inherits:
-
Object
- Object
- Groonga::Schema
- Defined in:
- lib/groonga/schema.rb
Overview
groongaのスキーマ(データ構造)を管理するクラス。
Schema を使うことにより簡単にテーブルやカラムを 追加・削除することができる。
Defined Under Namespace
Classes: ColumnCreationWithDifferentOptions, ColumnNotExists, Error, TableCreationWithDifferentOptions, TableDefinition, TableNotExists, UnguessableReferenceTable, UnknownIndexTarget, UnknownIndexTargetTable, UnknownOptions, UnknownTableType
Class Method Summary collapse
-
.change_table(name, options = {}, &block) ⇒ Object
名前が name のテーブルを変更する。以下の省略形。.
-
.create_table(name, options = {}, &block) ⇒ Object
名前が name のテーブルを作成する。以下の省略形。.
-
.define(options = {}) {|schema| ... } ⇒ Object
スキーマを定義する。ブロックには Schema オブ ジェクトがわたるので、そのオブジェクトを利用してスキー マを定義する。以下の省略形。.
-
.dump(options = {}) ⇒ Object
スキーマの内容を文字列をRubyスクリプト形式またはgrn式 形式で返す。デフォルトはRubyスクリプト形式である。 Rubyスクリプト形式で返された値は Schema.restore することによりスキーマ内に組み 込むことができる。.
-
.remove_column(table_name, column_name) ⇒ Object
以下と同様:.
-
.remove_table(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 のテーブルを変更する。.
-
#create_lexicon(name, use_case: :full_text_search, **options, &block) ⇒ Object
-
#create_table(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 のテーブルを削除する。.
-
#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
テーブルの名前を current_name から new_name に変更します。 .
-
#restore(dumped_text) ⇒ Object
(also: #load)
#dump で返されたスキーマの内容を読み込む。.
Constructor Details
Class Method Details
.change_table(name, options = {}, &block) ⇒ Object
名前が name のテーブルを変更する。以下の省略形。
Groonga::Schema.define do |schema|
schema.change_table(name, ) do |table|
# ...
end
end
ブロックには TableDefinition オブジェ クトがわたるので、そのオブジェクトを利用してテーブル の詳細を定義する。
414 415 416 417 418 |
# File 'lib/groonga/schema.rb', line 414 def change_table(name, ={}, &block) define do |schema| schema.change_table(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 のテーブルを作成する。以下の省略形。
Groonga::Schema.define do |schema|
schema.create_table(name, ) do |table|
# ...
end
end
ブロックには TableDefinition オブジェ クトがわたるので、そのオブジェクトを利用してテーブル の詳細を定義する。
options に指定可能な値は以下の通り。
377 378 379 380 381 |
# File 'lib/groonga/schema.rb', line 377 def create_table(name, ={}, &block) define do |schema| schema.create_table(name, , &block) end end |
.define(options = {}) {|schema| ... } ⇒ Object
スキーマを定義する。ブロックには Groonga::Schema オブ ジェクトがわたるので、そのオブジェクトを利用してスキー マを定義する。以下の省略形。
schema = Groonga::Scheme.new()
# ...
schema.define
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スクリプト形式で返された値は restore することによりスキーマ内に組み 込むことができる。
dump.rb:
File.open("/tmp/groonga-schema.rb", "w") do |schema|
dumped_text = Groonga::Schema.dump
end
restore.rb:
dumped_text = Groonga::Schema.dump
Groonga::Database.create(:path => "/tmp/new-db.grn")
Groonga::Schema.restore(dumped_text)
grn式形式で返された値はgroongaコマンドで読み込むこと ができる。
dump.rb:
File.open("/tmp/groonga-schema.grn", "w") do |schema|
dumped_text = Groonga::Schema.dump(:syntax => :command)
end
% groonga db/path < /tmp/groonga-schema.grn
518 519 520 521 522 |
# File 'lib/groonga/schema.rb', line 518 def dump(={}) schema = new(:context => [:context], :syntax => [:syntax]) schema.dump end |
.remove_column(table_name, column_name) ⇒ Object
以下と同様:
Groonga::Schema.change_table(table_name) do |table|
table.remove_column(column_name)
end
444 445 446 447 448 |
# File 'lib/groonga/schema.rb', line 444 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 のテーブルを削除する。
388 389 390 391 392 |
# File 'lib/groonga/schema.rb', line 388 def remove_table(name, ={}) define do |schema| schema.remove_table(name, ) end end |
.rename_column(table_name, current_column_name, new_column_name) ⇒ Object
459 460 461 462 463 |
# File 'lib/groonga/schema.rb', line 459 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
430 431 432 433 434 |
# File 'lib/groonga/schema.rb', line 430 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 を呼び出すまでは実行されないこ とに注意すること。
711 712 713 714 715 716 |
# File 'lib/groonga/schema.rb', line 711 def change_table(name, ={}) = @options.merge( || {}).merge(:change => true) definition = TableDefinition.new(name, ) yield(definition) @definitions << definition end |
#create_lexicon(name, use_case: :full_text_search, **options, &block) ⇒ Object
673 674 675 676 677 678 679 680 681 682 683 684 |
# File 'lib/groonga/schema.rb', line 673 def create_lexicon(name, use_case: :full_text_search, **, &block) case use_case when :full_text_search [:type] ||= :patricia_trie [:key_type] ||= :short_text [:default_tokenizer] ||= "TokenBigram" [:normalizer] ||= "NormalizerAuto" end create_table(name, , &block) 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 を呼び出すまでは実行されないこ とに注意すること。
667 668 669 670 671 |
# File 'lib/groonga/schema.rb', line 667 def create_table(name, ={}) definition = TableDefinition.new(name, @options.merge( || {})) yield(definition) if block_given? @definitions << definition end |
#define ⇒ Object
定義されたスキーマ定義を実際に実行する。
625 626 627 628 629 |
# File 'lib/groonga/schema.rb', line 625 def define @definitions.each do |definition| definition.define end end |
#dump ⇒ Object
スキーマの内容を文字列で返す。返された値は #restore することによりスキーマ内に組み込むことができる。
644 645 646 647 648 |
# File 'lib/groonga/schema.rb', line 644 def dump dumper = SchemaDumper.new(:context => @options[:context], :syntax => @options[:syntax] || :ruby) dumper.dump end |
#remove_column(table_name, column_name) ⇒ Object
以下と同様:
schema.change_table(table_name) do |table|
table.remove_column(column_name)
end
741 742 743 744 745 |
# File 'lib/groonga/schema.rb', line 741 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 を呼び出すまでは実行されないこ とに注意すること。
696 697 698 699 |
# File 'lib/groonga/schema.rb', line 696 def remove_table(name, ={}) definition = TableRemoveDefinition.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:
schema.change_table(table_name) do |table|
table.rename_column(current_column_name, new_column_name)
end
755 756 757 758 759 |
# File 'lib/groonga/schema.rb', line 755 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
テーブルの名前を current_name から new_name に変更します。
#define が呼ばれるまで名前の変更は実行されないことに注意してください。
727 728 729 730 731 |
# File 'lib/groonga/schema.rb', line 727 def rename_table(current_name, new_name, ={}) = @options.merge( || {}) definition = TableRenameDefinition.new(current_name, new_name, ) @definitions << definition end |