mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-14 01:25:40 -05:00
* Added AzureMonitor to Microsoft.Kusto.ServiceLayer. * Added Intellisense for AzureMonitor. Moved Intellisense logic from KustoIntellisenseClient to IntellisenseClientBase. * Added ServiceName as a command parameter for starting Kusto. * Added check to return null if connectionInfo is not in the connectionService. * Added support for Dashboard in MetadataService and AdminService. * Removed workspace id from databaseName for Monitor. Added logic for MetadataService and AdminService to return different information for AzureMonitor. * Moved providerName and providerDescription to DataSourceFactory. * Changed DatabaseName to include Name and Id. Changed ProviderName to LOGANALYTICS in DataSourceFactory * Fixed unit tests * Changed logic to use ServiceName instead of server to determine DataSourceType * Code review feedback and reverted changes to ObjectExplorerService. * Removed unused reference from HostLoader * Changed Parallel.Invoke to await Task.Run * Moved Kusto datasource and supporting classes to separate directory. * Removed unused datasourceFactory from ConnectionService. Added GetDatabases and GetDatabaseInfo to IDataSource and child classes * Renamed Instance variables in ObjectExplorerService. Removed unused attribute on TSqlFormatterService. Removed invalid comment in ConnectionService. * Fixed warnings in build. * Moved SizeInMB to DatabaseMetadata. Refactored ConvertToDatabaseInfo * Fixed unit test
126 lines
4.9 KiB
C#
126 lines
4.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Microsoft.Kusto.ServiceLayer.Admin.Contracts;
|
|
using Microsoft.Kusto.ServiceLayer.Metadata.Contracts;
|
|
using Microsoft.Kusto.ServiceLayer.Utility;
|
|
|
|
namespace Microsoft.Kusto.ServiceLayer.DataSource.Metadata
|
|
{
|
|
public class MetadataFactory
|
|
{
|
|
public static DataSourceObjectMetadata CreateClusterMetadata(string clusterName)
|
|
{
|
|
ValidationUtils.IsArgumentNotNullOrWhiteSpace(clusterName, nameof(clusterName));
|
|
|
|
return new DataSourceObjectMetadata
|
|
{
|
|
MetadataType = DataSourceMetadataType.Cluster,
|
|
MetadataTypeName = DataSourceMetadataType.Cluster.ToString(),
|
|
Name = clusterName,
|
|
PrettyName = clusterName,
|
|
Urn = $"{clusterName}"
|
|
};
|
|
}
|
|
|
|
public static DataSourceObjectMetadata CreateDatabaseMetadata(DataSourceObjectMetadata clusterMetadata,
|
|
string databaseName)
|
|
{
|
|
ValidationUtils.IsTrue<ArgumentException>(clusterMetadata.MetadataType == DataSourceMetadataType.Cluster,
|
|
nameof(clusterMetadata));
|
|
ValidationUtils.IsArgumentNotNullOrWhiteSpace(databaseName, nameof(databaseName));
|
|
|
|
return new DatabaseMetadata
|
|
{
|
|
ClusterName = clusterMetadata.Name,
|
|
MetadataType = DataSourceMetadataType.Database,
|
|
MetadataTypeName = DataSourceMetadataType.Database.ToString(),
|
|
Name = databaseName,
|
|
PrettyName = databaseName,
|
|
Urn = $"{clusterMetadata.Urn}.{databaseName}"
|
|
};
|
|
}
|
|
|
|
public static FolderMetadata CreateFolderMetadata(DataSourceObjectMetadata parentMetadata, string path, string name)
|
|
{
|
|
ValidationUtils.IsNotNull(parentMetadata, nameof(parentMetadata));
|
|
|
|
return new FolderMetadata
|
|
{
|
|
MetadataType = DataSourceMetadataType.Folder,
|
|
MetadataTypeName = DataSourceMetadataType.Folder.ToString(),
|
|
Name = name,
|
|
PrettyName = name,
|
|
ParentMetadata = parentMetadata,
|
|
Urn = $"{path}.{name}"
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// Converts database details shown on cluster manage dashboard to DatabaseInfo type. Add DataSourceType as param if required to show different properties
|
|
/// </summary>
|
|
/// <param name="clusterDbDetails"></param>
|
|
/// <returns></returns>
|
|
public static List<DatabaseInfo> ConvertToDatabaseInfo(IEnumerable<DataSourceObjectMetadata> clusterDbDetails)
|
|
{
|
|
if (clusterDbDetails.FirstOrDefault() is not DatabaseMetadata)
|
|
{
|
|
return new List<DatabaseInfo>();
|
|
}
|
|
|
|
var databaseDetails = new List<DatabaseInfo>();
|
|
|
|
foreach (var dataSourceObjectMetadata in clusterDbDetails)
|
|
{
|
|
var dbDetail = (DatabaseMetadata) dataSourceObjectMetadata;
|
|
long.TryParse(dbDetail.SizeInMB, out long sizeInMb);
|
|
|
|
var databaseInfo = new DatabaseInfo
|
|
{
|
|
Options =
|
|
{
|
|
["name"] = dbDetail.Name,
|
|
["sizeInMB"] = (sizeInMb / (1024 * 1024)).ToString()
|
|
}
|
|
};
|
|
|
|
databaseDetails.Add(databaseInfo);
|
|
}
|
|
|
|
return databaseDetails;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Converts tables details shown on database manage dashboard to ObjectMetadata type. Add DataSourceType as param if required to show different properties
|
|
/// </summary>
|
|
/// <param name="dbChildDetails"></param>
|
|
/// <returns></returns>
|
|
public static List<ObjectMetadata> ConvertToObjectMetadata(IEnumerable<DataSourceObjectMetadata> dbChildDetails)
|
|
{
|
|
var databaseChildDetails = new List<ObjectMetadata>();
|
|
|
|
foreach (var childDetail in dbChildDetails)
|
|
{
|
|
ObjectMetadata dbChildInfo = new ObjectMetadata();
|
|
dbChildInfo.Name = childDetail.PrettyName;
|
|
dbChildInfo.MetadataTypeName = childDetail.MetadataTypeName;
|
|
dbChildInfo.MetadataType = MetadataType.Table; // Add mapping here.
|
|
databaseChildDetails.Add(dbChildInfo);
|
|
}
|
|
|
|
return databaseChildDetails;
|
|
}
|
|
|
|
public static DataSourceObjectMetadata CreateDataSourceObjectMetadata(DataSourceMetadataType datatype, string name, string urn)
|
|
{
|
|
return new DataSourceObjectMetadata
|
|
{
|
|
MetadataType = datatype,
|
|
MetadataTypeName = datatype.ToString(),
|
|
Name = name,
|
|
PrettyName = name,
|
|
Urn = $"{urn}",
|
|
};
|
|
}
|
|
}
|
|
} |