Module: Cassandra::Types

Extended by:
Types
Included in:
Types
Defined in:
lib/cassandra/types.rb

Defined Under Namespace

Classes: Ascii, Bigint, Blob, Boolean, Counter, Custom, Date, Decimal, Double, Float, Inet, Int, List, Map, Set, Smallint, Text, Time, Timestamp, Timeuuid, Tinyint, Tuple, UserDefined, Uuid, Varint

Instance Method Summary collapse

Instance Method Details

#asciiCassandra::Types::Ascii

Returns ascii type.

Returns:



1433
1434
1435
# File 'lib/cassandra/types.rb', line 1433

def ascii
  Ascii
end

#bigintCassandra::Types::Bigint

Returns bigint type.

Returns:



1438
1439
1440
# File 'lib/cassandra/types.rb', line 1438

def bigint
  Bigint
end

#blobCassandra::Types::Blob

Returns blob type.

Returns:



1428
1429
1430
# File 'lib/cassandra/types.rb', line 1428

def blob
  Blob
end

#booleanCassandra::Types::Boolean

Returns boolean type.

Returns:



1458
1459
1460
# File 'lib/cassandra/types.rb', line 1458

def boolean
  Boolean
end

#counterCassandra::Types::Counter

Returns counter type.

Returns:



1443
1444
1445
# File 'lib/cassandra/types.rb', line 1443

def counter
  Counter
end

#custom(name) ⇒ Cassandra::Types::Custom

Returns custom type.

Parameters:

  • name (String)

    name of the custom type

Returns:



1633
1634
1635
# File 'lib/cassandra/types.rb', line 1633

def custom(name)
  Custom.new(name)
end

#dateCassandra::Types::Date

Returns date type.

Returns:



1498
1499
1500
# File 'lib/cassandra/types.rb', line 1498

def date
  Date
end

#decimalCassandra::Types::Decimal

Returns decimal type.

Returns:



1463
1464
1465
# File 'lib/cassandra/types.rb', line 1463

def decimal
  Decimal
end

#doubleCassandra::Types::Double

Returns double type.

Returns:



1468
1469
1470
# File 'lib/cassandra/types.rb', line 1468

def double
  Double
end

#floatCassandra::Types::Float

Returns float type.

Returns:



1473
1474
1475
# File 'lib/cassandra/types.rb', line 1473

def float
  Float
end

#inetCassandra::Types::Inet

Returns inet type.

Returns:



1478
1479
1480
# File 'lib/cassandra/types.rb', line 1478

def inet
  Inet
end

#intCassandra::Types::Int

Returns int type.

Returns:



1448
1449
1450
# File 'lib/cassandra/types.rb', line 1448

def int
  Int
end

#list(value_type) ⇒ Cassandra::Types::List

Returns list type.

Parameters:

Returns:



1519
1520
1521
1522
1523
1524
# File 'lib/cassandra/types.rb', line 1519

def list(value_type)
  Util.assert_instance_of(Cassandra::Type, value_type,
                          "list type must be a Cassandra::Type, #{value_type.inspect} given")

  List.new(value_type)
end

#map(key_type, value_type) ⇒ Cassandra::Types::Map

Returns map type.

Parameters:

Returns:



1529
1530
1531
1532
1533
1534
1535
1536
# File 'lib/cassandra/types.rb', line 1529

def map(key_type, value_type)
  Util.assert_instance_of(Cassandra::Type, key_type,
                          "map key type must be a Cassandra::Type, #{key_type.inspect} given")
  Util.assert_instance_of(Cassandra::Type, value_type,
                          "map value type must be a Cassandra::Type, #{value_type.inspect} given")

  Map.new(key_type, value_type)
end

#set(value_type) ⇒ Cassandra::Types::Set

Returns set type.

Parameters:

Returns:



1540
1541
1542
1543
1544
1545
# File 'lib/cassandra/types.rb', line 1540

def set(value_type)
  Util.assert_instance_of(Cassandra::Type, value_type,
                          "set type must be a Cassandra::Type, #{value_type.inspect} given")

  Set.new(value_type)
end

#smallintCassandra::Types::Smallint

Returns smallint type.

Returns:



1508
1509
1510
# File 'lib/cassandra/types.rb', line 1508

def smallint
  Smallint
end

#textCassandra::Types::Text

Returns text type.

Returns:



