Пример #1
0
        /// <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));
        }
Пример #2
0
        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");
        }
Пример #3
0
        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");
        }