Class: Groonga::Schema::TableDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/groonga/schema.rb

Overview

スキーマ定義時にGroonga::Schema.create_tableや Groonga::Schema#create_tableからブロックに渡されてくる オブジェクト

Instance Attribute Summary collapse

Instance Method Summary collapse

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, options) # :nodoc:
  @name = name
  @name = @name.to_s if @name.is_a?(Symbol)
  @definitions = []
  validate_options(options)
  @options = options
  @table_type = table_type
end

Instance Attribute Details

#nameObject (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, options={})
  definition = self[name, ColumnDefinition]
  if definition.nil?
    definition = ColumnDefinition.new(name, options)
    update_definition(name, ColumnDefinition, definition)
  end
  definition.type = type
  definition.options.merge!(column_options.merge(options))
  self
end

#contextObject

:nodoc:



646
647
648
# File 'lib/groonga/schema.rb', line 646

def context # :nodoc:
  @options[:context] || Groonga::Context.default
end

#defineObject

: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(create_options)
  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, options={})
  column(name, "Float", options)
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, options={})
  name = options.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, options)
    update_definition(name, IndexColumnDefinition, definition)
  end
  definition.target = target_column
  definition.options.merge!(column_options.merge(options))
  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, options={})
  column(name, "Int32", options)
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, options={})
  column(name, "Int64", options)
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, options={})
  column(name, "LongText", options)
end

#reference(name, table, options = {}) ⇒ Object

名前がnametableのレコードIDを格納する参照カラ ムを作成する。

optionsに指定可能な値は Groonga::Schema::TableDefinition#columnを参照。



635
636
637
# File 'lib/groonga/schema.rb', line 635

def reference(name, table, options={})
  column(name, table, options)
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, options={})
  definition = self[name, ColumnRemoveDefinition]
  if definition.nil?
    definition = ColumnRemoveDefinition.new(name, options)
    update_definition(name, ColumnRemoveDefinition, definition)
  end
  definition.options.merge!(options)
  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, options={})
  column(name, "ShortText", options)
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, options={})
  column(name, "Text", options)
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, options={})
  column(name, "Time", options)
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, options={})
  column(name, "UInt32", options)
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, options={})
  column(name, "UInt64", options)
end