mirror of
https://github.com/storytold/artcraft.git
synced 2026-10-25 02:29:37 +00:00
67 lines
2.5 KiB
SQL
67 lines
2.5 KiB
SQL
-- noinspection SqlDialectInspectionForFile
|
||
-- noinspection SqlNoDataSourceInspectionForFile
|
||
-- noinspection SqlResolveForFile
|
||
|
||
CREATE TABLE stripe_webhook_event_logs (
|
||
-- Not used for anything except replication.
|
||
id BIGINT(20) NOT NULL AUTO_INCREMENT,
|
||
|
||
-- ========== STRIPE DATA ==========
|
||
|
||
-- You can safely assume object IDs we generate will never exceed 255 characters,
|
||
-- but you should be able to handle IDs of up to that length. If for example you’re using MySQL,
|
||
-- you should store IDs in a VARCHAR(255) COLLATE utf8_bin column (the COLLATE configuration ensures
|
||
-- case-sensitivity in lookups).
|
||
-- https://stackoverflow.com/a/61809494
|
||
stripe_event_id VARCHAR(255) NOT NULL,
|
||
|
||
-- The type of webhook event
|
||
stripe_event_type VARCHAR(255) NOT NULL,
|
||
|
||
-- The id of the entity that was the subject of the event.
|
||
-- We don't always extract this.
|
||
maybe_stripe_event_entity_id VARCHAR(255) DEFAULT NULL,
|
||
|
||
-- The id of the entity that was the subject of the event.
|
||
-- We don't always extract this.
|
||
maybe_stripe_customer_id VARCHAR(255) DEFAULT NULL,
|
||
|
||
-- Whether this is in production or test mode in Stripe.
|
||
-- This is controlled by which API keys are used.
|
||
-- "livemode"=true in production.
|
||
stripe_is_production BOOLEAN NOT NULL DEFAULT FALSE,
|
||
|
||
-- ========== INTERNAL SYSTEM METADATA ==========
|
||
|
||
-- Whether we handled the event with any sort of action
|
||
action_was_taken BOOLEAN NOT NULL DEFAULT FALSE,
|
||
|
||
-- Whether we should ignore any future retries by Stripe replaying the event.
|
||
-- This helps us treat events with idempotency.
|
||
should_ignore_retry BOOLEAN NOT NULL DEFAULT FALSE,
|
||
|
||
-- Some event types may attach a user token
|
||
maybe_user_token VARCHAR(32) DEFAULT NULL,
|
||
|
||
-- An internal optional entity token this resolves to.
|
||
-- eg. `wallets.token` or `user_subscriptions.token`.
|
||
maybe_internal_entity_token VARCHAR(32) DEFAULT NULL,
|
||
|
||
-- ========== TIMESTAMPS ==========
|
||
|
||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
|
||
-- When the event was created on Stripe's end
|
||
stripe_event_created_at TIMESTAMP NOT NULL,
|
||
|
||
-- ========== INDICES ==========
|
||
PRIMARY KEY (id),
|
||
UNIQUE KEY (stripe_event_id),
|
||
KEY index_stripe_event_type (stripe_event_type),
|
||
KEY index_maybe_stripe_event_entity_id (maybe_stripe_event_entity_id),
|
||
KEY index_maybe_stripe_customer_id (maybe_stripe_customer_id),
|
||
KEY fk_maybe_user_token (maybe_user_token)
|
||
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|