public void Update(MailWrapper data, Expression <Func <Selector <MailWrapper>, Selector <MailWrapper> > > expression, params Expression <Func <MailWrapper, object> >[] fields) { try { if (data == null) { throw new ArgumentNullException("data"); } if (expression == null) { throw new ArgumentNullException("expression"); } if (!IsIndexAvailable()) { return; } FactoryIndexer <MailWrapper> .Update(data, expression, true, fields); } catch (Exception ex) { Log.ErrorFormat("IndexEngine->Update() error: {0}", ex.ToString()); } }
public void ProjectUpdateByQuery() { var searchText = "ABCDEF"; var proj1 = CreateProject(searchText, "Description"); var proj2 = CreateProject(searchText, "Description"); var proj3 = CreateProject(searchText, "Description"); List <int> result; FactoryIndexer <ProjectsWrapper> .TrySelectIds(s => s.MatchAll(searchText), out result); Assert.AreEqual(result.Count, 3); var newTitle = "QWERTY"; FactoryIndexer <ProjectsWrapper> .Update(new ProjectsWrapper { Title = "QWERTY" }, r => r.In(t => t.Id, new[] { proj1.ID, proj2.ID }), true, r => r.Title); FactoryIndexer <ProjectsWrapper> .TrySelectIds(s => s.MatchAll(newTitle), out result); Assert.AreEqual(result.Count, 2); FactoryIndexer <ProjectsWrapper> .TrySelectIds(s => s.MatchAll(searchText), out result); Assert.AreEqual(result[0], proj3.ID); DeleteProject(proj1); DeleteProject(proj2); DeleteProject(proj3); }
public void ProjectUpdate() { var searchText = "ABCDEF"; var proj = CreateProject(searchText, "Description"); List <int> result; FactoryIndexer <ProjectsWrapper> .TrySelectIds(s => s.MatchAll(searchText), out result); Assert.AreEqual(result[0], proj.ID); FactoryIndexer <ProjectsWrapper> .Update(new ProjectsWrapper { Id = proj.ID, Title = "QWERTY" }, true, r => r.Title); FactoryIndexer <ProjectsWrapper> .Update(new ProjectsWrapper { Id = proj.ID, LastModifiedOn = DateTime.UtcNow }, true, r => r.LastModifiedOn); FactoryIndexer <ProjectsWrapper> .Update(new ProjectsWrapper { Id = proj.ID, TenantId = 10 }, true, r => r.TenantId); FactoryIndexer <ProjectsWrapper> .Update(new ProjectsWrapper { Id = proj.ID, TenantId = 5, Title = "Tenant" }, true, r => r.TenantId, r => r.Title); FactoryIndexer <ProjectsWrapper> .TrySelectIds(s => s.MatchAll(searchText), out result); CollectionAssert.IsEmpty(result); DeleteProject(proj); }
public object MoveFile(object fileId, object toFolderId) { if (fileId == null) { return(null); } using (var tx = dbManager.BeginTransaction()) { var fromFolders = dbManager .ExecuteList(Query("files_file").Select("folder_id").Where("id", fileId).GroupBy("id")) .ConvertAll(r => r[0]); var sql = Update("files_file") .Set("folder_id", toFolderId) .Where("id", fileId); if (Global.FolderTrash.Equals(toFolderId)) { sql .Set("modified_by", SecurityContext.CurrentAccount.ID.ToString()) .Set("modified_on", DateTime.UtcNow); } dbManager.ExecuteNonQuery(sql); tx.Commit(); fromFolders.ForEach(folderId => RecalculateFilesCount(dbManager, folderId)); RecalculateFilesCount(dbManager, toFolderId); } var parentFoldersIds = dbManager.ExecuteList( new SqlQuery("files_folder_tree") .Select("parent_id") .Where(Exp.Eq("folder_id", toFolderId)) .OrderBy("level", false) ).ConvertAll(row => row[0]); FactoryIndexer <FilesWrapper> .Update( new FilesWrapper() { Id = (int)fileId, Folders = parentFoldersIds.Select(r => new FilesFoldersWrapper() { FolderId = r.ToString() }).ToList(), }, UpdateAction.Replace, w => w.Folders); return(fileId); }
public virtual void DeleteByContact(int contactID) { if (contactID <= 0) { return; } Db.ExecuteNonQuery(Delete("crm_contact_info").Where(Exp.Eq("contact_id", contactID))); FactoryIndexer <InfoWrapper> .DeleteAsync(r => r.Where(a => a.ContactId, contactID)); var infos = GetList(contactID, ContactInfoType.Email, null, null); FactoryIndexer <EmailWrapper> .Update(new EmailWrapper { Id = contactID, EmailInfoWrapper = infos.Select(r => (EmailInfoWrapper)r).ToList() }, UpdateAction.Replace, r => r.EmailInfoWrapper); }
public virtual int Update(ContactInfo contactInfo) { var result = UpdateInDb(contactInfo); if (contactInfo.InfoType == ContactInfoType.Email) { var infos = GetList(contactInfo.ContactID, ContactInfoType.Email, null, null); FactoryIndexer <EmailWrapper> .Update(new EmailWrapper { Id = contactInfo.ContactID, EmailInfoWrapper = infos.Select(r => (EmailInfoWrapper)r).ToList() }, UpdateAction.Replace, r => r.EmailInfoWrapper); } FactoryIndexer <InfoWrapper> .UpdateAsync(contactInfo); return(result); }
public void Update(List <MailWrapper> mails, UpdateAction action, Expression <Func <MailWrapper, IList> > fields) { try { if (mails == null || !mails.Any()) { throw new ArgumentNullException("mails"); } if (!IsIndexAvailable()) { return; } mails.ForEach(x => FactoryIndexer <MailWrapper> .Update(x, action, fields)); } catch (Exception ex) { Log.ErrorFormat("IndexEngine->Update(count = {0}) error: {1}", mails == null ? 0 : mails.Count, ex.ToString()); } }
public void Update <T>(List <T> list, params Expression <Func <T, object> >[] fields) where T : Wrapper, new() { try { if (list == null || !list.Any()) { throw new ArgumentNullException("list"); } if (!IsIndexAvailable()) { return; } list.ForEach(x => FactoryIndexer <T> .Update(x, true, fields)); } catch (Exception ex) { var typeParameterType = typeof(T); Log.ErrorFormat("IndexEngine->Update<{0}>(mail Id = {1}) error: {2}", typeParameterType, list == null ? 0 : list.Count, ex.ToString()); } }