예제 #1
0
class Game(Model):
    home_team = Text(primary_key=True, required=True)
    away_team = Text(primary_key=True, required=True)
    date = Date(primary_key=True, clustering_order="ASC")
    home_win = Boolean(required=True)
    playoffs = Boolean(required=True)
    season = Text(required=True)

    home_players = Set(value_type=Integer)
    away_players = Set(value_type=Integer)
    # cassandra.cqlengine.columns.Set

    # home_rest = Integer()	# number of games past X days
    # away_rest = Integer()

    # home_success = Integer()	# recent record past X games
    # away_success = Integer()

    home_wins = Integer()
    home_losses = Integer()

    away_wins = Integer()
    away_losses = Integer()

    # rest for each team
    # recent success for each team
    # records for each team

    @staticmethod
    def get_model_string():
        return 'game'

    def validate(self):
        super(Game, self).validate()
예제 #2
0
def _str_to_column(type_str, key_type=None, value_type=None, column_def={}):
    '''
    Converts name of Cassandra types to driver class wrapper for
    that type.
    '''
    type_str = type_str.lower()

    if type_str == 'integer':
        return Integer(**column_def)
    elif type_str == 'text':
        return Text(**column_def)
    elif type_str == 'ascii':
        return Ascii(**column_def)
    elif type_str == 'bigint':
        return BigInt(**column_def)
    elif type_str == 'blob':
        return Blob(**column_def)
    elif type_str == 'bytes':
        return Bytes(**column_def)
    elif type_str == 'boolean':
        return Boolean(**column_def)
    elif type_str == 'counter':
        return Counter(**column_def)
    elif type_str == 'date':
        return Date(**column_def)
    elif type_str == 'datetime':
        return DateTime(**column_def)
    elif type_str == 'decimal':
        return Decimal(**column_def)
    elif type_str == 'double':
        return Double(**column_def)
    elif type_str == 'float':
        return Float(**column_def)
    elif type_str == 'list':
        _assert_type_exception(value_type, "list type requires value_type")
        return List(value_type=value_type, **column_def)
    elif type_str == 'map':
        _assert_type_exception(key_type, "list type requires key_type")
        _assert_type_exception(value_type, "list type requires value_type")
        return Map(key_type=key_type, value_type=value_type, **column_def)
    elif type_str == 'set':
        _assert_type_exception(value_type, "set type requires value_type")
        return Set(value_type=value_type, **column_def)
    elif type_str == 'smallint':
        return SmallInt(**column_def)
    elif type_str == 'time':
        return Time(**column_def)
    elif type_str == 'timeuuid':
        return TimeUUID(**column_def)
    elif type_str == 'timestamp':
        return TimeUUID(**column_def)
    elif type_str == 'tinyint':
        return TinyInt(**column_def)
    elif type_str == 'uuid':
        return UUID(**column_def)
    elif type_str == 'varint':
        return VarInt(**column_def)
    else:
        raise Exception('Type {} is not defined.'.format(type_str))
예제 #3
0
class User(UserType):
    # We use Date and Time to ensure to_python
    # is called for these columns
    age = Integer()
    date_param = Date()
    map_param = Map(Integer, Time)
    list_param = List(Date)
    set_param = Set(Date)
    tuple_param = Tuple(Date, Decimal, Boolean, VarInt, Double, UUID)
예제 #4
0
 def test_update_empty_set_removal_does_not_assign(self):
     us = UpdateStatement('table')
     us.add_update(Set(Text, db_field='a'), set(), 'remove')
     self.assertFalse(us.assignments)
예제 #5
0
 def test_update_set_add(self):
     us = UpdateStatement('table')
     us.add_update(Set(Text, db_field='a'), set((1, )), 'add')
     self.assertEqual(six.text_type(us),
                      'UPDATE table SET "a" = "a" + %(0)s')
예제 #6
0
 def test_update_empty_set_removal_does_not_assign(self):
     us = UpdateStatement('table')
     us.add_assignment_clause(
         SetUpdateClause('a', Set.Quoter(set()), operation='remove'))
     self.assertEqual(six.text_type(us),
                      'UPDATE table SET "a" = "a" - %(0)s')
예제 #7
0
 def test_update_set_add(self):
     us = UpdateStatement('table')
     us.add_assignment_clause(
         SetUpdateClause('a', Set.Quoter({1}), operation='add'))
     self.assertEqual(six.text_type(us),
                      'UPDATE table SET "a" = "a" + %(0)s')