// // Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. // using System; using System.Collections.Generic; using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlTools.ServiceLayer.ObjectExplorer.Nodes; namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel { /// /// Status for triggers /// internal partial class TriggersChildFactory : SmoChildFactoryBase { public static readonly Lazy> SmoPropertiesLazy = new Lazy>(() => new List { new NodeSmoProperty { Name = "IsEnabled", ValidFor = ValidForFlag.All } }); public override string GetNodeStatus(object smoObject, SmoQueryContext smoContext) { return TriggersCustomeNodeHelper.GetStatus(smoObject); } public override IEnumerable SmoProperties => SmoPropertiesLazy.Value; } internal partial class ServerLevelServerTriggersChildFactory : SmoChildFactoryBase { public override string GetNodeStatus(object smoObject, SmoQueryContext smoContext) { return TriggersCustomeNodeHelper.GetStatus(smoObject); } public override IEnumerable SmoProperties { get { return TriggersChildFactory.SmoPropertiesLazy.Value; } } } internal partial class DatabaseTriggersChildFactory : SmoChildFactoryBase { public override string GetNodeStatus(object smoObject, SmoQueryContext smoContext) { return TriggersCustomeNodeHelper.GetStatus(smoObject); } public override IEnumerable SmoProperties { get { return TriggersChildFactory.SmoPropertiesLazy.Value; } } } internal static class TriggersCustomeNodeHelper { internal static string GetStatus(object context) { Trigger trigger = context as Trigger; if (trigger != null) { if (!trigger.IsEnabled) { return "Disabled"; } } ServerDdlTrigger serverDdlTrigger = context as ServerDdlTrigger; if (serverDdlTrigger != null) { if (!serverDdlTrigger.IsEnabled) { return "Disabled"; } } DatabaseDdlTrigger databaseDdlTrigger = context as DatabaseDdlTrigger; if (databaseDdlTrigger != null) { if (!databaseDdlTrigger.IsEnabled) { return "Disabled"; } } return string.Empty; } } }