UNPKG

@algochad/prisma-core

Version:

A comprehensive NestJS library that provides EF-Core-like operations using Prisma and GraphQL. Features LINQ-style query builders, advanced data manipulation, GraphQL integration with genql, and a unified API for both Prisma and GraphQL operations. Includ

198 lines 7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AsyncEnumerable = void 0; const enumerable_1 = require("./enumerable"); const list_1 = require("./list"); const linqts_1 = require("linqts"); class AsyncEnumerable { _linqAsyncEnumerable; constructor(items) { this._linqAsyncEnumerable = new linqts_1.List(Array.from(items)); } static fromArray(items) { return new AsyncEnumerable(items); } static from(generator) { return { async *[Symbol.asyncIterator]() { for await (const item of generator()) { yield item; } }, async ToArrayAsync() { const result = []; for await (const item of generator()) { result.push(item); } return result; }, }; } async *[Symbol.asyncIterator]() { for (const item of this._linqAsyncEnumerable) { yield item; } } async ToArrayAsync() { return Promise.resolve(this._linqAsyncEnumerable.ToArray()); } ToArray() { return this._linqAsyncEnumerable.ToArray(); } async ToListAsync() { return new list_1.List(await this.ToArrayAsync()); } async CountAsync(predicate) { const result = predicate ? this._linqAsyncEnumerable.Count(predicate) : this._linqAsyncEnumerable.Count(); return Promise.resolve(result); } async FirstAsync(predicate) { const result = predicate ? this._linqAsyncEnumerable.First(predicate) : this._linqAsyncEnumerable.First(); return Promise.resolve(result); } async FirstOrDefaultAsync(predicate, defaultValue) { const result = predicate ? this._linqAsyncEnumerable .Where(predicate) .FirstOrDefault(defaultValue) : this._linqAsyncEnumerable.FirstOrDefault(defaultValue); return Promise.resolve(result); } async LastAsync(predicate) { const result = predicate ? this._linqAsyncEnumerable.Last(predicate) : this._linqAsyncEnumerable.Last(); return Promise.resolve(result); } async LastOrDefaultAsync(predicate, defaultValue) { const result = predicate ? this._linqAsyncEnumerable .Where(predicate) .LastOrDefault(defaultValue) : this._linqAsyncEnumerable.LastOrDefault(defaultValue); return Promise.resolve(result); } async SingleAsync(predicate) { const result = predicate ? this._linqAsyncEnumerable.Single(predicate) : this._linqAsyncEnumerable.Single(); return Promise.resolve(result); } async SingleOrDefaultAsync(predicate, defaultValue) { const result = predicate ? this._linqAsyncEnumerable .Where(predicate) .SingleOrDefault(defaultValue) : this._linqAsyncEnumerable.SingleOrDefault(defaultValue); return Promise.resolve(result); } Where(predicate) { this._linqAsyncEnumerable = this._linqAsyncEnumerable.Where(predicate); return this; } Select(selector) { return new AsyncEnumerable(this._linqAsyncEnumerable.Select(selector)); } SelectMany(selector) { const resultArray = this._linqAsyncEnumerable .SelectMany((item) => { const selected = selector(item); return new linqts_1.List(Array.from(selected)); }) .ToArray(); return AsyncEnumerable.fromArray(resultArray); } OrderBy(keySelector) { const OrderedAsyncEnumerable = require('./ordered-async-enumerable').OrderedAsyncEnumerable; return new OrderedAsyncEnumerable(this, [keySelector], [false]); } OrderByDescending(keySelector) { const OrderedAsyncEnumerable = require('./ordered-async-enumerable').OrderedAsyncEnumerable; return new OrderedAsyncEnumerable(this, [keySelector], [true]); } Distinct(keySelector) { const resultArray = keySelector ? this._linqAsyncEnumerable .Select((item) => ({ key: keySelector(item), value: item, })) .DistinctBy((x) => String(x.key)) .Select((x) => x.value) .ToArray() : this._linqAsyncEnumerable.Distinct().ToArray(); return AsyncEnumerable.fromArray(resultArray); } Take(count) { this._linqAsyncEnumerable = this._linqAsyncEnumerable.Take(count); return this; } Skip(count) { this._linqAsyncEnumerable = this._linqAsyncEnumerable.Skip(count); return this; } TakeWhile(predicate) { const resultArray = this._linqAsyncEnumerable .TakeWhile(predicate) .ToArray(); return AsyncEnumerable.fromArray(resultArray); } SkipWhile(predicate) { const resultArray = this._linqAsyncEnumerable .SkipWhile(predicate) .ToArray(); return AsyncEnumerable.fromArray(resultArray); } async AggregateAsync(seed, func) { const result = this._linqAsyncEnumerable.Aggregate(func, seed); return Promise.resolve(result); } async SumAsync(selector) { const result = selector ? this._linqAsyncEnumerable.Sum(selector) : this._linqAsyncEnumerable.Sum(); return Promise.resolve(result); } async AverageAsync(selector) { const result = selector ? this._linqAsyncEnumerable.Average(selector) : this._linqAsyncEnumerable.Average(); return Promise.resolve(result); } async MinAsync(selector) { const result = selector ? this._linqAsyncEnumerable.Min(selector) : this._linqAsyncEnumerable.Min(); return Promise.resolve(result); } async MaxAsync(selector) { const result = selector ? this._linqAsyncEnumerable.Max(selector) : this._linqAsyncEnumerable.Max(); return Promise.resolve(result); } async AnyAsync(predicate) { const result = predicate ? this._linqAsyncEnumerable.Any(predicate) : this._linqAsyncEnumerable.Any(); return Promise.resolve(result); } async AllAsync(predicate) { const result = this._linqAsyncEnumerable.All(predicate); return Promise.resolve(result); } async ContainsAsync(item) { const result = this._linqAsyncEnumerable.Contains(item); return Promise.resolve(result); } async ToEnumerable() { const array = await this.ToArrayAsync(); return new enumerable_1.Enumerable(array); } } exports.AsyncEnumerable = AsyncEnumerable; //# sourceMappingURL=async-enumerable.js.map