Remove migration
This commit is contained in:
parent
549ecea02d
commit
1e417bd0b7
1 changed files with 0 additions and 160 deletions
|
|
@ -1,160 +0,0 @@
|
|||
create or replace function public.update_profile_subscription_status()
|
||||
returns trigger as $$
|
||||
declare
|
||||
v_user_id uuid;
|
||||
v_plan subscription_plan;
|
||||
v_customer_id text;
|
||||
v_old_plan subscription_plan;
|
||||
v_has_trialing boolean;
|
||||
v_has_active boolean;
|
||||
v_subscription_status text;
|
||||
v_period_end timestamp;
|
||||
begin
|
||||
raise notice '==================== TRIGGER START ====================';
|
||||
raise notice 'Table: %, Operation: %, Time: %', TG_TABLE_NAME, TG_OP, now();
|
||||
|
||||
-- Get customer ID based on which table triggered this
|
||||
if TG_TABLE_NAME = 'subscriptions' then
|
||||
v_customer_id := new.customer;
|
||||
v_subscription_status := new.status::text;
|
||||
raise notice 'Source: subscriptions table';
|
||||
raise notice ' - Subscription ID: %', new.id;
|
||||
raise notice ' - Customer ID: %', v_customer_id;
|
||||
raise notice ' - Status: %', v_subscription_status;
|
||||
raise notice ' - Cancel at period end: %', new.cancel_at_period_end;
|
||||
elsif TG_TABLE_NAME = 'subscription_items' then
|
||||
-- Get customer ID from the subscription
|
||||
select customer, status::text into v_customer_id, v_subscription_status
|
||||
from stripe.subscriptions
|
||||
where id = new.subscription;
|
||||
raise notice 'Source: subscription_items table';
|
||||
raise notice ' - Subscription Item ID: %', new.id;
|
||||
raise notice ' - Subscription ID: %', new.subscription;
|
||||
raise notice ' - Customer ID: %', v_customer_id;
|
||||
raise notice ' - Price ID: %', new.price;
|
||||
raise notice ' - Period Start: %', to_timestamp(new.current_period_start);
|
||||
raise notice ' - Period End: %', to_timestamp(new.current_period_end);
|
||||
else
|
||||
raise notice 'Unknown table: %, skipping', TG_TABLE_NAME;
|
||||
return new;
|
||||
end if;
|
||||
|
||||
-- Skip if no customer_id found
|
||||
if v_customer_id is null then
|
||||
raise notice 'SKIP: No customer_id found';
|
||||
raise notice '==================== TRIGGER END (SKIPPED) ====================';
|
||||
return new;
|
||||
end if;
|
||||
|
||||
-- Extract user_id from customer metadata
|
||||
select (metadata->>'user_id')::uuid into v_user_id
|
||||
from stripe.customers
|
||||
where id = v_customer_id;
|
||||
|
||||
raise notice 'Customer metadata lookup:';
|
||||
raise notice ' - User ID: %', v_user_id;
|
||||
|
||||
-- Skip if no user_id found
|
||||
if v_user_id is null then
|
||||
raise notice 'SKIP: No user_id in customer metadata';
|
||||
raise notice '==================== TRIGGER END (SKIPPED) ====================';
|
||||
return new;
|
||||
end if;
|
||||
|
||||
-- Get current plan from profile
|
||||
select plan into v_old_plan
|
||||
from public.profiles
|
||||
where id = v_user_id;
|
||||
|
||||
raise notice 'Profile lookup:';
|
||||
raise notice ' - Current plan: %', v_old_plan;
|
||||
|
||||
-- Check for trialing subscription with detailed logging
|
||||
raise notice 'Checking for TRIALING subscription...';
|
||||
select exists(
|
||||
select 1
|
||||
from stripe.subscriptions s
|
||||
inner join stripe.customers c on c.id = s.customer
|
||||
inner join stripe.subscription_items si on si.subscription = s.id
|
||||
where (c.metadata->>'user_id')::uuid = v_user_id
|
||||
and s.status::text = 'trialing'
|
||||
and si.current_period_end is not null
|
||||
and to_timestamp(si.current_period_end) > now()
|
||||
) into v_has_trialing;
|
||||
|
||||
raise notice ' - Has trialing: %', v_has_trialing;
|
||||
|
||||
-- Check for active/past_due subscription with detailed logging
|
||||
raise notice 'Checking for ACTIVE/PAST_DUE subscription...';
|
||||
select exists(
|
||||
select 1
|
||||
from stripe.subscriptions s
|
||||
inner join stripe.customers c on c.id = s.customer
|
||||
inner join stripe.subscription_items si on si.subscription = s.id
|
||||
where (c.metadata->>'user_id')::uuid = v_user_id
|
||||
and s.status::text in ('active', 'past_due')
|
||||
and si.current_period_end is not null
|
||||
and to_timestamp(si.current_period_end) > now()
|
||||
) into v_has_active;
|
||||
|
||||
raise notice ' - Has active/past_due: %', v_has_active;
|
||||
|
||||
-- Show what subscriptions exist for this user
|
||||
raise notice 'All subscriptions for user %:', v_user_id;
|
||||
for v_subscription_status, v_period_end in
|
||||
select
|
||||
s.status::text,
|
||||
to_timestamp(si.current_period_end)
|
||||
from stripe.subscriptions s
|
||||
inner join stripe.customers c on c.id = s.customer
|
||||
left join stripe.subscription_items si on si.subscription = s.id
|
||||
where (c.metadata->>'user_id')::uuid = v_user_id
|
||||
loop
|
||||
raise notice ' - Status: %, Period End: %', v_subscription_status, v_period_end;
|
||||
end loop;
|
||||
|
||||
-- Determine the user's current plan
|
||||
raise notice 'Calculating new plan...';
|
||||
select
|
||||
case
|
||||
when exists(
|
||||
select 1
|
||||
from stripe.subscriptions s
|
||||
inner join stripe.customers c on c.id = s.customer
|
||||
inner join stripe.subscription_items si on si.subscription = s.id
|
||||
where (c.metadata->>'user_id')::uuid = v_user_id
|
||||
and s.status::text = 'trialing'
|
||||
and si.current_period_end is not null
|
||||
and to_timestamp(si.current_period_end) > now()
|
||||
) then 'trial'::subscription_plan
|
||||
when exists(
|
||||
select 1
|
||||
from stripe.subscriptions s
|
||||
inner join stripe.customers c on c.id = s.customer
|
||||
inner join stripe.subscription_items si on si.subscription = s.id
|
||||
where (c.metadata->>'user_id')::uuid = v_user_id
|
||||
and s.status::text in ('active', 'past_due')
|
||||
and si.current_period_end is not null
|
||||
and to_timestamp(si.current_period_end) > now()
|
||||
) then 'standard'::subscription_plan
|
||||
else 'none'::subscription_plan
|
||||
end into v_plan;
|
||||
|
||||
raise notice ' - Calculated plan: %', v_plan;
|
||||
raise notice ' - Plan change: % → %', v_old_plan, v_plan;
|
||||
|
||||
-- Update the user's profile
|
||||
if v_old_plan is distinct from v_plan then
|
||||
raise notice 'UPDATING profile...';
|
||||
update public.profiles
|
||||
set plan = v_plan
|
||||
where id = v_user_id;
|
||||
raise notice 'Profile UPDATED successfully';
|
||||
else
|
||||
raise notice 'No plan change needed, skipping update';
|
||||
end if;
|
||||
|
||||
raise notice '==================== TRIGGER END (SUCCESS) ====================';
|
||||
return new;
|
||||
end;
|
||||
$$ language plpgsql security definer;
|
||||
Loading…
Reference in a new issue