Open mbryzek opened 1 year ago
One possibility for a fix is to check for the discriminator, for example change
implicit def jsonReadsBillingExternalEventTransactionDeleted: play.api.libs.json.Reads[TransactionDeleted] = { for { eventId <- (__ \ "event_id").read[String] timestamp <- (__ \ "timestamp").read[_root_.org.joda.time.DateTime] organization <- (__ \ "organization").read[String] transaction <- (__ \ "transaction").read[io.flow.billing.v0.models.Transaction] } yield TransactionDeleted(eventId, timestamp, organization, transaction) }
to
implicit def jsonReadsBillingExternalEventTransactionDeleted: play.api.libs.json.Reads[TransactionDeleted] = { for { discriminator <- (__ \ "discriminator").read[String] eventId <- (__ \ "event_id").read[String] timestamp <- (__ \ "timestamp").read[_root_.org.joda.time.DateTime] organization <- (__ \ "organization").read[String] transaction <- (__ \ "transaction").read[io.flow.billing.v0.models.Transaction] } yield if (discriminator == "transaction_deleted") TransactionDeleted(eventId, timestamp, organization, transaction) else sys.error(s"Invalid discriminator: $discriminator") // possibly JsError instead? }
One possibility for a fix is to check for the discriminator, for example change
to