@wepublish/api
Version:
API core for we.publish.
125 lines • 4.17 kB
JavaScript
;
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