diff --git a/src/DotNetCore.CAP.MySql/IMonitoringApi.MySql.cs b/src/DotNetCore.CAP.MySql/IMonitoringApi.MySql.cs deleted file mode 100644 index ff5e491..0000000 --- a/src/DotNetCore.CAP.MySql/IMonitoringApi.MySql.cs +++ /dev/null @@ -1,231 +0,0 @@ -//// Copyright (c) .NET Core Community. All rights reserved. -//// Licensed under the MIT License. See License.txt in the project root for license information. - -//using System; -//using System.Collections.Generic; -//using System.Data; -//using System.Linq; -//using Dapper; -//using DotNetCore.CAP.Dashboard; -//using DotNetCore.CAP.Dashboard.Monitoring; -//using DotNetCore.CAP.Infrastructure; -//using DotNetCore.CAP.Messages; -//using Microsoft.Extensions.Options; -//using MySql.Data.MySqlClient; - -//namespace DotNetCore.CAP.MySql -//{ -// internal class MySqlMonitoringApi : IMonitoringApi -// { -// private readonly IDbConnection _existingConnection = null; -// private readonly string _prefix; -// private readonly string _connectionString; - -// public MySqlMonitoringApi(IOptions options) -// { -// _prefix = options.Value.TableNamePrefix ?? throw new ArgumentNullException(nameof(options)); -// _connectionString = options.Value.ConnectionString; -// } - -// public StatisticsDto GetStatistics() -// { -// var sql = string.Format(@" -//set transaction isolation level read committed; -//select count(Id) from `{0}.published` where StatusName = N'Succeeded'; -//select count(Id) from `{0}.received` where StatusName = N'Succeeded'; -//select count(Id) from `{0}.published` where StatusName = N'Failed'; -//select count(Id) from `{0}.received` where StatusName = N'Failed';", _prefix); - -// var statistics = UseConnection(connection => -// { -// var stats = new StatisticsDto(); -// using (var multi = connection.QueryMultiple(sql)) -// { -// stats.PublishedSucceeded = multi.ReadSingle(); -// stats.ReceivedSucceeded = multi.ReadSingle(); - -// stats.PublishedFailed = multi.ReadSingle(); -// stats.ReceivedFailed = multi.ReadSingle(); -// } - -// return stats; -// }); -// return statistics; -// } - -// public IDictionary HourlyFailedJobs(MessageType type) -// { -// var tableName = type == MessageType.Publish ? "published" : "received"; -// return UseConnection(connection => -// GetHourlyTimelineStats(connection, tableName, StatusName.Failed)); -// } - -// public IDictionary HourlySucceededJobs(MessageType type) -// { -// var tableName = type == MessageType.Publish ? "published" : "received"; -// return UseConnection(connection => -// GetHourlyTimelineStats(connection, tableName, StatusName.Succeeded)); -// } - -// public IList Messages(MessageQueryDto queryDto) -// { -// var tableName = queryDto.MessageType == MessageType.Publish ? "published" : "received"; -// var where = string.Empty; -// if (!string.IsNullOrEmpty(queryDto.StatusName)) -// { -// where += " and StatusName=@StatusName"; -// } - -// if (!string.IsNullOrEmpty(queryDto.Name)) -// { -// where += " and Name=@Name"; -// } - -// if (!string.IsNullOrEmpty(queryDto.Group)) -// { -// where += " and `Group`=@Group"; -// } - -// if (!string.IsNullOrEmpty(queryDto.Content)) -// { -// where += " and Content like '%@Content%'"; -// } - -// var sqlQuery = -// $"select * from `{_prefix}.{tableName}` where 1=1 {where} order by Added desc limit @Limit offset @Offset"; - -// return UseConnection(conn => conn.Query(sqlQuery, new -// { -// queryDto.StatusName, -// queryDto.Group, -// queryDto.Name, -// queryDto.Content, -// Offset = queryDto.CurrentPage * queryDto.PageSize, -// Limit = queryDto.PageSize -// }).ToList()); -// } - -// public int PublishedFailedCount() -// { -// return UseConnection(conn => GetNumberOfMessage(conn, "published", StatusName.Failed)); -// } - -// public int PublishedSucceededCount() -// { -// return UseConnection(conn => GetNumberOfMessage(conn, "published", StatusName.Succeeded)); -// } - -// public int ReceivedFailedCount() -// { -// return UseConnection(conn => GetNumberOfMessage(conn, "received", StatusName.Failed)); -// } - -// public int ReceivedSucceededCount() -// { -// return UseConnection(conn => GetNumberOfMessage(conn, "received", StatusName.Succeeded)); -// } - -// private int GetNumberOfMessage(IDbConnection connection, string tableName, string statusName) -// { -// var sqlQuery = $"select count(Id) from `{_prefix}.{tableName}` where StatusName = @state"; - -// var count = connection.ExecuteScalar(sqlQuery, new { state = statusName }); -// return count; -// } - -// private Dictionary GetHourlyTimelineStats(IDbConnection connection, string tableName, -// string statusName) -// { -// var endDate = DateTime.Now; -// var dates = new List(); -// for (var i = 0; i < 24; i++) -// { -// dates.Add(endDate); -// endDate = endDate.AddHours(-1); -// } - -// var keyMaps = dates.ToDictionary(x => x.ToString("yyyy-MM-dd-HH"), x => x); - -// return GetTimelineStats(connection, tableName, statusName, keyMaps); -// } - -// private Dictionary GetTimelineStats( -// IDbConnection connection, -// string tableName, -// string statusName, -// IDictionary keyMaps) -// { -// var sqlQuery = -// $@" -//select aggr.* from ( -// select date_format(`Added`,'%Y-%m-%d-%H') as `Key`, -// count(id) `Count` -// from `{_prefix}.{tableName}` -// where StatusName = @statusName -// group by date_format(`Added`,'%Y-%m-%d-%H') -//) aggr where `Key` in @keys;"; - -// var valuesMap = connection.Query( -// sqlQuery, -// new { keys = keyMaps.Keys, statusName }) -// .ToDictionary(x => x.Key, x => x.Count); - -// foreach (var key in keyMaps.Keys) -// { -// if (!valuesMap.ContainsKey(key)) -// { -// valuesMap.Add(key, 0); -// } -// } - -// var result = new Dictionary(); -// for (var i = 0; i < keyMaps.Count; i++) -// { -// var value = valuesMap[keyMaps.ElementAt(i).Key]; -// result.Add(keyMaps.ElementAt(i).Value, value); -// } - -// return result; -// } - -// private T UseConnection(Func func) -// { -// IDbConnection connection = null; - -// try -// { -// connection = CreateAndOpenConnection(); -// return func(connection); -// } -// finally -// { -// ReleaseConnection(connection); -// } -// } - -// private IDbConnection CreateAndOpenConnection() -// { -// var connection = _existingConnection ?? new MySqlConnection(_connectionString); - -// if (connection.State == ConnectionState.Closed) -// { -// connection.Open(); -// } - -// return connection; -// } - -// private bool IsExistingConnection(IDbConnection connection) -// { -// return connection != null && ReferenceEquals(connection, _existingConnection); -// } - -// private void ReleaseConnection(IDbConnection connection) -// { -// if (connection != null && !IsExistingConnection(connection)) -// { -// connection.Dispose(); -// } -// } -// } -//} \ No newline at end of file