Exemplo n.º 1
0
        public void Parse()
        {
            //existing persiston
            var pk = DatonKey.Parse("Emp|=3") as PersistonKey;

            Assert.AreEqual("Emp", pk.Name);
            Assert.AreEqual("3", pk.PrimaryKey);
            Assert.IsFalse(pk.WholeTable);
            Assert.IsFalse(pk.IsNew);

            //new persiston
            pk = DatonKey.Parse("Emp|=-1") as PersistonKey;
            Assert.AreEqual("Emp", pk.Name);
            Assert.AreEqual("-1", pk.PrimaryKey);
            Assert.IsFalse(pk.WholeTable);
            Assert.IsTrue(pk.IsNew);

            //whole table persiston
            pk = DatonKey.Parse("EmpType|+") as PersistonKey;
            Assert.AreEqual("EmpType", pk.Name);
            Assert.IsTrue(pk.WholeTable);
            Assert.IsFalse(pk.IsNew);

            //viewon without criteria
            var vk = DatonKey.Parse("EmpList") as ViewonKey;

            Assert.AreEqual("EmpList", vk.Name);
            Assert.AreEqual(0, vk.PageNumber);
            Assert.IsNull(vk.SortColumnName);
            Assert.AreEqual(0, vk.Criteria.Count());

            //viewon with escaped criteria
            vk = DatonKey.Parse(@"CustomerList|code1=\\/|code2=\||code3=a=\|b\|") as ViewonKey;
            Assert.AreEqual("CustomerList", vk.Name);
            Assert.AreEqual(3, vk.Criteria.Count());
            var criArray = vk.Criteria.ToArray();

            Assert.AreEqual("code1", criArray[0].Name);
            Assert.AreEqual(@"\/", criArray[0].PackedValue);
            Assert.AreEqual("code2", criArray[1].Name);
            Assert.AreEqual("|", criArray[1].PackedValue);
            Assert.AreEqual("code3", criArray[2].Name);
            Assert.AreEqual("a=|b|", criArray[2].PackedValue);

            //with sort and page
            vk = DatonKey.Parse("EmpList|_page=2|_sort=firstName") as ViewonKey;
            Assert.AreEqual("EmpList", vk.Name);
            Assert.AreEqual(2, vk.PageNumber);
            Assert.AreEqual("firstName", vk.SortColumnName);
            Assert.AreEqual(0, vk.Criteria.Count());
        }
Exemplo n.º 2
0
        public async Task <object> Get(string datonKey)
        {
            //authenticate; for demo purposes we will assume the user, but for a real app you would check the authentication
            //header and look up the user in a cache or databse
            var user = UserCache.Buffy_The_Admin;

            //get the daton, with permissions enforced (so it may be missing some rows and columns depending on the user)
            var key        = DatonKey.Parse(datonKey);
            var loadResult = await Globals.Retroverse.GetDaton(key, user);

            if (loadResult.Daton == null)
            {
                return(null);                          //could check loadResult.Errors here too
            }
            //return as json
            string json = Retrovert.ToWire(Globals.Retroverse.DataDictionary, loadResult.Daton, true);

            return(Content(json, "application/json"));
        }