Class: Groonga::Schema::TableDefinition

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

Overview

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#nameObject (readonly)

テーブルの名前



799
800
801
# File 'lib/groonga/schema.rb', line 799

def name
  @name
end

Instance Method Details

#boolean(name, options = {}) ⇒ Object Also known as: bool

名前が name の真偽値を格納できるカラムを作成する。

options に指定可能な値は #column を参照。



1155
1156
1157
# File 'lib/groonga/schema.rb', line 1155

def boolean(name, options={})
  column(name, "Bool", options)
end

#column(name, type, options = {}) ⇒ Object

名前が name で型が type のカラムを作成する。

Parameters:

  • options (::Hash) (defaults to: {})

    オプションを設定するハッシュ。指定されなかったオプションはデフォルト値が使われます。

Options Hash (options):

  • :force (Object)

    +true+ を指定すると既存の同名のカラムが 存在していても、強制的に新しいカラムを作成する。

  • :path (Object)

    カラムを保存するパス。

  • :persistent (Object)

    +true+ を指定すると永続カラムとなる。 +:path+ を省略 した場合は自動的にパスが付加される。

  • :type (Object) — default: :scalar

    カラムの値の格納方法について指定する。

    • :scalar := スカラ値(単独の値)を格納する。
    • :vector := 値の配列を格納する。
  • :with_weight (Boolean) — default: false

    It specifies whether making the column weight vector column or not. Weight vector column can store weight for each element.

    You can’t use this option for scalar column.

  • :compress (Object)

    値の圧縮方法を指定する。省略した場合は、圧縮しない。

    • :zlib: Compressed by zlib.
    • :lz4: Compzressed by LZ4.
    • :zstd: Compressed by Zstandard.
    • :zstandard: Compressed by Zstandard.


870
871
872
873
874
875
876
877
878
879
# File 'lib/groonga/schema.rb', line 870

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

#float(name, options = {}) ⇒ Object

名前が name のieee754形式の64bit浮動小数点数のカラム を作成する。

options に指定可能な値は #column を参照。



1086
1087
1088
# File 'lib/groonga/schema.rb', line 1086

def float(name, options={})
  column(name, "Float", options)
end

#index(target_table_or_target_column_full_name, *args) ⇒ Object

target_tabletarget_column を対象とするインデック スカラムを作成します。複数のカラムを指定することもで きます。

target_column_full_name で指定するときはテーブル名 とカラム名を”.”でつなげます。

例えば、「Users」テーブルの「name」カラムのインデックスカラムを 指定する場合はこうなります。

Examples:

table.index("Users.name")

Parameters:

  • args (Array)

    インデックスカラム作成時に指定できるオプション。 ハッシュを使って次の要素を指定することができる。

    • :name := インデックスカラムのカラム名を任意に指定する。 =:
    • :force := +true+ を指定すると既存の同名のカラムが 存在していても、強制的に新しいカラムを作成する。 =:
    • :path := カラムを保存するパス。 =:
    • :persistent := +true+ を指定すると永続カラムとなる。 +:path+ を省略した場合は自動的にパスが付加される。 =:
    • :with_section := +true+ を指定すると転置索引にsection(段落情報)を 合わせて格納する。未指定または +nil+ を指定した場合、 複数のカラムを指定すると自動的に有効になる。 =:
    • :with_weight := +true+ を指定すると転置索引にweight情報を合わせて 格納する。 =:
    • :with_position := +true+ を指定すると転置索引に出現位置情報を合わせて 格納する。未指定または +nil+ を指定した場合、テーブル がトークナイザー利用している場合は自動的に有効になる。 +TokenDelimit+ など全文検索用ではないトークナイザーを 使う場合は明示的に +false+ を指定することで使用リソース を少なくできる。=:


954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
# File 'lib/groonga/schema.rb', line 954

def index(target_table_or_target_column_full_name, *args)
  key, target_table, target_columns, options =
    parse_index_argument(target_table_or_target_column_full_name, *args)

  name = options.delete(:name)
  definition = self[key, IndexColumnDefinition]
  if definition.nil?
    definition = IndexColumnDefinition.new(name, options)
    update_definition(key, IndexColumnDefinition, definition)
  end
  definition.target_table = target_table
  definition.target_columns = target_columns
  definition.options.merge!(column_options.merge(options))
  self
