UNPKG

@wepublish/api

Version:
125 lines 4.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getInvoices = exports.createInvoiceFilter = exports.createInvoiceOrder = void 0; const tslib_1 = require("tslib"); const common_1 = require("../../db/common"); const invoice_1 = require("../../db/invoice"); const api_1 = require("../../../../utils-api/src"); const createInvoiceOrder = (field, sortOrder) => { switch (field) { case invoice_1.InvoiceSort.CreatedAt: return { createdAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; case invoice_1.InvoiceSort.ModifiedAt: return { modifiedAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; case invoice_1.InvoiceSort.PaidAt: return { paidAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder) }; } }; exports.createInvoiceOrder = createInvoiceOrder; const createUserFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.userID) { return { subscription: { userID: filter.userID } }; } return {}; }; const createMailFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.mail) { return { mail: { contains: filter.mail, mode: 'insensitive' } }; } return {}; }; const createPaidAtFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.paidAt) { const { comparison, date } = filter.paidAt; const mappedComparison = comparison === common_1.DateFilterComparison.Equal ? 'equals' : comparison; return { paidAt: { [mappedComparison]: date } }; } return {}; }; const createCancelledAtFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.canceledAt) { const { comparison, date } = filter.canceledAt; const mappedComparison = comparison === common_1.DateFilterComparison.Equal ? 'equals' : comparison; return { canceledAt: { [mappedComparison]: date } }; } return {}; }; const createSubscriptionFilter = (filter) => { if (filter === null || filter === void 0 ? void 0 : filter.subscriptionID) { return { subscriptionID: filter.subscriptionID }; } return {}; }; const createInvoiceFilter = (filter) => ({ AND: [ createUserFilter(filter), createMailFilter(filter), createPaidAtFilter(filter), createCancelledAtFilter(filter), createSubscriptionFilter(filter) ] }); exports.createInvoiceFilter = createInvoiceFilter; const getInvoices = (filter, sortedField, order, cursorId, skip, take, invoice) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const orderBy = (0, exports.createInvoiceOrder)(sortedField, order); const where = (0, exports.createInvoiceFilter)(filter); const [totalCount, invoices] = yield Promise.all([ invoice.count({ where, orderBy }), invoice.findMany({ where, skip, take: (0, api_1.getMaxTake)(take) + 1, orderBy, cursor: cursorId ? { id: cursorId } : undefined, include: { items: true, subscription: true } }) ]); const nodes = invoices.slice(0, take); const firstInvoice = nodes[0]; const lastInvoice = nodes[nodes.length - 1]; const hasPreviousPage = Boolean(skip); const hasNextPage = invoices.length > nodes.length; return { nodes, totalCount, pageInfo: { hasPreviousPage, hasNextPage, startCursor: firstInvoice === null || firstInvoice === void 0 ? void 0 : firstInvoice.id, endCursor: lastInvoice === null || lastInvoice === void 0 ? void 0 : lastInvoice.id } }; }); exports.getInvoices = getInvoices; //# sourceMappingURL=invoice.queries.js.map