always pick the most recent subscription

This commit is contained in:
m5r
2021-10-21 01:03:32 +02:00
parent c0554f321c
commit a4ac0384c2
5 changed files with 51 additions and 10 deletions

View File

@ -1,7 +1,7 @@
import { NotFoundError, resolver } from "blitz";
import { z } from "zod";
import db from "db";
import db, { Prisma, SubscriptionStatus } from "db";
import { updateSubscriptionPlan } from "integrations/paddle";
const Body = z.object({
@ -9,7 +9,13 @@ const Body = z.object({
});
export default resolver.pipe(resolver.zod(Body), resolver.authorize(), async ({ planId }, ctx) => {
const subscription = await db.subscription.findFirst({ where: { organizationId: ctx.session.orgId } });
const subscription = await db.subscription.findFirst({
where: {
organizationId: ctx.session.orgId,
status: { not: SubscriptionStatus.deleted },
},
orderBy: { lastEventTime: Prisma.SortOrder.desc },
});
if (!subscription) {
throw new NotFoundError();
}

View File

@ -1,6 +1,6 @@
import { resolver } from "blitz";
import db, { SubscriptionStatus } from "db";
import db, { Prisma, SubscriptionStatus } from "db";
export default resolver.pipe(resolver.authorize(), async (_ = null, { session }) => {
if (!session.orgId) return null;
@ -8,7 +8,14 @@ export default resolver.pipe(resolver.authorize(), async (_ = null, { session })
return db.subscription.findFirst({
where: {
organizationId: session.orgId,
OR: [{ status: { not: SubscriptionStatus.deleted } }, { cancellationEffectiveDate: { gt: new Date() } }],
OR: [
{ status: { not: SubscriptionStatus.deleted } },
{
status: SubscriptionStatus.deleted,
cancellationEffectiveDate: { gt: new Date() },
},
],
},
orderBy: { lastEventTime: Prisma.SortOrder.desc },
});
});