| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | 
							- from sqlalchemy.orm import Session
 - 
 - from extensions.ext_database import db
 - from models.account import TenantPluginAutoUpgradeStrategy
 - 
 - 
 - class PluginAutoUpgradeService:
 -     @staticmethod
 -     def get_strategy(tenant_id: str) -> TenantPluginAutoUpgradeStrategy | None:
 -         with Session(db.engine) as session:
 -             return (
 -                 session.query(TenantPluginAutoUpgradeStrategy)
 -                 .filter(TenantPluginAutoUpgradeStrategy.tenant_id == tenant_id)
 -                 .first()
 -             )
 - 
 -     @staticmethod
 -     def change_strategy(
 -         tenant_id: str,
 -         strategy_setting: TenantPluginAutoUpgradeStrategy.StrategySetting,
 -         upgrade_time_of_day: int,
 -         upgrade_mode: TenantPluginAutoUpgradeStrategy.UpgradeMode,
 -         exclude_plugins: list[str],
 -         include_plugins: list[str],
 -     ) -> bool:
 -         with Session(db.engine) as session:
 -             exist_strategy = (
 -                 session.query(TenantPluginAutoUpgradeStrategy)
 -                 .filter(TenantPluginAutoUpgradeStrategy.tenant_id == tenant_id)
 -                 .first()
 -             )
 -             if not exist_strategy:
 -                 strategy = TenantPluginAutoUpgradeStrategy(
 -                     tenant_id=tenant_id,
 -                     strategy_setting=strategy_setting,
 -                     upgrade_time_of_day=upgrade_time_of_day,
 -                     upgrade_mode=upgrade_mode,
 -                     exclude_plugins=exclude_plugins,
 -                     include_plugins=include_plugins,
 -                 )
 -                 session.add(strategy)
 -             else:
 -                 exist_strategy.strategy_setting = strategy_setting
 -                 exist_strategy.upgrade_time_of_day = upgrade_time_of_day
 -                 exist_strategy.upgrade_mode = upgrade_mode
 -                 exist_strategy.exclude_plugins = exclude_plugins
 -                 exist_strategy.include_plugins = include_plugins
 - 
 -             session.commit()
 -             return True
 - 
 -     @staticmethod
 -     def exclude_plugin(tenant_id: str, plugin_id: str) -> bool:
 -         with Session(db.engine) as session:
 -             exist_strategy = (
 -                 session.query(TenantPluginAutoUpgradeStrategy)
 -                 .filter(TenantPluginAutoUpgradeStrategy.tenant_id == tenant_id)
 -                 .first()
 -             )
 -             if not exist_strategy:
 -                 # create for this tenant
 -                 PluginAutoUpgradeService.change_strategy(
 -                     tenant_id,
 -                     TenantPluginAutoUpgradeStrategy.StrategySetting.FIX_ONLY,
 -                     0,
 -                     TenantPluginAutoUpgradeStrategy.UpgradeMode.EXCLUDE,
 -                     [plugin_id],
 -                     [],
 -                 )
 -                 return True
 -             else:
 -                 if exist_strategy.upgrade_mode == TenantPluginAutoUpgradeStrategy.UpgradeMode.EXCLUDE:
 -                     if plugin_id not in exist_strategy.exclude_plugins:
 -                         new_exclude_plugins = exist_strategy.exclude_plugins.copy()
 -                         new_exclude_plugins.append(plugin_id)
 -                         exist_strategy.exclude_plugins = new_exclude_plugins
 -                 elif exist_strategy.upgrade_mode == TenantPluginAutoUpgradeStrategy.UpgradeMode.PARTIAL:
 -                     if plugin_id in exist_strategy.include_plugins:
 -                         new_include_plugins = exist_strategy.include_plugins.copy()
 -                         new_include_plugins.remove(plugin_id)
 -                         exist_strategy.include_plugins = new_include_plugins
 -                 elif exist_strategy.upgrade_mode == TenantPluginAutoUpgradeStrategy.UpgradeMode.ALL:
 -                     exist_strategy.upgrade_mode = TenantPluginAutoUpgradeStrategy.UpgradeMode.EXCLUDE
 -                     exist_strategy.exclude_plugins = [plugin_id]
 - 
 -                 session.commit()
 -                 return True
 
 
  |