Safer version of the upsert.

pull/5841/head
Lakin Wecker 2020-01-02 21:30:08 -07:00
parent 64d5ea7a91
commit 7c822ee486
1 changed files with 18 additions and 22 deletions

View File

@ -375,36 +375,32 @@ final class PlanApi(
userRepo.setPlan(user, plan) >>- lightUserApi.invalidate(user.id)
private def saveStripePatron(user: User, customerId: CustomerId, freq: Freq): Funit =
userPatron(user) flatMap {
case None =>
patronColl.insert.one(
Patron(
_id = Patron.UserId(user.id),
stripe = Patron.Stripe(customerId).some,
lastLevelUp = Some(DateTime.now)
).expireInOneMonth(!freq.renew)
)
case Some(patron) =>
userPatron(user) flatMap { patronOpt =>
patronColl.update.one(
$id(patron.id),
patron
$id(user.id),
patronOpt
.getOrElse(Patron(_id = Patron.UserId(user.id)))
.copy(
stripe = Patron.Stripe(customerId).some,
lastLevelUp = Some(DateTime.now)
)
.removePayPal
.expireInOneMonth(!freq.renew)
)
} void
.expireInOneMonth(!freq.renew),
upsert = true
).void
}
private def saveStripeCustomer(user: User, customerId: CustomerId): Funit =
patronColl.update
.one(
$id(user.id),
$set("stripe.customerId" -> customerId.value),
upsert = true
)
.void
userPatron(user) flatMap { patronOpt =>
patronColl.update.one(
$id(user.id),
patronOpt
.getOrElse(Patron(_id = Patron.UserId(user.id)))
.copy(stripe = Patron.Stripe(customerId).some),
upsert = true
)
.void
}
private def userCustomerId(user: User): Fu[Option[CustomerId]] =
userPatron(user) map {