Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        public void FailToParse_StringPath()
        {
            var p = "Appointment.AssignedUser. ";

            Assert.Throws <ArgumentException>(() => SelectCommandHelper.ValidatePath(p));
        }