Add field validation for optional integer settings
- Introduced a field validator for LOG_CHAT_ID and LOG_THREAD_ID to convert empty strings to None, ensuring proper handling of optional integer fields. - This enhancement improves data integrity and validation within the settings configuration.
This commit is contained in:
+9
-1
@@ -1,6 +1,6 @@
|
||||
import logging
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
from pydantic import Field, ValidationError, computed_field
|
||||
from pydantic import Field, ValidationError, computed_field, field_validator
|
||||
from typing import Optional, List, Dict, Any
|
||||
|
||||
|
||||
@@ -293,6 +293,14 @@ class Settings(BaseSettings):
|
||||
LOG_CHAT_ID: Optional[int] = Field(default=None, description="Telegram chat/group ID for sending notifications")
|
||||
LOG_THREAD_ID: Optional[int] = Field(default=None, description="Thread ID for supergroup messages (optional)")
|
||||
|
||||
@field_validator('LOG_CHAT_ID', 'LOG_THREAD_ID', mode='before')
|
||||
@classmethod
|
||||
def validate_optional_int_fields(cls, v):
|
||||
"""Convert empty strings to None for optional integer fields"""
|
||||
if isinstance(v, str) and v.strip() == '':
|
||||
return None
|
||||
return v
|
||||
|
||||
# Notification types
|
||||
LOG_NEW_USERS: bool = Field(default=True, description="Send notifications for new user registrations")
|
||||
LOG_PAYMENTS: bool = Field(default=True, description="Send notifications for successful payments")
|
||||
|
||||
Reference in New Issue
Block a user