/// <summary> /// Returns a unordered item listing /// </summary> /// <typeparam name="T"></typeparam> /// <param name="query"></param> /// <returns></returns> public UnityTask <StorageResponse <ItemList <T> > > List <T>(ItemListRequest <T> query) where T : class { var metadata = GetMetadata <T>(); var request = new StorageRequest { applicationKey = ApplicationKey, privateKey = PrivateKey, authenticationToken = AuthenticationToken, table = metadata.Table, key = query._datakey, properties = query._properties, startKey = query._startKey, limit = query._limit, filter = query._filters }; var dto = JsonMapper.ToJson(request); return(Post <ItemList <T> >("listItems", dto)); }
IEnumerator TestListsAsync() { Terminal.LogImportant("TestListsAsync"); // populate Terminal.Log("populate"); var items = new List <Leaderboard>(); for (int i = 0; i < 10; i++) { var score = new Leaderboard { Points = Strings.RandomNumber(100, 10000), UserName = Strings.RandomString(10), BoardId = "HighScores", Rank = i, }; var result = Repository.Create(score); yield return(StartCoroutine(result.WaitRoutine())); result.ThrowIfFaulted(); if (result.Result.hasError) { throw new Exception(result.Result.error.message); } items.Add(result.Result.data); } // QUERY 1 Terminal.Log("QUERY"); var query1 = new ItemListRequest <Leaderboard>() .Asc() .WithProperties(new[] { "Points", "Username", "Rank" }) .GreaterEqual("Rank", 2) .Limit(5); var result1 = Repository.List(query1); yield return(StartCoroutine(result1.WaitRoutine())); result1.ThrowIfFaulted(); if (result1.Result.hasError) { throw new Exception(result1.Result.error.message); } Assert.IsTrue(result1.Result.data.items.First().Rank >= 2, "Request has invalid data"); // QUERY 2 Terminal.Log("QUERY 2"); var query2 = new ItemListRequest <Leaderboard>() .Asc() .WithProperties(new[] { "Points", "Username", "Rank" }) .Between("Rank", 2, 999) .Limit(5) .WithStartKey(result1.Result.data.stopKey); var result2 = Repository.List(query2); yield return(StartCoroutine(result2.WaitRoutine())); result2.ThrowIfFaulted(); if (result2.Result.hasError) { throw new Exception(result2.Result.error.message); } Assert.IsTrue(result2.Result.data.items.First().Rank >= result1.Result.data.items.Last().Rank, "request has invalid data"); // CLEANUP Terminal.Log("cleanup"); foreach (var item in items) { var resultd = Repository.Delete(item); yield return(StartCoroutine(resultd.WaitRoutine())); resultd.ThrowIfFaulted(); } Terminal.LogSuccess("Test Success"); }
IEnumerator TestListsAsync() { Terminal.LogImportant("TestListsAsync"); // populate Terminal.Log("populate"); var items = new List<Leaderboard>(); for (int i = 0;i < 10;i++) { var score = new Leaderboard { Points = Strings.RandomNumber(100, 10000), UserName = Strings.RandomString(10), BoardId = "HighScores", Rank = i, }; var result = Repository.Create(score); yield return StartCoroutine(result.WaitRoutine()); result.ThrowIfFaulted(); if (result.Result.hasError) throw new Exception(result.Result.error.message); items.Add(result.Result.data); } // QUERY 1 Terminal.Log("QUERY"); var query1 = new ItemListRequest<Leaderboard>() .Asc() .WithProperties(new[] { "Points", "Username", "Rank" }) .GreaterEqual("Rank", 2) .Limit(5); var result1 = Repository.List(query1); yield return StartCoroutine(result1.WaitRoutine()); result1.ThrowIfFaulted(); if (result1.Result.hasError) throw new Exception(result1.Result.error.message); Assert.IsTrue(result1.Result.data.items.First().Rank >= 2, "Request has invalid data"); // QUERY 2 Terminal.Log("QUERY 2"); var query2 = new ItemListRequest<Leaderboard>() .Asc() .WithProperties(new[] { "Points", "Username", "Rank" }) .Between("Rank", 2, 999) .Limit(5) .WithStartKey(result1.Result.data.stopKey); var result2 = Repository.List(query2); yield return StartCoroutine(result2.WaitRoutine()); result2.ThrowIfFaulted(); if (result2.Result.hasError) throw new Exception(result2.Result.error.message); Assert.IsTrue(result2.Result.data.items.First().Rank >= result1.Result.data.items.Last().Rank, "request has invalid data"); // CLEANUP Terminal.Log("cleanup"); foreach (var item in items) { var resultd = Repository.Delete(item); yield return StartCoroutine(resultd.WaitRoutine()); resultd.ThrowIfFaulted(); } Terminal.LogSuccess("Test Success"); }