Class: Groonga::Schema::TableDefinition
- Inherits:
-
Object
- Object
- Groonga::Schema::TableDefinition
- Defined in:
- lib/groonga/schema.rb
Overview
スキーマ定義時にGroonga::Schema.create_tableや Groonga::Schema#create_tableからブロックに渡されてくる オブジェクト
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
テーブルの名前.
Instance Method Summary collapse
-
#[](name, definition_class = nil) ⇒ Object
:nodoc:.
-
#column(name, type, options = {}) ⇒ Object
名前がnameで型がtypeのカラムを作成する。.
-
#context ⇒ Object
:nodoc:.
-
#define ⇒ Object
:nodoc:.
-
#float(name, options = {}) ⇒ Object
名前がnameのieee754形式の64bit浮動小数点数のカラム を作成する。.
-
#index(target_column, options = {}) ⇒ Object
taget_columnを対象とするインデックスカラムを作成す る。.
-
#initialize(name, options) ⇒ TableDefinition
constructor
:nodoc:.
-
#integer32(name, options = {}) ⇒ Object
(also: #integer, #int32)
名前がnameの32bit符号付き整数のカラムを作成する。.
-
#integer64(name, options = {}) ⇒ Object
(also: #int64)
名前がnameの64bit符号付き整数のカラムを作成する。.
-
#long_text(name, options = {}) ⇒ Object
名前がnameの2Gbyte以下の文字列を格納できるカラムを 作成する。.
-
#reference(name, table, options = {}) ⇒ Object
名前がnameでtableのレコードIDを格納する参照カラ ムを作成する。.
-
#remove_column(name, options = {}) ⇒ Object
名前がnameのカラムを削除する。.
-
#short_text(name, options = {}) ⇒ Object
(also: #string)
名前がnameの4Kbyte以下の文字列を格納できるカラムを 作成する。.
-
#text(name, options = {}) ⇒ Object
名前がnameの64Kbyte以下の文字列を格納できるカラムを 作成する。.
-
#time(name, options = {}) ⇒ Object
名前がnameの64bit符号付き整数で1970年1月1日0時0分 0秒からの経過マイクロ秒数を格納するカラムを作成する。.
-
#unsigned_integer32(name, options = {}) ⇒ Object
(also: #unsigned_integer, #uint32)
名前がnameの32bit符号なし整数のカラムを作成する。.
-
#unsigned_integer64(name, options = {}) ⇒ Object
(also: #uint64)
名前がnameの64bit符号なし整数のカラムを作成する。.
Constructor Details
#initialize(name, options) ⇒ TableDefinition
:nodoc:
413 414 415 416 417 418 419 420 |
# File 'lib/groonga/schema.rb', line 413 def initialize(name, ) # :nodoc: @name = name @name = @name.to_s if @name.is_a?(Symbol) @definitions = [] () @options = @table_type = table_type end |
Instance Attribute Details
#name ⇒ Object (readonly)
テーブルの名前
411 412 413 |
# File 'lib/groonga/schema.rb', line 411 def name @name end |
Instance Method Details
#[](name, definition_class = nil) ⇒ Object
:nodoc:
639 640 641 642 643 644 |
# File 'lib/groonga/schema.rb', line 639 def [](name, definition_class=nil) # :nodoc: @definitions.find do |definition| definition.name.to_s == name.to_s and (definition_class.nil? or definition.is_a?(definition_class)) end end |
#column(name, type, options = {}) ⇒ Object
名前がnameで型がtypeのカラムを作成する。
optionsに指定可能な値は以下の通り。
:force
-
true
を指定すると既存の同名のカラムが存在してい ても、強制的に新しいカラムを作成する。 :path
-
カラムを保存するパス。
:persistent
-
true
を指定すると永続カラムとなる。:path
を省略 した場合は自動的にパスが付加される。 :type
-
カラムの値の格納方法について指定する。省略した場合は、
:scalar
になる。:scalar
-
スカラ値(単独の値)を格納する。
:vector
-
値の配列を格納する。
:compress
-
値の圧縮方法を指定する。省略した場合は、圧縮しない。
:zlib
-
値をzlib圧縮して格納する。
:lzo
-
値をlzo圧縮して格納する。
472 473 474 475 476 477 478 479 480 481 |
# File 'lib/groonga/schema.rb', line 472 def column(name, type, ={}) definition = self[name, ColumnDefinition] if definition.nil? definition = ColumnDefinition.new(name, ) update_definition(name, ColumnDefinition, definition) end definition.type = type definition..merge!(.merge()) self end |
#context ⇒ Object
:nodoc:
646 647 648 |
# File 'lib/groonga/schema.rb', line 646 def context # :nodoc: @options[:context] || Groonga::Context.default end |
#define ⇒ Object
:nodoc:
422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 |
# File 'lib/groonga/schema.rb', line 422 def define # :nodoc: table = context[@name] if @options[:change] raise ArgumentError, "table doesn't exist: #{@name}" if table.nil? else if table and @options[:force] table.remove table = nil end table ||= @table_type.create() end @definitions.each do |definition| definition.define(self, table) end table end |
#float(name, options = {}) ⇒ Object
名前がnameのieee754形式の64bit浮動小数点数のカラム を作成する。
optionsに指定可能な値は Groonga::Schema::TableDefinition#columnを参照。
589 590 591 |
# File 'lib/groonga/schema.rb', line 589 def float(name, ={}) column(name, "Float", ) end |
#index(target_column, options = {}) ⇒ Object
taget_columnを対象とするインデックスカラムを作成す る。
optionsに指定可能な値は以下の通り。
:name
-
インデックスカラムのカラム名を任意に指定する。
:force
-
true
を指定すると既存の同名のカラムが存在してい ても、強制的に新しいカラムを作成する。 :path
-
カラムを保存するパス。
:persistent
-
true
を指定すると永続カラムとなる。:path
を省略 した場合は自動的にパスが付加される。 :with_section
-
転置索引にsection(段落情報)を合わせて格納する。
:with_weight
-
転置索引にweight情報を合わせて格納する。
:with_position
-
転置索引に出現位置情報を合わせて格納する。
524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 |
# File 'lib/groonga/schema.rb', line 524 def index(target_column, ={}) name = .delete(:name) if name.nil? target_column_name = nil if target_column.is_a?(Groonga::Column) target_column_name = target_column.name else target_column_name = target_column end name = target_column_name.gsub(/\./, "_") end definition = self[name, IndexColumnDefinition] if definition.nil? definition = IndexColumnDefinition.new(name, ) update_definition(name, IndexColumnDefinition, definition) end definition.target = target_column definition..merge!(.merge()) self end |
#integer32(name, options = {}) ⇒ Object Also known as: integer, int32
名前がnameの32bit符号付き整数のカラムを作成する。
optionsに指定可能な値は Groonga::Schema::TableDefinition#columnを参照。
550 551 552 |
# File 'lib/groonga/schema.rb', line 550 def integer32(name, ={}) column(name, "Int32", ) end |
#integer64(name, options = {}) ⇒ Object Also known as: int64
名前がnameの64bit符号付き整数のカラムを作成する。
optionsに指定可能な値は Groonga::Schema::TableDefinition#columnを参照。
560 561 562 |
# File 'lib/groonga/schema.rb', line 560 def integer64(name, ={}) column(name, "Int64", ) end |
#long_text(name, options = {}) ⇒ Object
名前がnameの2Gbyte以下の文字列を格納できるカラムを 作成する。
optionsに指定可能な値は Groonga::Schema::TableDefinition#columnを参照。
626 627 628 |
# File 'lib/groonga/schema.rb', line 626 def long_text(name, ={}) column(name, "LongText", ) end |
#reference(name, table, options = {}) ⇒ Object
名前がnameでtableのレコードIDを格納する参照カラ ムを作成する。
optionsに指定可能な値は Groonga::Schema::TableDefinition#columnを参照。
635 636 637 |
# File 'lib/groonga/schema.rb', line 635 def reference(name, table, ={}) column(name, table, ) end |
#remove_column(name, options = {}) ⇒ Object
名前がnameのカラムを削除する。
optionsに指定可能な値はない(TODO optionsは不要?)。
487 488 489 490 491 492 493 494 495 |
# File 'lib/groonga/schema.rb', line 487 def remove_column(name, ={}) definition = self[name, ColumnRemoveDefinition] if definition.nil? definition = ColumnRemoveDefinition.new(name, ) update_definition(name, ColumnRemoveDefinition, definition) end definition..merge!() self end |
#short_text(name, options = {}) ⇒ Object Also known as: string
名前がnameの4Kbyte以下の文字列を格納できるカラムを 作成する。
optionsに指定可能な値は Groonga::Schema::TableDefinition#columnを参照。
607 608 609 |
# File 'lib/groonga/schema.rb', line 607 def short_text(name, ={}) column(name, "ShortText", ) end |
#text(name, options = {}) ⇒ Object
名前がnameの64Kbyte以下の文字列を格納できるカラムを 作成する。
optionsに指定可能な値は Groonga::Schema::TableDefinition#columnを参照。
617 618 619 |
# File 'lib/groonga/schema.rb', line 617 def text(name, ={}) column(name, "Text", ) end |
#time(name, options = {}) ⇒ Object
名前がnameの64bit符号付き整数で1970年1月1日0時0分 0秒からの経過マイクロ秒数を格納するカラムを作成する。
optionsに指定可能な値は Groonga::Schema::TableDefinition#columnを参照。
598 599 600 |
# File 'lib/groonga/schema.rb', line 598 def time(name, ={}) column(name, "Time", ) end |
#unsigned_integer32(name, options = {}) ⇒ Object Also known as: unsigned_integer, uint32
名前がnameの32bit符号なし整数のカラムを作成する。
optionsに指定可能な値は Groonga::Schema::TableDefinition#columnを参照。
569 570 571 |
# File 'lib/groonga/schema.rb', line 569 def unsigned_integer32(name, ={}) column(name, "UInt32", ) end |
#unsigned_integer64(name, options = {}) ⇒ Object Also known as: uint64
名前がnameの64bit符号なし整数のカラムを作成する。
optionsに指定可能な値は Groonga::Schema::TableDefinition#columnを参照。
579 580 581 |
# File 'lib/groonga/schema.rb', line 579 def unsigned_integer64(name, ={}) column(name, "UInt64", ) end |