@wepublish/api
Version:
API core for we.publish.
255 lines • 8.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSubscriptions = exports.createSubscriptionFilter = exports.createSubscriptionOrder = void 0;
const tslib_1 = require("tslib");
const subscription_1 = require("../../db/subscription");
const api_1 = require("../../../../utils-api/src");
const utils_1 = require("../utils");
const createSubscriptionOrder = (field, sortOrder) => {
switch (field) {
case subscription_1.SubscriptionSort.CreatedAt:
return {
createdAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder)
};
case subscription_1.SubscriptionSort.ModifiedAt:
return {
modifiedAt: (0, api_1.graphQLSortOrderToPrisma)(sortOrder)
};
}
};
exports.createSubscriptionOrder = createSubscriptionOrder;
const createStartsAtFromFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.startsAtFrom) {
const { comparison, date } = filter.startsAtFrom;
const compare = (0, utils_1.mapDateFilterToPrisma)(comparison);
return {
startsAt: {
[compare]: date
}
};
}
return {};
};
const createStartsAtToFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.startsAtTo) {
const { comparison, date } = filter.startsAtTo;
const compare = (0, utils_1.mapDateFilterToPrisma)(comparison);
return {
startsAt: {
[compare]: date
}
};
}
return {};
};
const createPaidUntilFromFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.paidUntilFrom) {
const { comparison, date } = filter.paidUntilFrom;
const compare = (0, utils_1.mapDateFilterToPrisma)(comparison);
return {
paidUntil: {
[compare]: date
}
};
}
return {};
};
const createPaidUntilToFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.paidUntilTo) {
const { comparison, date } = filter.paidUntilTo;
const compare = (0, utils_1.mapDateFilterToPrisma)(comparison);
return {
paidUntil: {
[compare]: date
}
};
}
return {};
};
const createDeactivationDateFromFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.deactivationDateFrom) {
const { comparison, date } = filter.deactivationDateFrom;
const compare = (0, utils_1.mapDateFilterToPrisma)(comparison);
return {
deactivation: {
is: {
date: {
[compare]: date
}
}
}
};
}
return {};
};
const createDeactivationDateToFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.deactivationDateTo) {
const { comparison, date } = filter.deactivationDateTo;
const compare = (0, utils_1.mapDateFilterToPrisma)(comparison);
return {
deactivation: {
is: {
date: {
[compare]: date
}
}
}
};
}
return {};
};
const createCancellationDateFromFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.cancellationDateFrom) {
const { comparison, date } = filter.cancellationDateFrom;
const compare = (0, utils_1.mapDateFilterToPrisma)(comparison);
return {
deactivation: {
is: {
createdAt: {
[compare]: date
}
}
}
};
}
return {};
};
const createCancellationDateToFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.cancellationDateTo) {
const { comparison, date } = filter.cancellationDateTo;
const compare = (0, utils_1.mapDateFilterToPrisma)(comparison);
return {
deactivation: {
is: {
createdAt: {
[compare]: date
}
}
}
};
}
return {};
};
const createDeactivationReasonFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.deactivationReason) {
return {
deactivation: {
reason: filter.deactivationReason
}
};
}
return {};
};
const createAutoRenewFilter = (filter) => {
if ((filter === null || filter === void 0 ? void 0 : filter.autoRenew) != null) {
return {
autoRenew: filter.autoRenew
};
}
return {};
};
const createPaymentPeriodicityFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.paymentPeriodicity) {
return {
paymentPeriodicity: filter.paymentPeriodicity
};
}
return {};
};
const createPaymentMethodFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.paymentMethodID) {
return {
paymentMethodID: filter.paymentMethodID
};
}
return {};
};
const createMemberPlanFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.memberPlanID) {
return {
memberPlanID: filter.memberPlanID
};
}
return {};
};
const createHasAddressFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.userHasAddress) {
return {
user: {
isNot: {
address: null
}
}
};
}
return {};
};
const createUserFilter = (filter) => {
if (filter === null || filter === void 0 ? void 0 : filter.userID) {
return {
user: {
id: filter.userID
}
};
}
return {};
};
const createSubscriptionFilter = (filter) => ({
AND: [
createStartsAtFromFilter(filter),
createStartsAtToFilter(filter),
createPaidUntilFromFilter(filter),
createPaidUntilToFilter(filter),
createDeactivationDateFromFilter(filter),
createDeactivationDateToFilter(filter),
createCancellationDateToFilter(filter),
createCancellationDateFromFilter(filter),
createDeactivationReasonFilter(filter),
createAutoRenewFilter(filter),
createPaymentPeriodicityFilter(filter),
createPaymentMethodFilter(filter),
createMemberPlanFilter(filter),
createHasAddressFilter(filter),
createUserFilter(filter)
]
});
exports.createSubscriptionFilter = createSubscriptionFilter;
const getSubscriptions = (filter, sortedField, order, cursorId, skip, take, subscription) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const orderBy = (0, exports.createSubscriptionOrder)(sortedField, order);
const where = (0, exports.createSubscriptionFilter)(filter);
const [totalCount, subscriptions] = yield Promise.all([
subscription.count({
where,
orderBy
}),
subscription.findMany({
where,
skip,
take: (0, api_1.getMaxTake)(take) + 1,
orderBy,
cursor: cursorId ? { id: cursorId } : undefined,
include: {
deactivation: true,
periods: true,
properties: true
}
})
]);
const nodes = subscriptions.slice(0, take);
const firstSubscription = nodes[0];
const lastSubscription = nodes[nodes.length - 1];
const hasPreviousPage = Boolean(skip);
const hasNextPage = subscriptions.length > nodes.length;
return {
nodes,
totalCount,
pageInfo: {
hasPreviousPage,
hasNextPage,
startCursor: firstSubscription === null || firstSubscription === void 0 ? void 0 : firstSubscription.id,
endCursor: lastSubscription === null || lastSubscription === void 0 ? void 0 : lastSubscription.id
}
};
});
exports.getSubscriptions = getSubscriptions;
//# sourceMappingURL=subscription.queries.js.map