refactor fields into a package

This commit is contained in:
collerek
2020-08-11 17:34:19 +02:00
parent 704e83fed0
commit 867fc691f7
13 changed files with 335 additions and 290 deletions

View File

@ -0,0 +1,86 @@
import datetime
import decimal
import sqlalchemy
from pydantic import Json
from orm.fields.base import BaseField, RequiredParams
@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)