-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
from sqlalchemy import Column, create_engine, DateTime, String, INT, Boolean, text, Float, FLOAT
from sqlalchemy.sql import ColumnCollection
from flask_restplus import fields
class ModelExt:
__api_dic__ = {}
@classmethod
def rest_structure(cls):
if not cls.__api_dic__:
# crack in model class columns
columns = cls.metadata.tables[cls.__tablename__]._columns # type: ColumnCollection
dic = {}
for col in columns: # type: Column
if col.key == 'id':
dic[col.key] = fields.String(readOnly=True, description=col.description)
elif isinstance(col.type, String):
dic[col.key] = fields.String(description=col.description)
elif isinstance(col.type, INT):
dic[col.key] = fields.Integer(description=col.description)
elif isinstance(col.type, Boolean):
dic[col.key] = fields.Boolean(description=col.description)
elif isinstance(col.type, (Float, FLOAT)):
dic[col.key] = fields.Float(description=col.description)
elif isinstance(col.type, DateTime):
dic[col.key] = fields.DateTime(description=col.description)
else:
raise Exception(f'model column map failed: {cls.__name__}.{col.key}')
cls.__api_dic__ = dic
return cls.__api_dic__
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels