platform-core/modules/features/teamsbot/config.py
ValueOn AG 4a60086c80
Some checks failed
Deploy Plattform-Core (Int) / test (push) Failing after 15s
Deploy Plattform-Core (Int) / deploy (push) Has been skipped
cp adapted to 2026 poweron
2026-06-09 09:53:31 +02:00

61 lines
2.2 KiB
Python

# Copyright (c) 2026 PowerOn AG
# All rights reserved.
"""
Teamsbot Feature - Configuration utilities.
Loads and manages bot configuration from FeatureInstance.config.
"""
import logging
from typing import Optional, Dict, Any
from .datamodelTeamsbot import TeamsbotConfig
logger = logging.getLogger(__name__)
def loadConfigFromInstance(instanceId: str) -> TeamsbotConfig:
"""
Load TeamsbotConfig from a FeatureInstance's config JSONB field.
Falls back to default config if not found or invalid.
"""
try:
from modules.interfaces.interfaceDbApp import getRootInterface
from modules.interfaces.interfaceFeatures import getFeatureInterface
rootInterface = getRootInterface()
featureInterface = getFeatureInterface(rootInterface.db)
instance = featureInterface.getFeatureInstance(instanceId)
if not instance:
logger.warning(f"FeatureInstance '{instanceId}' not found, using default config")
return TeamsbotConfig()
configDict = instance.get("config") if isinstance(instance, dict) else getattr(instance, "config", None)
if configDict and isinstance(configDict, dict):
# Extract teamsbot-specific config if nested
teamsbotConfig = configDict.get("teamsbot", configDict)
return TeamsbotConfig(**teamsbotConfig)
except Exception as e:
logger.error(f"Error loading teamsbot config for instance '{instanceId}': {e}")
return TeamsbotConfig()
def saveConfigToInstance(instanceId: str, config: TeamsbotConfig) -> bool:
"""Save TeamsbotConfig to FeatureInstance.config JSONB field."""
try:
from modules.interfaces.interfaceDbApp import getRootInterface
from modules.interfaces.interfaceFeatures import getFeatureInterface
rootInterface = getRootInterface()
featureInterface = getFeatureInterface(rootInterface.db)
featureInterface.updateFeatureInstanceConfig(instanceId, config.model_dump())
logger.info(f"Teamsbot config saved for instance '{instanceId}'")
return True
except Exception as e:
logger.error(f"Error saving teamsbot config for instance '{instanceId}': {e}")
return False