end

#integer16(name, options = {}) ⇒ Object Also known as: int16

@name@ という名前16ビット符号付き整数のカラムを定義します。

Parameters:

  • name (String or Symbol)

    the column name

  • options (Hash) (defaults to: {})

    ({}) the options

See Also:



1018
1019
1020
# File 'lib/groonga/schema.rb', line 1018

def integer16(name, options={})
  column(name, "Int16", options)
end

#integer32(name, options = {}) ⇒ Object Also known as: integer, int32

名前が name の32bit符号付き整数のカラムを作成する。

options に指定可能な値は #column を参照。



1027
1028
1029
# File 'lib/groonga/schema.rb', line 1027

def integer32(name, options={})
  column(name, "Int32", options)
end

#integer64(name, options = {}) ⇒ Object Also known as: int64

名前が name の64bit符号付き整数のカラムを作成する。

options に指定可能な値は #column を参照。



1037
1038
1039
# File 'lib/groonga/schema.rb', line 1037

def integer64(name, options={})
  column(name, "Int64", options)
end

#integer8(name, options = {}) ⇒ Object Also known as: int8

@name@ という名前8ビット符号付き整数のカラムを定義します。

Parameters:

  • name (String or Symbol)

    the column name

  • options (Hash) (defaults to: {})

    ({}) the options

See Also:



1008
1009
1010
# File 'lib/groonga/schema.rb', line 1008

def integer8(name, options={})
  column(name, "Int8", options)
end

#long_text(name, options = {}) ⇒ Object

名前が name の2Gbyte以下の文字列を格納できるカラムを 作成する。

options に指定可能な値は #column を参照。



1134
1135
1136
# File 'lib/groonga/schema.rb', line 1134

def long_text(name, options={})
  column(name, "LongText", options)
end

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

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

table が省略された場合は name の複数形が使われる。 例えば、 name が”user”な場合は table は”users”になる。

options に指定可能な値は #column を参照。



1146
1147
1148
1149
# File 'lib/groonga/schema.rb', line 1146

def reference(name, table=nil, options={})
  table ||= lambda {|context| guess_table_name(context, name)}
  column(name, table, options)
end

#remove_column(name, options = {}) ⇒ Object

名前が name のカラムを削除します。

options に指定可能な値はありません(TODO options は不要?)。



885
886
887
888
889
890
891
892
893
# File 'lib/groonga/schema.rb', line 885

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

#remove_index(target_table_or_target_column_full_name, *args) ⇒ Object

target_tabletarget_column を対象とするインデッ クスカラムを削除します。

target_column_full_name で指定するときはテーブル名 とカラム名を”.”でつなげます。

例えば、「Users」テーブルの「name」カラムのインデックスカラムを 削除する場合はこうなります。

Examples:

table.remove_index("Users.name")

Parameters:

  • args (::Hash)

    { :name => target_column }と指定す ることでインデックスカラムの任意のカラム名を指定することができる。



984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
# File 'lib/groonga/schema.rb', line 984

def remove_index(target_table_or_target_column_full_name, *args)
  key, target_table, target_columns, options =
    parse_index_argument(target_table_or_target_column_full_name, *args)

  name = options.delete(:name)
  name ||= lambda do |context|
    IndexColumnDefinition.column_name(context,
                                      target_table,
                                      target_columns)
  end
  definition = self[key, ColumnRemoveDefinition]
  if definition.nil?
    definition = ColumnRemoveDefinition.new(name, options)
    update_definition(key, ColumnRemoveDefinition, definition)
  end
  definition.options.merge!(options)
  self
end

#rename_column(current_name, new_name, options = {}) ⇒ Object

Renames current_name column to new_name column.

Parameters:

  • options (::Hash) (defaults to: {})

    オプションを設定するハッシュ。指定されなかったオプションはデフォルト値が使われます。

Options Hash (options):

  • :context (Groonga:Context) — default: Groonga::Context.default

    The context to be used in renaming.



