add:SmallInteger()
This commit is contained in:
@ -614,6 +614,7 @@ Available Model Fields (with required args - optional ones in docs):
|
||||
* `Time()`
|
||||
* `DateTime()`
|
||||
* `JSON()`
|
||||
* `SmallInteger()`
|
||||
* `BigInteger()`
|
||||
* `Decimal(scale, precision)`
|
||||
* `UUID()`
|
||||
|
||||
@ -538,6 +538,54 @@ else:
|
||||
)
|
||||
|
||||
|
||||
class SmallInteger(Integer, int):
|
||||
"""
|
||||
SmallInteger field factory that construct Field classes and populated their values.
|
||||
"""
|
||||
|
||||
_type = int
|
||||
_sample = 0
|
||||
|
||||
def __new__( # type: ignore
|
||||
cls,
|
||||
*,
|
||||
minimum: int = None,
|
||||
maximum: int = None,
|
||||
multiple_of: int = None,
|
||||
**kwargs: Any
|
||||
) -> BaseField:
|
||||
autoincrement = kwargs.pop("autoincrement", None)
|
||||
autoincrement = (
|
||||
autoincrement
|
||||
if autoincrement is not None
|
||||
else kwargs.get("primary_key", False)
|
||||
)
|
||||
kwargs = {
|
||||
**kwargs,
|
||||
**{
|
||||
k: v
|
||||
for k, v in locals().items()
|
||||
if k not in ["cls", "__class__", "kwargs"]
|
||||
},
|
||||
}
|
||||
kwargs["ge"] = kwargs["minimum"]
|
||||
kwargs["le"] = kwargs["maximum"]
|
||||
return super().__new__(cls, **kwargs)
|
||||
|
||||
@classmethod
|
||||
def get_column_type(cls, **kwargs: Any) -> Any:
|
||||
"""
|
||||
Return proper type of db column for given field type.
|
||||
Accepts required and optional parameters that each column type accepts.
|
||||
|
||||
:param kwargs: key, value pairs of sqlalchemy options
|
||||
:type kwargs: Any
|
||||
:return: initialized column with proper options
|
||||
:rtype: sqlalchemy Column
|
||||
"""
|
||||
return sqlalchemy.SmallInteger()
|
||||
|
||||
|
||||
class BigInteger(Integer, int):
|
||||
"""
|
||||
BigInteger field factory that construct Field classes and populated their values.
|
||||
|
||||
Reference in New Issue
Block a user