public ICallistoUpdate <Person> CreateAddAttributeOperation(Guid id, PersonAttributeDto command) { _logger.LogInformation("Creating callisto operation object"); UpdateDefinition <Person> update = Builders <Person> .Update.Push(a => a.Attributes, (PersonAttribute)command); return(_updateOperationFactory.CreateUpdateById(id, update)); }
public ICallistoUpdate <Person> CreateRemoveAttributeOperation(Guid id, PersonAttributeDto command) { _logger.LogInformation("Creating callisto operation object"); FilterDefinition <PersonAttribute> pullFilter = Builders <PersonAttribute> .Filter.Eq(a => a.AttributeName, command.AttributeName); UpdateDefinition <Person> update = Builders <Person> .Update.PullFilter(a => a.Attributes, pullFilter); return(_updateOperationFactory.CreateUpdateById(id, update)); }
public ICallistoUpdate <Person> CreateUpdateAttributeOperation(Guid id, PersonAttributeDto command) { _logger.LogInformation("Creating callisto operation object"); FilterDefinition <Person> filter = Builders <Person> .Filter.Where(a => a.Id == id && a.Attributes .Any(at => at.AttributeName == command.AttributeName)); UpdateDefinition <Person> update = Builders <Person> .Update.Set(x => x.Attributes[-1].AttributeValue, command.AttributeValue); return(_updateOperationFactory.CreateUpdate(update, filter)); }