/// <summary> /// 根据名称匹配分页查询 /// </summary> /// <param name="name"></param> /// <param name="page"></param> /// <param name="pageSize"></param> /// <returns></returns> public async Task <QueryResult <ClientSMessageTypeListenerEndpoint> > QueryByPage(string name, int page, int pageSize) { QueryResult <ClientSMessageTypeListenerEndpoint> result = new QueryResult <ClientSMessageTypeListenerEndpoint>(); await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _messageQueueConnectionFactory.CreateReadForMessageQueueMain(), async (conn, transaction) => { SqlTransaction sqlTran = null; if (transaction != null) { sqlTran = (SqlTransaction)transaction; } await using (SqlCommand command = new SqlCommand() { Connection = (SqlConnection)conn, CommandType = CommandType.Text, CommandText = string.Format(@"SET @currentpage = @page; SELECT @count = COUNT(*) FROM [ClientSMessageTypeListenerEndpoint] WHERE [name] LIKE @name; IF @pagesize * @page >= @count BEGIN SET @currentpage = @count / @pagesize; IF @count % @pagesize <> 0 BEGIN SET @currentpage = @currentpage + 1; END; IF @currentpage = 0 SET @currentpage = 1; END; ELSE IF @page < 1 BEGIN SET @currentpage = 1; END; SELECT {0} FROM [ClientSMessageTypeListenerEndpoint] WHERE [name] LIKE @name ORDER BY sequence OFFSET (@pagesize * (@currentpage - 1)) ROWS FETCH NEXT @pagesize ROWS ONLY;", StoreHelper.GetClientSMessageTypeListenerEndpointSelectFields(string.Empty)), Transaction = sqlTran }) { var parameter = new SqlParameter("@page", SqlDbType.Int) { Value = page }; command.Parameters.Add(parameter); parameter = new SqlParameter("@pagesize", SqlDbType.Int) { Value = pageSize }; command.Parameters.Add(parameter); parameter = new SqlParameter("@count", SqlDbType.Int) { Direction = ParameterDirection.Output }; command.Parameters.Add(parameter); parameter = new SqlParameter("@currentpage", SqlDbType.Int) { Direction = ParameterDirection.Output }; command.Parameters.Add(parameter); parameter = new SqlParameter("@name", SqlDbType.NVarChar, 500) { Value = $"{name.ToSqlLike()}%" }; command.Parameters.Add(parameter); await command.PrepareAsync(); SqlDataReader reader = null; await using (reader = await command.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { var endpoint = new ClientSMessageTypeListenerEndpoint(); StoreHelper.SetClientSMessageTypeListenerEndpointSelectFields(endpoint, reader, string.Empty); result.Results.Add(endpoint); } await reader.CloseAsync(); result.TotalCount = (int)command.Parameters["@count"].Value; result.CurrentPage = (int)command.Parameters["@currentpage"].Value; } } }); return(result); }
public async Task <SMessageHistoryListenerDetail> QueryByName(Guid historyId, string name) { var storeInfo = await StoreInfoHelper.GetHashStoreInfo(_storeInfoResolveService, _hashGroupRepository, _messageHistoryListenerDetailHashGroupName, historyId.ToString()); if (!storeInfo.TableNames.TryGetValue(HashEntityNames.SMessageHistoryListenerDetail, out string tableNameListenerDetail)) { var fragment = new TextFragment() { Code = TextCodes.NotFoundKeyInHashNodeKeyInfo, DefaultFormatting = "哈希组{0}中的哈希节点关键信息中找不到键值{1}", ReplaceParameters = new List <object>() { _messageHistoryListenerDetailHashGroupName, HashEntityNames.SMessageHistoryListenerDetail } }; throw new UtilityException((int)Errors.NotFoundKeyInHashNodeKeyInfo, fragment); } if (!storeInfo.TableNames.TryGetValue(HashEntityNames.SMessageHistory, out string tableNameHistory)) { var fragment = new TextFragment() { Code = TextCodes.NotFoundKeyInHashNodeKeyInfo, DefaultFormatting = "哈希组{0}中的哈希节点关键信息中找不到键值{1}", ReplaceParameters = new List <object>() { _messageHistoryListenerDetailHashGroupName, HashEntityNames.SMessageHistory } }; throw new UtilityException((int)Errors.NotFoundKeyInHashNodeKeyInfo, fragment); } SMessageHistoryListenerDetail smessageHistoryListenerDetail = null; await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _messageQueueConnectionFactory.CreateReadForSMessageHistoryListenerDetail(storeInfo.DBConnectionNames), async (conn, transaction) => { SqlTransaction sqlTran = null; if (transaction != null) { sqlTran = (SqlTransaction)transaction; } await using (SqlCommand command = new SqlCommand() { Connection = (SqlConnection)conn, CommandType = CommandType.Text, CommandText = string.Format(@"SELECT {0},{1} FROM {2} as d join {3} as h on (d.smessagehistoryid = h.id ) WHERE [ListenerName]=@listenername and SMessageHistoryID = @historyId", StoreHelper.GetSMessageHistoryListenerDetailSelectFields("d"), StoreHelper.GetSMessageHistorySelectFields("h"), tableNameListenerDetail, tableNameHistory), Transaction = sqlTran, }) { var parameter = new SqlParameter("@listenername", SqlDbType.NVarChar, 100) { Value = name }; command.Parameters.Add(parameter); parameter = new SqlParameter("@historyId", SqlDbType.UniqueIdentifier) { Value = historyId }; command.Parameters.Add(parameter); await command.PrepareAsync(); SqlDataReader reader = null; using (reader = await command.ExecuteReaderAsync()) { if (await reader.ReadAsync()) { smessageHistoryListenerDetail = new SMessageHistoryListenerDetail(); StoreHelper.SetSMessageHistoryListenerDetailSelectFields(smessageHistoryListenerDetail, reader, "d"); smessageHistoryListenerDetail.SMessageHistory = new SMessageHistory(); StoreHelper.SetSMessageHistorySelectFields(smessageHistoryListenerDetail.SMessageHistory, reader, "h"); } await reader.CloseAsync(); } } }); return(smessageHistoryListenerDetail); }
/// <summary> /// 根据名称查询 /// </summary> /// <param name="name"></param> /// <returns></returns> public async Task <ClientSMessageTypeListenerEndpoint> QueryByName(string name) { ClientSMessageTypeListenerEndpoint result = null; await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _messageQueueConnectionFactory.CreateReadForMessageQueueMain(), async (conn, transaction) => { SqlTransaction sqlTran = null; if (transaction != null) { sqlTran = (SqlTransaction)transaction; } await using (SqlCommand command = new SqlCommand() { Connection = (SqlConnection)conn, CommandType = CommandType.Text, CommandText = string.Format(@"SELECT {0} FROM [dbo].[ClientSMessageTypeListenerEndpoint] WHERE name=@name;", StoreHelper.GetClientSMessageTypeListenerEndpointSelectFields(string.Empty)), Transaction = sqlTran }) { var parameter = new SqlParameter("@name", SqlDbType.NVarChar, 500) { Value = name }; command.Parameters.Add(parameter); await command.PrepareAsync(); SqlDataReader reader = null; await using (reader = await command.ExecuteReaderAsync()) { if (await reader.ReadAsync()) { result = new ClientSMessageTypeListenerEndpoint(); StoreHelper.SetClientSMessageTypeListenerEndpointSelectFields(result, reader, string.Empty); } await reader.CloseAsync(); } } }); return(result); }
public async Task <SMessageExecuteType> QueryByName(string name) { SMessageExecuteType type = null; await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _messageQueueConnectionFactory.CreateReadForMessageQueueMain(), async (conn, transaction) => { SqlTransaction sqlTran = null; if (transaction != null) { sqlTran = (SqlTransaction)transaction; } await using (SqlCommand commond = new SqlCommand() { Connection = (SqlConnection)conn, CommandType = CommandType.Text, Transaction = sqlTran, CommandText = string.Format(@"select {0} from SMessageExecuteType where [name]=@name", StoreHelper.GetSMessageExecuteTypeSelectFields(string.Empty)) }) { var parameter = new SqlParameter("@name", SqlDbType.VarChar, 150) { Value = name }; commond.Parameters.Add(parameter); await commond.PrepareAsync(); SqlDataReader reader = null; await using (reader = await commond.ExecuteReaderAsync()) { if (await reader.ReadAsync()) { type = new SMessageExecuteType(); StoreHelper.SetSMessageExecuteTypeSelectFields(type, reader, string.Empty); } await reader.CloseAsync(); } } }); return(type); }
public async Task <QueryResult <SMessageExecuteType> > Query(string name, int page, int pageSize) { QueryResult <SMessageExecuteType> result = new QueryResult <SMessageExecuteType>(); await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _messageQueueConnectionFactory.CreateReadForMessageQueueMain(), async (conn, transaction) => { SqlTransaction sqlTran = null; if (transaction != null) { sqlTran = (SqlTransaction)transaction; } await using (SqlCommand commond = new SqlCommand() { Connection = (SqlConnection)conn, CommandType = CommandType.Text, Transaction = sqlTran, CommandText = string.Format(@"set @currentpage=@page select @count= count(*) from SMessageExecuteType where [name] like @name if @pagesize*@page>=@count begin set @currentpage= @count/@pagesize if @count%@pagesize<>0 begin set @currentpage=@currentpage+1 end if @currentpage=0 set @currentpage=1 end else if @page<1 begin set @currentpage=1 end select {0} from SMessageExecuteType where [name] like @name order by [sequence] desc offset (@pagesize * (@currentpage - 1)) rows fetch next @pagesize rows only;" , StoreHelper.GetSMessageExecuteTypeSelectFields(string.Empty)) }) { var parameter = new SqlParameter("@page", SqlDbType.Int) { Value = page }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@pagesize", SqlDbType.Int) { Value = pageSize }; parameter = new SqlParameter("@name", SqlDbType.VarChar, 200) { Value = string.Format("{0}%", name.ToSqlLike()) }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@count", SqlDbType.Int) { Direction = ParameterDirection.Output }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@currentpage", SqlDbType.Int) { Direction = ParameterDirection.Output }; commond.Parameters.Add(parameter); await commond.PrepareAsync(); SqlDataReader reader = null; await using (reader = await commond.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { var type = new SMessageExecuteType(); StoreHelper.SetSMessageExecuteTypeSelectFields(type, reader, string.Empty); result.Results.Add(type); } await reader.CloseAsync(); result.TotalCount = (int)commond.Parameters["@count"].Value; result.CurrentPage = (int)commond.Parameters["@currentpage"].Value; } } }); return(result); }
public async Task QueryByProceeGroup(string processGroupName, Func <SQueue, Task> callback) { List <SQueue> queueList = new List <SQueue>(); await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _messageQueueConnectionFactory.CreateReadForMessageQueueMain(), async (conn, transaction) => { Int64?sequence = null; int pageSize = 500; while (true) { queueList.Clear(); SqlTransaction sqlTran = null; if (transaction != null) { sqlTran = (SqlTransaction)transaction; } await using (SqlCommand commond = new SqlCommand() { Connection = (SqlConnection)conn, CommandType = CommandType.Text, Transaction = sqlTran }) { if (!sequence.HasValue) { commond.CommandText = string.Format(@"select top (@pagesize) {0} from SQueue as q join SQueueProcessGroup as g on q.processgroupid=g.id where g.[name]=@processgroupname order by [sequence]", StoreHelper.GetSQueueSelectFields("q")); } else { commond.CommandText = string.Format(@"select top (@pagesize) {0} from SQueue as q join SQueueProcessGroup as g on q.processgroupid=g.id where g.[name]=@processgroupname and [q.sequence]>@sequence order by [sequence]", StoreHelper.GetSQueueSelectFields("q")); } var parameter = new SqlParameter("@processgroupname", SqlDbType.VarChar, 150) { Value = processGroupName }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@pagesize", SqlDbType.Int) { Value = pageSize }; commond.Parameters.Add(parameter); if (sequence.HasValue) { parameter = new SqlParameter("@sequence", SqlDbType.BigInt) { Value = sequence }; commond.Parameters.Add(parameter); } await commond.PrepareAsync(); SqlDataReader reader = null; await using (reader = await commond.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { var queue = new SQueue(); StoreHelper.SetSQueueSelectFields(queue, reader, string.Empty); sequence = (Int64)reader["q.sequence"]; queueList.Add(queue); } await reader.CloseAsync(); } } foreach (var queueItem in queueList) { await callback(queueItem); } if (queueList.Count != pageSize) { break; } } }); }
public async Task <SQueue> QueryById(Guid id) { SQueue queue = null; await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _messageQueueConnectionFactory.CreateReadForMessageQueueMain(), async (conn, transaction) => { SqlTransaction sqlTran = null; if (transaction != null) { sqlTran = (SqlTransaction)transaction; } await using (SqlCommand commond = new SqlCommand() { Connection = (SqlConnection)conn, CommandType = CommandType.Text, Transaction = sqlTran, CommandText = string.Format(@"select {0} from SQueue where [id]=@id", StoreHelper.GetSQueueSelectFields(string.Empty)) }) { var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier) { Value = id }; commond.Parameters.Add(parameter); await commond.PrepareAsync(); SqlDataReader reader = null; await using (reader = await commond.ExecuteReaderAsync()) { if (await reader.ReadAsync()) { queue = new SQueue(); StoreHelper.SetSQueueSelectFields(queue, reader, string.Empty); } await reader.CloseAsync(); } } }); return(queue); }
public async Task <SQueue> QueryByCode(string groupName, bool isDead, int code) { SQueue queue = null; await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _messageQueueConnectionFactory.CreateReadForMessageQueueMain(), async (conn, transaction) => { SqlTransaction sqlTran = null; if (transaction != null) { sqlTran = (SqlTransaction)transaction; } await using (SqlCommand commond = new SqlCommand() { Connection = (SqlConnection)conn, CommandType = CommandType.Text, Transaction = sqlTran, CommandText = string.Format(@"select {0} from SQueue where [groupname]=@groupname and [code]=@code and [isdead]=@isdead", StoreHelper.GetSQueueSelectFields(string.Empty)) }) { var parameter = new SqlParameter("@groupname", SqlDbType.VarChar, 150) { Value = groupName }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@code", SqlDbType.Int) { Value = code }; commond.Parameters.Add(parameter); parameter = new SqlParameter("@isdead", SqlDbType.Bit) { Value = isDead }; commond.Parameters.Add(parameter); await commond.PrepareAsync(); SqlDataReader reader = null; await using (reader = await commond.ExecuteReaderAsync()) { if (await reader.ReadAsync()) { queue = new SQueue(); StoreHelper.SetSQueueSelectFields(queue, reader, string.Empty); } await reader.CloseAsync(); } } }); return(queue); }