public NestedCommand Select(string requestPath) { var _requestPath = new EntityPath(from.root.Entity.ID, requestPath).Path; var p = SelectCommandHelper.ValidatePath(_requestPath); (string[], string)item; if (p.Count() > 1) { throw new ArgumentException("Only one field should be returned by sub queries"); } else if (p.Count() == 0) { throw new ArgumentException("At least one field should be returned by sub queries"); } else { item = p.First(); } if (item.Item2 == "*") { throw new ArgumentException("Select all not allowed in sub queries."); } outputField = SelectCommandHelper.GenerateSingleSelectNode(item, from); return(this); }
public void Parse_WildCard_StringPath() { var p = "Appointment.AssignedUser.*"; var r = SelectCommandHelper.ValidatePath(p); Assert.Single(r); var(path, field) = r.First(); Assert.Equal("Appointment.AssignedUser", String.Join('.', path)); Assert.Equal("*", field); }
public void Parse_MultiField_StringPath() { var p = "Appointment.AssignedUser.{LastName, FirstName , LanguageID,ID}"; var r = SelectCommandHelper.ValidatePath(p); Assert.Equal(4, r.Count()); var r1 = r.ToArray(); var(path0, field0) = r1[0]; Assert.Equal("Appointment.AssignedUser", String.Join('.', path0)); Assert.Equal("LastName", field0); var(path1, field1) = r1[1]; Assert.Equal("Appointment.AssignedUser", String.Join('.', path1)); Assert.Equal("FirstName", field1); var(path2, field2) = r1[2]; Assert.Equal("Appointment.AssignedUser", String.Join('.', path2)); Assert.Equal("LanguageID", field2); var(path3, field3) = r1[3]; Assert.Equal("Appointment.AssignedUser", String.Join('.', path3)); Assert.Equal("ID", field3); }
public SelectCommand Select(string requestPath) { var _requestPath = new EntityPath(from.root.Entity.ID, requestPath).Path; var p = SelectCommandHelper.ValidatePath(_requestPath); foreach (var item in p) { var x = from.Resolve(item.Item1); IEnumerable <SelectNode> fields; if (item.Item2 != "*") { fields = x.Entity.entityFields .Where(ef => ef.CodeName == item.Item2) .Select(ef => { return(new SelectNode() { FullPath = new FieldPath(x.FullPath.Root, x.FullPath.Path, ef.CodeName), EntityField = ef, FromNode = x }); }); } else //wildcard = select all { fields = x.Entity.entityFields .Select(ef => { return(new SelectNode() { FullPath = new FieldPath(x.FullPath.Root, x.FullPath.Path, ef.CodeName), EntityField = ef, FromNode = x }); }); } selectFields.AddRange(fields); } ((BaseCommand)this).CommandLog(LogLevel.Info, "SelectCommand", $"{{\"Action\":\"Select\", \"Path\":\"{requestPath}\"}}"); return(this); }
public void FailToParse_StringPath() { var p = "Appointment.AssignedUser. "; Assert.Throws <ArgumentException>(() => SelectCommandHelper.ValidatePath(p)); }