from typing import Union from sqlalchemy import Column, String, Integer, Boolean from pydantic import BaseModel from Utils.CrudUtils import CRUDBase, QueryBase from Utils.SqlAlchemyUtils import Base class AllowedEmailCreate(BaseModel): email: str allowed: bool class AllowedEmail(AllowedEmailCreate): id: int class AllowedEmailId(BaseModel): id: int class AllowedEmailQuery(QueryBase): id: Union[int, None] email: Union[str, None] allowed: Union[bool, None] class AllowedEmailUpdate(BaseModel): id: int email: Union[str, None] allowed: Union[bool, None] class AllowedEmailModel(Base): __tablename__ = 'ALLOWED_EMAIL_TABLE' id = Column(Integer, primary_key=True, index=True) email = Column(String(255), unique=True) allowed = Column(Boolean) def to_dict(self): return {c.name: getattr(self, c.name) for c in self.__table__.columns} class AllowedEmailCrud( CRUDBase[ AllowedEmailModel, AllowedEmail, AllowedEmailCreate, AllowedEmailId, AllowedEmailUpdate, AllowedEmailQuery]): pass allowed_email_crud = AllowedEmailCrud(AllowedEmailModel, AllowedEmail, AllowedEmailId, AllowedEmailCreate, AllowedEmailUpdate, AllowedEmailQuery, "allowed_email", '注册邮箱域名')