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
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 のテーブルを変更する。以下の省略形。
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
Renames current_name table to _new_name.
Note that table renaming will will not be performed until #define is called.
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 |