mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-26 17:24:21 -05:00
Move unused forked code to external directory (#1192)
* Move unused forked code to external directory * Fix SLN build errors * Add back resource provider core since it's referenced by main resource provider project * Update PackageProjects step of pipeline
This commit is contained in:
21
external/Microsoft.SqlTools.CoreServices/Utility/CommonConstants.cs
vendored
Normal file
21
external/Microsoft.SqlTools.CoreServices/Utility/CommonConstants.cs
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
//
|
||||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
//
|
||||
|
||||
|
||||
namespace Microsoft.SqlTools.CoreServices.Utility
|
||||
{
|
||||
/// <summary>
|
||||
/// Common Constant values used across multiple services
|
||||
/// </summary>
|
||||
public static class CommonConstants
|
||||
{
|
||||
public const string MasterDatabaseName = "master";
|
||||
public const string MsdbDatabaseName = "msdb";
|
||||
public const string ModelDatabaseName = "model";
|
||||
public const string TempDbDatabaseName = "tempdb";
|
||||
|
||||
public const string DefaultBatchSeperator = "GO";
|
||||
}
|
||||
}
|
||||
26
external/Microsoft.SqlTools.CoreServices/Utility/DatabaseUtils.cs
vendored
Normal file
26
external/Microsoft.SqlTools.CoreServices/Utility/DatabaseUtils.cs
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// Copyright (c) Microsoft. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
//
|
||||
|
||||
using System;
|
||||
|
||||
namespace Microsoft.SqlTools.CoreServices.Utility
|
||||
{
|
||||
public class DatabaseUtils
|
||||
{
|
||||
/// <summary>
|
||||
/// Check if the database is a system database
|
||||
/// </summary>
|
||||
/// <param name="databaseName">the name of database</param>
|
||||
/// <returns>return true if the database is a system database</returns>
|
||||
public static bool IsSystemDatabaseConnection(string databaseName)
|
||||
{
|
||||
return (string.IsNullOrWhiteSpace(databaseName) ||
|
||||
string.Compare(databaseName, CommonConstants.MasterDatabaseName, StringComparison.OrdinalIgnoreCase) == 0 ||
|
||||
string.Compare(databaseName, CommonConstants.MsdbDatabaseName, StringComparison.OrdinalIgnoreCase) == 0 ||
|
||||
string.Compare(databaseName, CommonConstants.ModelDatabaseName, StringComparison.OrdinalIgnoreCase) == 0 ||
|
||||
string.Compare(databaseName, CommonConstants.TempDbDatabaseName, StringComparison.OrdinalIgnoreCase) == 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
98
external/Microsoft.SqlTools.CoreServices/Utility/InteractionMetrics.cs
vendored
Normal file
98
external/Microsoft.SqlTools.CoreServices/Utility/InteractionMetrics.cs
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
//
|
||||
// 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.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.SqlTools.Hosting.Utility;
|
||||
|
||||
namespace Microsoft.SqlTools.CoreServices
|
||||
{
|
||||
/// <summary>
|
||||
/// A class to calculate the value for the metrics using the given bucket
|
||||
/// </summary>
|
||||
public class InteractionMetrics<T>
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates new instance given a bucket of metrics
|
||||
/// </summary>
|
||||
public InteractionMetrics(int[] metrics)
|
||||
{
|
||||
Validate.IsNotNull("metrics", metrics);
|
||||
if(metrics.Length == 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("metrics");
|
||||
}
|
||||
|
||||
Counters = new ConcurrentDictionary<string, T>();
|
||||
if (!IsSorted(metrics))
|
||||
{
|
||||
Array.Sort(metrics);
|
||||
}
|
||||
Metrics = metrics;
|
||||
}
|
||||
|
||||
private ConcurrentDictionary<string, T> Counters { get; }
|
||||
|
||||
private object perfCountersLock = new object();
|
||||
|
||||
/// <summary>
|
||||
/// The metrics bucket
|
||||
/// </summary>
|
||||
public int[] Metrics { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if the given list is sorted
|
||||
/// </summary>
|
||||
private bool IsSorted(int[] metrics)
|
||||
{
|
||||
if (metrics.Length > 1)
|
||||
{
|
||||
int previous = metrics[0];
|
||||
for (int i = 1; i < metrics.Length; i++)
|
||||
{
|
||||
if(metrics[i] < previous)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
previous = metrics[i];
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update metric value given new number
|
||||
/// </summary>
|
||||
public void UpdateMetrics(double duration, T newValue, Func<string, T, T> updateValueFactory)
|
||||
{
|
||||
int metric = Metrics[Metrics.Length - 1];
|
||||
for (int i = 0; i < Metrics.Length; i++)
|
||||
{
|
||||
if (duration <= Metrics[i])
|
||||
{
|
||||
metric = Metrics[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
string key = metric.ToString();
|
||||
Counters.AddOrUpdate(key, newValue, updateValueFactory);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the quantile
|
||||
/// </summary>
|
||||
public Dictionary<string, T> Quantile
|
||||
{
|
||||
get
|
||||
{
|
||||
return Counters.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user