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)
    class DatetimeTest(Model):

        test_id = Integer(primary_key=True)
        created_at = DateTime()
    class IntegerTest(Model):

        test_id = UUID(primary_key=True, default=lambda: uuid4())
        value = Integer(default=0, required=True)
    class TimeUUIDTest(Model):

        test_id = Integer(primary_key=True)
        timeuuid = TimeUUID(default=uuid1())
    class UUIDTest(Model):

        test_id = Integer(primary_key=True)
        a_uuid = UUID(default=uuid4())
    class DecimalTest(Model):

        test_id = Integer(primary_key=True)
        dec_val = Decimal()
    class VarIntTest(Model):

        test_id = Integer(primary_key=True)
        bignum = VarInt(primary_key=True)
    class BoolValidationTest(Model):

        test_id = Integer(primary_key=True)
        bool_column = Boolean()
    class BoolDefaultValueTest(Model):

        test_id = Integer(primary_key=True)
        stuff = Boolean(default=True)
class UserModel(Model):
    test_id = Integer(primary_key=True)
    class_param = UserDefinedType(User)
 class DataTypeTest(Model):
     test_id = Integer(primary_key=True)
     class_param = cls.db_klass()