1423
1424
1425
# File 'lib/cassandra/types.rb', line 1423

def text
  Text
end

#timeCassandra::Types::Time

Returns time type.

Returns:



1503
1504
1505
# File 'lib/cassandra/types.rb', line 1503

def time
  Time
end

#timestampCassandra::Types::Timestamp

Returns timestamp type.

Returns:



1483
1484
1485
# File 'lib/cassandra/types.rb', line 1483

def timestamp
  Timestamp
end

#timeuuidCassandra::Types::Timeuuid

Returns timeuuid type.

Returns:



1493
1494
1495
# File 'lib/cassandra/types.rb', line 1493

def timeuuid
  Timeuuid
end

#tinyintCassandra::Types::Tinyint

Returns tinyint type.

Returns:



1513
1514
1515
# File 'lib/cassandra/types.rb', line 1513

def tinyint
  Tinyint
end

#tuple(*members) ⇒ Cassandra::Types::Tuple

Returns tuple type.

Parameters:

Returns:



1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
# File 'lib/cassandra/types.rb', line 1549

def tuple(*members)
  Util.assert_not_empty(members, 'tuple must contain at least one member')
  members.each do |member|
    Util.assert_instance_of(Cassandra::Type, member,
                            'each tuple member must be a Cassandra::Type, ' \
                                        "#{member.inspect} given")
  end

  Tuple.new(*members)
end

#udt(keyspace, name, *fields) ⇒ Cassandra::Types::UserDefined

Creates a User Defined Type instance

Examples:

Various ways of defining the same UDT

include Cassandra::Types

udt('simplex', 'address', {'street' => varchar,
                           'city' => varchar,
                           'state' => varchar,
                           'zip' => varchar}) #=> simplex.address

udt('simplex', 'address', [['street', varchar],
                           ['city', varchar],
                           ['state', varchar],
                           ['zip', varchar]]) #=> simplex.address

udt('simplex', 'address', ['street', varchar],
                          ['city', varchar],
                          ['state', varchar],
                          ['zip', varchar]) #=> simplex.address

udt('simplex', 'address', 'street', varchar,
                          'city', varchar,
                          'state', varchar,
                          'zip', varchar) #=> simplex.address

Parameters:

Returns:



1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
# File 'lib/cassandra/types.rb', line 1590

def udt(keyspace, name, *fields)
  keyspace = String(keyspace)
  name = String(name)
  fields = Array(fields.first) if fields.one?

  Util.assert_not_empty(fields,
                        'user-defined type must contain at least one field')

  if fields.first.is_a?(::Array)
    fields = fields.map do |pair|
      Util.assert(pair.size == 2,
                  'fields of a user-defined type must be an Array of name and ' \
                              "value pairs, #{pair.inspect} given")
      Util.assert_instance_of(::String, pair[0],
                              'each field name for a user-defined type must be a String, ' \
                                          "#{pair[0].inspect} given")
      Util.assert_instance_of(Cassandra::Type, pair[1],
                              'each field type for a user-defined type must be a ' \
                                          "Cassandra::Type, #{pair[1].inspect} given")

      UserDefined::Field.new(*pair)
    end
  else
    Util.assert(fields.size.even?,
                'fields of a user-defined type must be an Array of alternating ' \
                            "names and values pairs, #{fields.inspect} given")
    fields = fields.each_slice(2).map do |field_name, field_type|
      Util.assert_instance_of(::String, field_name,
                              'each field name for a user-defined type must be a String, ' \
                                          "#{field_name.inspect} given")
      Util.assert_instance_of(Cassandra::Type, field_type,
                              'each field type for a user-defined type must be a ' \
                                          "Cassandra::Type, #{field_type.inspect} given")

      UserDefined::Field.new(field_name, field_type)
    end
  end

  UserDefined.new(keyspace, name, fields)
end

#uuidCassandra::Types::Uuid

Returns uuid type.

Returns:



1488
1489
1490
# File 'lib/cassandra/types.rb', line 1488

def uuid
  Uuid
end

#varcharCassandra::Types::Text

Returns text type since varchar is an alias for text.

Returns:



1418
1419
1420
# File 'lib/cassandra/types.rb', line 1418

def varchar
  Text
end

#varintCassandra::Types::Varint

Returns varint type.

Returns:



1453
1454
1455
# File 'lib/cassandra/types.rb', line 1453

def varint
  Varint
end