Merge pull request #1675 from omnivore-app/fix/subscriptions

Fix error of getting subscriptions without newsletter email by inner join them
This commit is contained in:
Jackson Harper 2023-01-18 20:22:15 +08:00 committed by GitHub
commit 1006515eec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 14 deletions

View file

@ -50,13 +50,15 @@ export const subscriptionsResolver = authorized<
}
}
const subscriptions = await getRepository(Subscription).find({
where: { user: { id: uid }, status: SubscriptionStatus.Active },
order: {
[sortBy]: sortOrder,
},
relations: ['newsletterEmail'],
})
const subscriptions = await getRepository(Subscription)
.createQueryBuilder('subscription')
.innerJoinAndSelect('subscription.newsletterEmail', 'newsletterEmail')
.where({
user: { id: uid },
status: SubscriptionStatus.Active,
})
.orderBy('subscription.' + sortBy, sortOrder)
.getMany()
return {
subscriptions: subscriptions.map((s) => ({

View file

@ -197,15 +197,16 @@ export const createTestLabel = async (
export const createTestSubscription = async (
user: User,
name: string,
newsletterEmail: NewsletterEmail,
newsletterEmail?: NewsletterEmail,
status = SubscriptionStatus.Active
): Promise<Subscription> => {
return getRepository(Subscription).save({
user,
name,
status,
newsletterEmail: { id: newsletterEmail.id },
})
const subscription = new Subscription()
subscription.user = user
subscription.name = name
newsletterEmail && (subscription.newsletterEmail = newsletterEmail)
subscription.status = status
return getRepository(Subscription).save(subscription)
}
export const deleteTestLabels = async (

View file

@ -32,12 +32,15 @@ describe('Subscriptions API', () => {
// create testing subscriptions
const sub1 = await createTestSubscription(user, 'sub_1', newsletterEmail)
const sub2 = await createTestSubscription(user, 'sub_2', newsletterEmail)
// create a unsubscribed subscription
await createTestSubscription(
user,
'sub_3',
newsletterEmail,
SubscriptionStatus.Unsubscribed
)
// create a subscription without a newsletter email
await createTestSubscription(user, 'sub_4')
subscriptions = [sub2, sub1]
})