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()); }
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")); }