@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
45 lines • 1.87 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.OrderedEnumerable = void 0;
const enumerable_1 = require("./enumerable");
const linqts_1 = require("linqts");
class OrderedEnumerable extends enumerable_1.Enumerable {
keySelectors;
descending;
constructor(items, keySelectors, descending) {
const linq = new linqts_1.List(items);
let sortedItems = linq;
for (let i = 0; i < keySelectors.length; i++) {
const keySelector = keySelectors[i];
const isDescending = descending[i];
sortedItems = isDescending
? sortedItems.OrderByDescending(keySelector)
: sortedItems.OrderBy(keySelector);
}
super(sortedItems.ToArray());
this.keySelectors = keySelectors;
this.descending = descending;
}
ThenBy(keySelector) {
return new OrderedEnumerable(this.ToArray(), [...this.keySelectors, keySelector], [...this.descending, false]);
}
ThenByDescending(keySelector) {
return new OrderedEnumerable(this.ToArray(), [...this.keySelectors, keySelector], [...this.descending, true]);
}
Where(predicate) {
const filtered = super.Where(predicate).ToArray();
return new OrderedEnumerable(filtered, this.keySelectors, this.descending);
}
Take(amount) {
const linq = new linqts_1.List(this.ToArray());
const taken = linq.Take(amount).ToArray();
return new OrderedEnumerable(taken, this.keySelectors, this.descending);
}
Skip(amount) {
const linq = new linqts_1.List(this.ToArray());
const skipped = linq.Skip(amount).ToArray();
return new OrderedEnumerable(skipped, this.keySelectors, this.descending);
}
}
exports.OrderedEnumerable = OrderedEnumerable;
//# sourceMappingURL=ordered-enumerable.js.map