internal void ProcessSearchRequestMessage(Node messageFrom, SearchRequestInfo searchRequest) { lock (SeenSearchRequests) { if (SeenSearchRequests.ContainsKey(searchRequest.Id)) { return; // Ignore. We probably saw this same request from the same person // on multiple networks. } else { // Store timestamp so we can cleanup the list later. // XXX: Cleanup not implemented yet SeenSearchRequests[searchRequest.Id] = DateTime.Now; } } SearchResultInfo reply = Core.FileSystem.SearchFiles(searchRequest.Query); reply.SearchId = searchRequest.Id; if (reply.Files.Length > 0 || reply.Directories.Length > 0) { network.SendSearchReply(messageFrom, reply); } }
public Message CreateSearchRequestMessage(int searchRequestId, string searchString, int page) { Message p = new Message(network, MessageType.SearchRequest); SearchRequestInfo c = new SearchRequestInfo(searchRequestId, searchString, page); p.Content = c; return(p); }
public PluginPaginationResponse <DemoPluginRawData> GetDataForDemoList([FromBody] SearchRequestInfo <DemoPluginRawData> request) { if (request.Method == PluginRequestMethod.Update) { var updateRawData = request.RawData; if (updateRawData != null) { var dbRawData = SampleDatas.FirstOrDefault(d => d.Id == updateRawData.Id); if (dbRawData != null) { dbRawData.Name = updateRawData.Name; dbRawData.Type = updateRawData.Type; } // update raw data here. } } else if (request.Method == PluginRequestMethod.Delete) { var deleteRawData = request.RawData; if (deleteRawData != null) { if (SampleDatas.Any(d => d.Id == deleteRawData.Id)) { // delete the raw data here. SampleDatas.Remove(SampleDatas.First(d => d.Id == deleteRawData.Id)); } } } var keyword = request.Keyword; var page = request.Page; var pageSize = request.PageSize; IEnumerable <DemoPluginRawData> raws = SampleDatas; if (!string.IsNullOrEmpty(keyword)) { raws = raws.Where(r => r.Name.Contains(keyword)); } var total = raws.Count(); raws = raws.Skip((page - 1) * pageSize).Take(pageSize); return(new PluginPaginationResponse <DemoPluginRawData>() { Page = page, PageSize = pageSize, Raws = raws.ToList(), Total = total }); }
public async Task <PluginPaginationResponse <AccountEntity> > Post([FromBody] SearchRequestInfo <AccountEntity> request, CancellationToken token) { if (request.Method == PluginRequestMethod.Update) { var updateRawData = request.RawData; if (updateRawData != null) { var filterDefinition = Builders <AccountEntity> .Filter.Where(e => e.Id == updateRawData.Id); var updateDefinition = Builders <AccountEntity> .Update.Set(e => e.AccountStatus, updateRawData.AccountStatus); await this.UCenterDatabase.Accounts.UpdateOneAsync(updateRawData, filterDefinition, updateDefinition, token); } } string keyword = request.Keyword; int page = request.Page; int count = request.PageSize; Expression <Func <AccountEntity, bool> > filter = null; if (!string.IsNullOrEmpty(keyword)) { filter = a => a.AccountName.Contains(keyword) || a.Email.Contains(keyword) || a.Phone.Contains(keyword); } var total = await this.UCenterDatabase.Accounts.CountAsync(filter, token); IQueryable <AccountEntity> queryable = this.UCenterDatabase.Accounts.Collection.AsQueryable(); if (filter != null) { queryable = queryable.Where(filter); } queryable = queryable.OrderByDescending(a => a.CreatedTime); var result = queryable.Skip((page - 1) * count).Take(count).ToList(); // todo: add orderby support. var model = new PluginPaginationResponse <AccountEntity> { Page = page, PageSize = count, Raws = result, Total = total }; return(model); }
public async Task <PluginPaginationResponse <AppConfigurationEntity> > Post([FromBody] SearchRequestInfo <AppConfigurationEntity> request, CancellationToken token) { if (request.Method == PluginRequestMethod.Update) { var updateRawData = request.RawData; if (updateRawData != null) { var filterDefinition = Builders <AppConfigurationEntity> .Filter.Where(e => e.Id == updateRawData.Id); var updateDefinition = Builders <AppConfigurationEntity> .Update .Set(e => e.Configuration, updateRawData.Configuration); await this.UCenterDatabase.AppConfigurations.UpdateOneAsync(updateRawData, filterDefinition, updateDefinition, token); } } string keyword = request.GetParameterValue <string>("keyword"); int page = request.GetParameterValue <int>("page", 1); int count = request.GetParameterValue <int>("pageSize", 10); Expression <Func <AppConfigurationEntity, bool> > filter = null; if (!string.IsNullOrEmpty(keyword)) { filter = a => a.Name.Contains(keyword); } var total = await this.UCenterDatabase.AppConfigurations.CountAsync(filter, token); IQueryable <AppConfigurationEntity> queryable = this.UCenterDatabase.AppConfigurations.Collection.AsQueryable(); if (filter != null) { queryable = queryable.Where(filter); } var result = queryable.Skip((page - 1) * count).Take(count).ToList(); // todo: add orderby support. var model = new PluginPaginationResponse <AppConfigurationEntity> { Page = page, PageSize = count, Raws = result, Total = total }; return(model); }
public async Task <PluginPaginationResponse <ExceptionEventEntity> > Post([FromBody] SearchRequestInfo <ExceptionEventEntity> request, CancellationToken token) { if (request.Method == PluginRequestMethod.Delete) { var deleteRawData = request.RawData; if (deleteRawData != null) { await this.UCenterEventDatabase.ExceptionEvents.DeleteAsync( v => v.Id == deleteRawData.Id, token); } } string keyword = request.GetParameterValue <string>("keyword"); int page = request.GetParameterValue <int>("page", 1); int count = request.GetParameterValue <int>("pageSize", 10); Expression <Func <ExceptionEventEntity, bool> > filter = null; if (!string.IsNullOrEmpty(keyword)) { filter = a => a.Message.Contains(keyword); } var total = await this.UCenterEventDatabase.ExceptionEvents.CountAsync(filter, token); IQueryable <ExceptionEventEntity> queryable = this.UCenterEventDatabase.ExceptionEvents.Collection.AsQueryable(); if (filter != null) { queryable = queryable.Where(filter); } queryable = queryable.OrderByDescending(e => e.CreatedTime); var result = queryable.Skip((page - 1) * count).Take(count).ToList(); // todo: add orderby support. var model = new PluginPaginationResponse <ExceptionEventEntity> { Page = page, PageSize = count, Raws = result, Total = total }; return(model); }