From 9f528d23d442c04805d4fef3e2a2326f6b109a5b Mon Sep 17 00:00:00 2001 From: Asuka Minato Date: Sun, 31 Aug 2025 03:41:52 +0900 Subject: [PATCH] poc of validate config (#24837) Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- .../features/more_like_this/manager.py | 44 ++++++++----------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/api/core/app/app_config/features/more_like_this/manager.py b/api/core/app/app_config/features/more_like_this/manager.py index 496e1beee..f0ec6b0f6 100644 --- a/api/core/app/app_config/features/more_like_this/manager.py +++ b/api/core/app/app_config/features/more_like_this/manager.py @@ -1,3 +1,14 @@ +from pydantic import BaseModel, Field, ValidationError + + +class MoreLikeThisConfig(BaseModel): + enabled: bool = False + + +class AppConfigModel(BaseModel): + more_like_this: MoreLikeThisConfig = Field(default_factory=MoreLikeThisConfig) + + class MoreLikeThisConfigManager: @classmethod def convert(cls, config: dict) -> bool: @@ -6,31 +17,14 @@ class MoreLikeThisConfigManager: :param config: model config args """ - more_like_this = False - more_like_this_dict = config.get("more_like_this") - if more_like_this_dict: - if more_like_this_dict.get("enabled"): - more_like_this = True - - return more_like_this + validated_config, _ = cls.validate_and_set_defaults(config) + return AppConfigModel.model_validate(validated_config).more_like_this.enabled @classmethod def validate_and_set_defaults(cls, config: dict) -> tuple[dict, list[str]]: - """ - Validate and set defaults for more like this feature - - :param config: app model config args - """ - if not config.get("more_like_this"): - config["more_like_this"] = {"enabled": False} - - if not isinstance(config["more_like_this"], dict): - raise ValueError("more_like_this must be of dict type") - - if "enabled" not in config["more_like_this"] or not config["more_like_this"]["enabled"]: - config["more_like_this"]["enabled"] = False - - if not isinstance(config["more_like_this"]["enabled"], bool): - raise ValueError("enabled in more_like_this must be of boolean type") - - return config, ["more_like_this"] + try: + return AppConfigModel.model_validate(config).dict(), ["more_like_this"] + except ValidationError as e: + raise ValueError( + "more_like_this must be of dict type and enabled in more_like_this must be of boolean type" + )