Exemple #1
0
        public virtual async Task HandleGetEntitiesAsync(string modelId, string entityContainer, CancellationToken ct = default)
        {
            int?offset = null;
            int?fetch  = null;

            bool isLookup = false;

            IEnumerable <EasyFilter> filters = null;

            bool needTotal = false;

            JObject requestParams;

            using (var requestReader = new HttpRequestStreamReader(HttpContext.Request.Body, Encoding.UTF8))
                using (var jsonReader = new JsonTextReader(requestReader))
                {
                    requestParams = await JObject.LoadAsync(jsonReader, ct);
                }

            if (requestParams.TryGetValue("offset", out var value))
            {
                offset = value.ToObject <int?>();
            }
            if (requestParams.TryGetValue("limit", out value))
            {
                fetch = value.ToObject <int?>();
            }
            if (requestParams.TryGetValue("needTotal", out value))
            {
                needTotal = value.ToObject <bool>();
            }
            if (requestParams.TryGetValue("lookup", out value))
            {
                isLookup = value.ToObject <bool>();
            }
            if (requestParams.TryGetValue("filters", out value) && value.HasValues)
            {
                filters = await GetFiltersAsync(modelId, (JArray)value, ct);
            }

            long?total = null;

            if (needTotal)
            {
                total = await Manager.GetTotalEntitiesAsync(modelId, entityContainer, filters, isLookup, ct);
            }

            var result = await Manager.GetEntitiesAsync(modelId, entityContainer, filters, isLookup, offset, fetch);

            await WriteOkJsonResponseAsync(HttpContext, async (jsonWriter, cancellationToken) => {
                await WriteGetEntitiesResponseAsync(jsonWriter, result, total, cancellationToken);
            }, ct);
        }
Exemple #2
0
        public virtual async Task HandleGetEntitiesAsync(string modelId, string entityContainer)
        {
            int?offset = null;
            int?fetch  = null;

            bool isLookup = false;

            string filter = null;

            bool needTotal   = false;
            var  queryParams = HttpContext.Request.Query;

            if (queryParams.TryGetValue("offset", out var value))
            {
                offset = int.Parse(value);
            }
            if (queryParams.TryGetValue("limit", out value))
            {
                fetch = int.Parse(value);
            }
            if (queryParams.TryGetValue("needTotal", out value))
            {
                needTotal = bool.Parse(value);
            }
            if (queryParams.TryGetValue("filter", out value))
            {
                filter = value;
            }
            if (queryParams.TryGetValue("lookup", out value))
            {
                isLookup = bool.Parse(value);
            }

            long?total = null;

            if (needTotal)
            {
                total = await Manager.GetTotalEntitiesAsync(modelId, entityContainer, filter, isLookup);
            }

            var result = await Manager.GetEntitiesAsync(modelId, entityContainer, filter, isLookup, offset, fetch);

            await WriteOkJsonResponseAsync(HttpContext, async jsonWriter => {
                await WriteGetEntitiesResponseAsync(jsonWriter, result, total);
            });
        }