import html

from pydantic import BaseModel

from src.util.sanitize import sanitize


@sanitize
class RequestBaseModel(BaseModel):
    """
    Webのリクエストを受け取る共通モデルクラス
    保持するメンバはエスケープされる
    エスケープを解除するには、unescapeメソッドを使用する
    """

    def unescape(self):
        for k, v in self.dict().items():
            if v is not None and type(v) is str:
                setattr(self, k, html.unescape(v))
        return self
