xtablo-source/supabase/migrations/20260502120000_add_apple_billing_tables.sql
2026-05-03 09:28:46 +02:00

52 lines
1.7 KiB
SQL

create table public.apple_customers (
id bigint generated by default as identity primary key,
user_id uuid not null references public.profiles (id) on delete cascade,
revenuecat_app_user_id text not null,
original_app_user_id text,
last_seen_environment text,
created_at timestamptz not null default now(),
updated_at timestamptz not null default now(),
unique (user_id),
unique (revenuecat_app_user_id)
);
create table public.apple_subscriptions (
id bigint generated by default as identity primary key,
owner_user_id uuid not null references public.profiles (id) on delete cascade,
revenuecat_app_user_id text not null,
store_product_id text not null,
plan text not null,
status text not null,
environment text not null,
store text not null default 'app_store',
original_transaction_id text not null,
transaction_id text,
current_period_start timestamptz,
current_period_end timestamptz,
cancel_at_period_end boolean not null default false,
revoked_at timestamptz,
raw_customer_id text,
last_event_type text,
created_at timestamptz not null default now(),
updated_at timestamptz not null default now(),
unique (original_transaction_id)
);
create index idx_apple_subscriptions_owner_user_id
on public.apple_subscriptions (owner_user_id);
create index idx_apple_subscriptions_status
on public.apple_subscriptions (status);
create index idx_apple_subscriptions_current_period_end
on public.apple_subscriptions (current_period_end);
create table public.apple_subscription_events (
id bigint generated by default as identity primary key,
event_id text not null unique,
event_type text not null,
environment text,
payload jsonb not null,
received_at timestamptz not null default now(),
processed_at timestamptz
);