Class: Groonga::Schema::TableDefinition
- Inherits:
-
Object
- Object
- Groonga::Schema::TableDefinition
- Includes:
- Path
- 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
-
#boolean(name, options = {}) ⇒ Object
(also: #bool)
名前が name の真偽値を格納できるカラムを作成する。.
-
#column(name, type, options = {}) ⇒ Object
名前が name で型が type のカラムを作成する。.
- #context ⇒ Object
- #define ⇒ Object
-
#float(name, options = {}) ⇒ Object
名前が name のieee754形式の64bit浮動小数点数のカラム を作成する。.
-
#index(target_table_or_target_column_full_name, *args) ⇒ Object
target_table の target_column を対象とするインデック スカラムを作成します。複数のカラムを指定することもで きます。.
-
#initialize(name, options) ⇒ TableDefinition
constructor
A new instance of TableDefinition.
-
#integer16(name, options = {}) ⇒ Object
(also: #int16)
Defines a 16 bit signed integer column named @name@.
-
#integer32(name, options = {}) ⇒ Object
(also: #integer, #int32)
名前が name の32bit符号付き整数のカラムを作成する。.
-
#integer64(name, options = {}) ⇒ Object
(also: #int64)
名前が name の64bit符号付き整数のカラムを作成する。.
-
#integer8(name, options = {}) ⇒ Object
(also: #int8)
Defines a 8 bit signed integer column named @name@.
-
#long_text(name, options = {}) ⇒ Object
名前が name の2Gbyte以下の文字列を格納できるカラムを 作成する。.
-
#reference(name, table = nil, options = {}) ⇒ Object
名前が name で table のレコードIDを格納する参照カラ ムを作成する。.
-
#remove_column(name, options = {}) ⇒ Object
名前が name のカラムを削除します。.
-
#remove_index(target_table_or_target_column_full_name, *args) ⇒ Object
target_table の target_column を対象とするインデッ クスカラムを削除します。.
-
#rename_column(current_name, new_name, options = {}) ⇒ Object
Renames current_name column to new_name column.
-
#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秒からの経過マイクロ秒数を格納するカラムを作成する。.
-
#timestamps(options = {}) ⇒ Object
以下と同様: table.time(“updated_at”) table.time(“created_at”).
-
#tokyo_geo_point(name, options = {}) ⇒ Object
Defines a geo point in Tokyo geodetic system column named @name@.
-
#unsigned_integer16(name, options = {}) ⇒ Object
(also: #uint16)
Defines a 16 bit unsigned integer column named @name@.
-
#unsigned_integer32(name, options = {}) ⇒ Object
(also: #unsigned_integer, #uint32)
名前が name の32bit符号なし整数のカラムを作成する。.
-
#unsigned_integer64(name, options = {}) ⇒ Object
(also: #uint64)
名前が name の64bit符号なし整数のカラムを作成する。.
-
#unsigned_integer8(name, options = {}) ⇒ Object
(also: #uint8)
Defines a 8 bit unsigned integer column named @name@.
-
#wgs84_geo_point(name, options = {}) ⇒ Object
(also: #geo_point)
Defines a geo point in WGS 84 (World Geodetic System) column named @name@.
Methods included from Path
#columns_directory_path, #rmdir_if_available, #tables_directory_path
Constructor Details
#initialize(name, options) ⇒ TableDefinition
Returns a new instance of TableDefinition.
1004 1005 1006 1007 1008 1009 1010 1011 |
# File 'lib/groonga/schema.rb', line 1004 def initialize(name, ) @name = name @name = @name.to_s if @name.is_a?(Symbol) @definitions = [] () @options = @table_type = table_type end |
Instance Attribute Details
#name ⇒ Object (readonly)
テーブルの名前
1001 1002 1003 |
# File 'lib/groonga/schema.rb', line 1001 def name @name end |
Instance Method Details
#[](name, definition_class = nil) ⇒ Object
1394 1395 1396 1397 1398 1399 |
# File 'lib/groonga/schema.rb', line 1394 def [](name, definition_class=nil) @definitions.find do |definition| definition.name.to_s == name.to_s and (definition_class.nil? or definition.is_a?(definition_class)) end end |
#boolean(name, options = {}) ⇒ Object Also known as: bool
名前が name の真偽値を格納できるカラムを作成する。
options に指定可能な値は #column を参照。
1354 1355 1356 |
# File 'lib/groonga/schema.rb', line 1354 def boolean(name, ={}) column(name, "Bool", ) end |
#column(name, type, options = {}) ⇒ Object
名前が name で型が type のカラムを作成する。
1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 |
# File 'lib/groonga/schema.rb', line 1067 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
1402 1403 1404 |
# File 'lib/groonga/schema.rb', line 1402 def context @options[:context] || Groonga::Context.default end |
#define ⇒ Object
1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 |
# File 'lib/groonga/schema.rb', line 1014 def define table = context[@name] if @options[:change] raise TableNotExists.new(@name) if table.nil? else if table unless same_table?(table, ) if @options[:force] table.remove table = nil else = raise TableCreationWithDifferentOptions.new(table, ) end end 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 に指定可能な値は #column を参照。
1288 1289 1290 |
# File 'lib/groonga/schema.rb', line 1288 def float(name, ={}) column(name, "Float", ) end |
#index(target_table_or_target_column_full_name, *args) ⇒ Object
target_table の target_column を対象とするインデック スカラムを作成します。複数のカラムを指定することもで きます。
target_column_full_name で指定するときはテーブル名 とカラム名を“.”でつなげます。例えば、「Users」テーブ ルの「name」カラムのインデックスカラムを指定する場合 はこうなります。
table.index("Users.name")
1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 |
# File 'lib/groonga/schema.rb', line 1152 def index(target_table_or_target_column_full_name, *args) key, target_table, target_columns, = parse_index_argument(target_table_or_target_column_full_name, *args) name = .delete(:name) definition = self[key, IndexColumnDefinition] if definition.nil? definition = IndexColumnDefinition.new(name, ) update_definition(key, IndexColumnDefinition, definition) end definition.target_table = target_table definition.target_columns = target_columns definition..merge!(.merge()) self end |
#integer16(name, options = {}) ⇒ Object Also known as: int16
Defines a 16 bit signed integer column named @name@.
1218 1219 1220 |
# File 'lib/groonga/schema.rb', line 1218 def integer16(name, ={}) column(name, "Int16", ) end |
#integer32(name, options = {}) ⇒ Object Also known as: integer, int32
名前が name の32bit符号付き整数のカラムを作成する。
options に指定可能な値は #column を参照。
1227 1228 1229 |
# File 'lib/groonga/schema.rb', line 1227 def integer32(name, ={}) column(name, "Int32", ) end |
#integer64(name, options = {}) ⇒ Object Also known as: int64
名前が name の64bit符号付き整数のカラムを作成する。
options に指定可能な値は #column を参照。
1237 1238 1239 |
# File 'lib/groonga/schema.rb', line 1237 def integer64(name, ={}) column(name, "Int64", ) end |
#integer8(name, options = {}) ⇒ Object Also known as: int8
Defines a 8 bit signed integer column named @name@.
1207 1208 1209 |
# File 'lib/groonga/schema.rb', line 1207 def integer8(name, ={}) column(name, "Int8", ) end |
#long_text(name, options = {}) ⇒ Object
名前が name の2Gbyte以下の文字列を格納できるカラムを 作成する。
options に指定可能な値は #column を参照。
1333 1334 1335 |
# File 'lib/groonga/schema.rb', line 1333 def long_text(name, ={}) column(name, "LongText", ) end |
#reference(name, table = nil, options = {}) ⇒ Object
名前が name で table のレコードIDを格納する参照カラ ムを作成する。
table が省略された場合は name の複数形が使われる。 例えば、 name が“user”な場合は table は“users”になる。
options に指定可能な値は #column を参照。
1345 1346 1347 1348 |
# File 'lib/groonga/schema.rb', line 1345 def reference(name, table=nil, ={}) table ||= lambda {|context| guess_table_name(context, name)} column(name, table, ) end |
#remove_column(name, options = {}) ⇒ Object
名前が name のカラムを削除します。
options に指定可能な値はありません(TODO options は不要?)。
1082 1083 1084 1085 1086 1087 1088 1089 1090 |
# File 'lib/groonga/schema.rb', line 1082 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 |
#remove_index(target_table_or_target_column_full_name, *args) ⇒ Object
target_table の target_column を対象とするインデッ クスカラムを削除します。
target_column_full_name で指定するときはテーブル名 とカラム名を“.”でつなげます。例えば、「Users」テーブ ルの「name」カラムのインデックスカラムを削除する場合 はこうなります。
table.remove_index("Users.name")
1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 |
# File 'lib/groonga/schema.rb', line 1182 def remove_index(target_table_or_target_column_full_name, *args) key, target_table, target_columns, = parse_index_argument(target_table_or_target_column_full_name, *args) name = .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, ) update_definition(key, ColumnRemoveDefinition, definition) end definition..merge!() self end |
#rename_column(current_name, new_name, options = {}) ⇒ Object
Renames current_name column to new_name column.
1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 |
# File 'lib/groonga/schema.rb', line 1099 def rename_column(current_name, new_name, ={}) definition = self[name, ColumnRenameDefinition] if definition.nil? definition = ColumnRenameDefinition.new(current_name, new_name, ) update_definition(name, ColumnRenameDefinition, definition) end definition..merge!() self end |
#short_text(name, options = {}) ⇒ Object Also known as: string
名前が name の4Kbyte以下の文字列を格納できるカラムを 作成する。
options に指定可能な値は #column を参照。
1314 1315 1316 |
# File 'lib/groonga/schema.rb', line 1314 def short_text(name, ={}) column(name, "ShortText", ) end |
#text(name, options = {}) ⇒ Object
名前が name の64Kbyte以下の文字列を格納できるカラムを 作成する。
options に指定可能な値は #column を参照。
1324 1325 1326 |
# File 'lib/groonga/schema.rb', line 1324 def text(name, ={}) column(name, "Text", ) end |
#time(name, options = {}) ⇒ Object
名前が name の64bit符号付き整数で1970年1月1日0時0分 0秒からの経過マイクロ秒数を格納するカラムを作成する。
options に指定可能な値は #column を参照。
1297 1298 1299 |
# File 'lib/groonga/schema.rb', line 1297 def time(name, ={}) column(name, "Time", ) end |
#timestamps(options = {}) ⇒ Object
以下と同様:
table.time("updated_at")
table.time("created_at")
1304 1305 1306 1307 |
# File 'lib/groonga/schema.rb', line 1304 def (={}) time("created_at", ) time("updated_at", ) end |
#tokyo_geo_point(name, options = {}) ⇒ Object
Defines a geo point in Tokyo geodetic system column named @name@.
1377 1378 1379 |
# File 'lib/groonga/schema.rb', line 1377 def tokyo_geo_point(name, ={}) column(name, "TokyoGeoPoint", ) end |
#unsigned_integer16(name, options = {}) ⇒ Object Also known as: uint16
Defines a 16 bit unsigned integer column named @name@.
1259 1260 1261 |
# File 'lib/groonga/schema.rb', line 1259 def unsigned_integer16(name, ={}) column(name, "UInt16", ) end |
#unsigned_integer32(name, options = {}) ⇒ Object Also known as: unsigned_integer, uint32
名前が name の32bit符号なし整数のカラムを作成する。
options に指定可能な値は #column を参照。
1268 1269 1270 |
# File 'lib/groonga/schema.rb', line 1268 def unsigned_integer32(name, ={}) column(name, "UInt32", ) end |
#unsigned_integer64(name, options = {}) ⇒ Object Also known as: uint64
名前が name の64bit符号なし整数のカラムを作成する。
options に指定可能な値は #column を参照。
1278 1279 1280 |
# File 'lib/groonga/schema.rb', line 1278 def unsigned_integer64(name, ={}) column(name, "UInt64", ) end |
#unsigned_integer8(name, options = {}) ⇒ Object Also known as: uint8
Defines a 8 bit unsigned integer column named @name@.
1248 1249 1250 |
# File 'lib/groonga/schema.rb', line 1248 def unsigned_integer8(name, ={}) column(name, "UInt8", ) 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@.
1388 1389 1390 |
# File 'lib/groonga/schema.rb', line 1388 def wgs84_geo_point(name, ={}) column(name, "WGS84GeoPoint", ) end |