public UpdateQueryFluentBuilder1 <TModel> AddToList <TValue>(Expression <Func <TModel, IList <TValue> > > field, TValue value, UpdateAddToListFlags flags = UpdateAddToListFlags.None) { _updateStatementsBuilder.AddToList(field, value, flags); return(this); }
public UpdateStatementsBuilder <TModel> AddToList <TValue>(Expression <Func <TModel, IList <TValue> > > field, TValue value, UpdateAddToListFlags flags = UpdateAddToListFlags.None) { var pi = NodeVisitor.VisitPath(field, null); if (pi.Expression.Type is KDPgValueTypeArray) { if ((flags & UpdateAddToListFlags.Distinct) == UpdateAddToListFlags.None) { AddUpdate(pi.Column, src => ExpressionBuilders.ArrayAddItem(src, value)); } else { AddUpdate(pi.Column, src => ExpressionBuilders.KDPgArrayDistinct(ExpressionBuilders.ArrayAddItem(src, value))); } } else if (pi.Expression.Type is KDPgValueTypeJson) { if (flags != 0) { throw new Exception("flags not allowed on json array"); } AddUpdate(pi.Column, src => ExpressionBuilders.KDPgJsonbAdd(src, pi.JsonPath, value)); } else { throw new Exception("unable to add to non-list"); } return(this); }