902
903
904
905
906
907
908
909
910
911
# File 'lib/groonga/schema.rb', line 902

def rename_column(current_name, new_name, options={})
  definition = self[name, ColumnRenameDefinition]
  if definition.nil?
    definition = ColumnRenameDefinition.new(current_name, new_name,
                                            options)
    update_definition(name, ColumnRenameDefinition, definition)
  end
  definition.options.merge!(options)
  self
end

#short_text(name, options = {}) ⇒ Object Also known as: string

名前が name の4Kbyte以下の文字列を格納できるカラムを 作成する。

options に指定可能な値は #column を参照。



1115
1116
1117
# File 'lib/groonga/schema.rb', line 1115

def short_text(name, options={})
  column(name, "ShortText", options)
end

#text(name, options = {}) ⇒ Object

名前が name の64Kbyte以下の文字列を格納できるカラムを 作成する。

options に指定可能な値は #column を参照。



1125
1126
1127
# File 'lib/groonga/schema.rb', line 1125

def text(name, options={})
  column(name, "Text", options)
end

#time(name, options = {}) ⇒ Object

名前が name の64bit符号付き整数で1970年1月1日0時0分 0秒からの経過マイクロ秒数を格納するカラムを作成する。

options に指定可能な値は #column を参照。



1095
1096
1097
# File 'lib/groonga/schema.rb', line 1095

def time(name, options={})
  column(name, "Time", options)
end

#timestamps(options = {}) ⇒ Object

以下と同様:

table.time("updated_at")
table.time("created_at")


1105
1106
1107
1108
# File 'lib/groonga/schema.rb', line 1105

def timestamps(options={})
  time("created_at", options)
  time("updated_at", options)
end

#tokyo_geo_point(name, options = {}) ⇒ Object

Defines a geo point in Tokyo geodetic system column named @name@.

Parameters:

  • name (String or Symbol)

    the column name

  • options (Hash) (defaults to: {})

    ({}) the options

See Also:



1166
1167
1168
# File 'lib/groonga/schema.rb', line 1166

def tokyo_geo_point(name, options={})
  column(name, "TokyoGeoPoint", options)
end

#unsigned_integer16(name, options = {}) ⇒ Object Also known as: uint16

@name@ という名前16ビット符号なし整数のカラムを定義します。<

Parameters:

  • name (String or Symbol)

    the column name

  • options (Hash) (defaults to: {})

    ({}) the options

See Also:



1057
1058
1059
# File 'lib/groonga/schema.rb', line 1057

def unsigned_integer16(name, options={})
  column(name, "UInt16", options)
end

#unsigned_integer32(name, options = {}) ⇒ Object Also known as: unsigned_integer, uint32

名前が name の32bit符号なし整数のカラムを作成する。

options に指定可能な値は #column を参照。



1066
1067
1068
# File 'lib/groonga/schema.rb', line 1066

def unsigned_integer32(name, options={})
  column(name, "UInt32", options)
end

#unsigned_integer64(name, options = {}) ⇒ Object Also known as: uint64

名前が name の64bit符号なし整数のカラムを作成する。

options に指定可能な値は #column を参照。



1076
1077
1078
# File 'lib/groonga/schema.rb', line 1076

def unsigned_integer64(name, options={})
  column(name, "UInt64", options)
end

#unsigned_integer8(name, options = {}) ⇒ Object Also known as: uint8

@name@ という名前8ビット符号なし整数のカラムを定義します。

Parameters:

  • name (String or Symbol)

    the column name

  • options (Hash) (defaults to: {})

    ({}) the options

See Also:



1047
1048
1049
# File 'lib/groonga/schema.rb', line 1047

def unsigned_integer8(name, options={})
  column(name, "UInt8", options)
end

#wgs84_geo_point(name, options = {}) ⇒ Object Also known as: geo_point

Defines a geo point in WGS 84 (World Geodetic System) column named @name@.

Parameters:

  • name (String or Symbol)

    the column name

  • options (Hash) (defaults to: {})

    ({}) the options

See Also:



1176
1177
1178
# File 'lib/groonga/schema.rb', line 1176

def wgs84_geo_point(name, options={})
  column(name, "WGS84GeoPoint", options)
end