88 lines
1.8 KiB
Python
88 lines
1.8 KiB
Python
import datetime
|
|
import decimal
|
|
|
|
import sqlalchemy
|
|
from pydantic import Json
|
|
|
|
from orm.fields.base import BaseField # noqa I101
|
|
from orm.fields.decorators import 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)
|