Files
ormar/orm/fields/model_fields.py
2020-08-11 17:58:34 +02:00

87 lines
1.7 KiB
Python

import datetime
import decimal
import sqlalchemy
from pydantic import Json
from orm.fields.base import BaseField, RequiredParams # noqa I101
@RequiredParams("length")
class String(BaseField):
__type__ = str
def get_column_type(self) -> sqlalchemy.Column:
return sqlalchemy.String(self.length)
class Integer(BaseField):
__type__ = int
def get_column_type(self) -> sqlalchemy.Column:
return sqlalchemy.Integer()
class Text(BaseField):
__type__ = str
def get_column_type(self) -> sqlalchemy.Column:
return sqlalchemy.Text()
class Float(BaseField):
__type__ = float
def get_column_type(self) -> sqlalchemy.Column:
return sqlalchemy.Float()
class Boolean(BaseField):
__type__ = bool
def get_column_type(self) -> sqlalchemy.Column:
return sqlalchemy.Boolean()
class DateTime(BaseField):
__type__ = datetime.datetime
def get_column_type(self) -> sqlalchemy.Column:
return sqlalchemy.DateTime()
class Date(BaseField):
__type__ = datetime.date
def get_column_type(self) -> sqlalchemy.Column:
return sqlalchemy.Date()
class Time(BaseField):
__type__ = datetime.time
def get_column_type(self) -> sqlalchemy.Column:
return sqlalchemy.Time()
class JSON(BaseField):
__type__ = Json
def get_column_type(self) -> sqlalchemy.Column:
return sqlalchemy.JSON()
class BigInteger(BaseField):
__type__ = int
def get_column_type(self) -> sqlalchemy.Column:
return sqlalchemy.BigInteger()
@RequiredParams("length", "precision")
class Decimal(BaseField):
__type__ = decimal.Decimal
def get_column_type(self) -> sqlalchemy.Column:
return sqlalchemy.DECIMAL(self.length, self.precision)