better handle stripe plan change
parent
88a5126462
commit
05f05aa4e4
|
@ -115,6 +115,16 @@
|
|||
</rollingPolicy>
|
||||
</appender>
|
||||
</logger>
|
||||
<logger name="plan" level="DEBUG">
|
||||
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>/var/log/lichess/plan.log</file>
|
||||
<encoder><pattern>%date %-5level %logger{30} %message%n%xException</pattern></encoder>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>/var/log/lichess/plan-log-%d{yyyy-MM-dd}.gz</fileNamePattern>
|
||||
<maxHistory>7</maxHistory>
|
||||
</rollingPolicy>
|
||||
</appender>
|
||||
</logger>
|
||||
|
||||
<!-- Set a specific actor to DEBUG -->
|
||||
<!-- <logger name="actors.MyActor" level="DEBUG" /> -->
|
||||
|
|
|
@ -175,14 +175,21 @@ final class PlanApi(
|
|||
|
||||
private def createCustomer(user: User, plan: StripePlan, source: Source): Fu[StripeCustomer] =
|
||||
stripeClient.createCustomer(user, plan, source) flatMap { customer =>
|
||||
patronColl.insert(Patron(
|
||||
_id = Patron.UserId(user.id),
|
||||
stripe = Patron.Stripe(customer.id).some,
|
||||
lastLevelUp = DateTime.now)) >>
|
||||
saveStripePatron(user, customer.id) >>
|
||||
UserRepo.setPlan(user, lila.user.Plan.start) >>-
|
||||
logger.info(s"Subed ${user.id} ${plan}") inject customer
|
||||
}
|
||||
|
||||
private def saveStripePatron(user: User, customerId: CustomerId): Funit = userPatron(user) flatMap {
|
||||
case None => patronColl.insert(Patron(
|
||||
_id = Patron.UserId(user.id),
|
||||
stripe = Patron.Stripe(customerId).some,
|
||||
lastLevelUp = DateTime.now))
|
||||
case Some(patron) => patronColl.update(
|
||||
$id(patron.id),
|
||||
patron.copy(stripe = Patron.Stripe(customerId).some))
|
||||
} void
|
||||
|
||||
private def setCustomerPlan(customer: StripeCustomer, plan: StripePlan, source: Source): Fu[StripeSubscription] =
|
||||
customer.subscriptions.data.find(_.plan == plan) match {
|
||||
case Some(sub) => fuccess(sub)
|
||||
|
@ -193,7 +200,9 @@ final class PlanApi(
|
|||
}
|
||||
|
||||
private def userCustomerId(user: User): Fu[Option[CustomerId]] =
|
||||
patronColl.primitiveOne[CustomerId]($id(user.id), "stripe.customerId")
|
||||
userPatron(user) map {
|
||||
_.flatMap { _.stripe.map(_.customerId) }
|
||||
}
|
||||
|
||||
private def userCustomer(user: User): Fu[Option[StripeCustomer]] =
|
||||
userCustomerId(user) flatMap {
|
Loading…
Reference in New Issue