using System;
using TeamAAS.Database.Services;
using TeamAAS.Database.UI;
using TeamAAS.FlowEditor;
namespace TeamAAS.ViewModels
{
///
/// 设置页 - 产品数据管理(数据库):在设置页宿主 TeamAAS.Database 的配置页,
/// 绑定「当前主程序打开的产品」——每个产品一个库,页面即该产品的数据库配置/调试页。
/// 页面本身由 DatabaseConfigPageFactory 按数据库提供者类型动态创建(可被提供者专属页替换)。
///
public partial class SettingViewModel
{
private object _currentProductDatabasePage;
/// 右侧容器内容:按当前产品的数据库提供者类型,用工厂创建配置/调试页。
public object CurrentProductDatabasePage
{
get { return _currentProductDatabasePage; }
private set { SetProperty(ref _currentProductDatabasePage, value); }
}
private string _dbProductName = "";
/// 当前数据库配置页绑定的产品名(跟随主程序当前打开的产品)。
public string DbProductName
{
get { return _dbProductName; }
private set { SetProperty(ref _dbProductName, value); }
}
///
/// 按「当前打开的产品」刷新数据库配置页(进入本页 / 切换产品时调用)。
/// 只有当前打开的产品才有可修改的数据库页,符合“跟着产品走”。
///
private void RefreshDatabaseHost()
{
// 旧页解绑
(_currentProductDatabasePage as IDatabaseConfigPage)?.UnbindDatabase();
CurrentProductDatabasePage = null;
var product = ProductManager.Instance.CurrentProductName;
DbProductName = string.IsNullOrEmpty(product) ? "(未打开产品)" : product;
if (string.IsNullOrEmpty(product)) return;
try
{
var db = ProductDatabaseManager.GetOrCreate(product);
CurrentProductDatabasePage = DatabaseConfigPageFactory.Create(db);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine($"加载产品数据库配置页失败: {ex.Message}");
}
}
}
}