collab: Keep track of last seen Stripe event for each record (#15480)

This PR improves our Stripe event handling by keeping track of the last
event we've seen for each record.

The `billing_customers` and `billing_subscriptions` tables both have a
new `last_stripe_event_id` column. When we apply an event to one of
these records, we store the event ID that was applied.

Then, when we are going through events we can ignore any event that has
an ID that came before the `last_stripe_event_id` (based on the
lexicographical ordering of the IDs).

Release Notes:

- N/A
This commit is contained in:
Marshall Bowers 2024-07-30 10:00:16 -04:00 committed by GitHub
parent 2ada2964c5
commit b160e13f20
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 253 additions and 34 deletions

View file

@ -45,8 +45,10 @@ use tokio::sync::{Mutex, OwnedMutexGuard};
pub use tests::TestDb;
pub use ids::*;
pub use queries::billing_customers::CreateBillingCustomerParams;
pub use queries::billing_subscriptions::CreateBillingSubscriptionParams;
pub use queries::billing_customers::{CreateBillingCustomerParams, UpdateBillingCustomerParams};
pub use queries::billing_subscriptions::{
CreateBillingSubscriptionParams, UpdateBillingSubscriptionParams,
};
pub use queries::contributors::ContributorSelector;
pub use sea_orm::ConnectOptions;
pub use tables::user::Model as User;