@@ -55,6 +55,58 @@ export async function POST(request: Request) {
5555 process . env . NEXT_PUBLIC_SUPABASE_ANON_KEY !
5656 ) ;
5757
58+ // Function to reactivate paused queries when user gets more credits
59+ async function reactivatePausedQueries ( userId : string , reason : string ) {
60+ try {
61+ console . log ( `🔄 Checking for paused queries to reactivate for user ${ userId } (${ reason } )` ) ;
62+
63+ // Find all paused queries for this user
64+ const { data : pausedQueries , error : fetchError } = await supabase
65+ . from ( 'scheduled_queries' )
66+ . select ( 'id, query, user_id' )
67+ . eq ( 'user_id' , userId )
68+ . eq ( 'status' , 'paused' ) ;
69+
70+ if ( fetchError ) {
71+ console . error ( '❌ Error fetching paused queries:' , fetchError ) ;
72+ return ;
73+ }
74+
75+ if ( ! pausedQueries || pausedQueries . length === 0 ) {
76+ console . log ( `✅ No paused queries found for user ${ userId } ` ) ;
77+ return ;
78+ }
79+
80+ console . log ( `🔄 Found ${ pausedQueries . length } paused queries to reactivate for user ${ userId } ` ) ;
81+
82+ // Reactivate all paused queries
83+ const { error : reactivateError } = await supabase
84+ . from ( 'scheduled_queries' )
85+ . update ( {
86+ status : 'active' ,
87+ next_analysis_at : new Date ( Date . now ( ) + 2 * 60 * 1000 ) . toISOString ( ) , // Run in 2 minutes
88+ updated_at : new Date ( ) . toISOString ( )
89+ } )
90+ . eq ( 'user_id' , userId )
91+ . eq ( 'status' , 'paused' ) ;
92+
93+ if ( reactivateError ) {
94+ console . error ( '❌ Error reactivating paused queries:' , reactivateError ) ;
95+ return ;
96+ }
97+
98+ console . log ( `✅ Successfully reactivated ${ pausedQueries . length } queries for user ${ userId } (${ reason } )` ) ;
99+
100+ // Log each reactivated query for debugging
101+ pausedQueries . forEach ( query => {
102+ console . log ( ` 📝 Reactivated query: "${ query . query } " (ID: ${ query . id } )` ) ;
103+ } ) ;
104+
105+ } catch ( error ) {
106+ console . error ( '❌ Exception in reactivatePausedQueries:' , error ) ;
107+ }
108+ }
109+
58110 // Handle the event
59111 switch ( event . type ) {
60112 case 'checkout.session.completed' : {
@@ -92,6 +144,9 @@ export async function POST(request: Request) {
92144 if ( transactionError ) {
93145 console . error ( 'Error updating transaction status:' , transactionError ) ;
94146 }
147+
148+ // Reactivate any paused queries since user now has credits
149+ await reactivatePausedQueries ( userId , 'PAYG credits added' ) ;
95150 } else {
96151 console . error ( 'Error adding pay-as-you-go credits:' , result . error ) ;
97152
@@ -151,6 +206,9 @@ export async function POST(request: Request) {
151206 }
152207
153208 console . log ( 'Subscription saved to database' ) ;
209+
210+ // Reactivate any paused queries since user now has active subscription
211+ await reactivatePausedQueries ( userId , 'New subscription created' ) ;
154212 }
155213 }
156214 break ;
@@ -183,6 +241,18 @@ export async function POST(request: Request) {
183241 { status : 500 }
184242 ) ;
185243 }
244+
245+ // Get user_id to reactivate paused queries
246+ const { data : userSubscription } = await supabase
247+ . from ( 'user_subscriptions' )
248+ . select ( 'user_id' )
249+ . eq ( 'stripe_subscription_id' , subscriptionId )
250+ . single ( ) ;
251+
252+ if ( userSubscription ?. user_id ) {
253+ // Reactivate any paused queries since subscription payment succeeded
254+ await reactivatePausedQueries ( userSubscription . user_id , 'Subscription payment succeeded' ) ;
255+ }
186256 } catch ( error ) {
187257 console . error ( 'Error retrieving subscription:' , error ) ;
188258 return NextResponse . json (
@@ -215,6 +285,18 @@ export async function POST(request: Request) {
215285 { status : 500 }
216286 ) ;
217287 }
288+
289+ // Get user_id to reactivate paused queries if subscription became active
290+ const { data : userSubscription } = await supabase
291+ . from ( 'user_subscriptions' )
292+ . select ( 'user_id' )
293+ . eq ( 'stripe_subscription_id' , subscription . id )
294+ . single ( ) ;
295+
296+ if ( userSubscription ?. user_id && subscription . status === 'active' ) {
297+ // Reactivate any paused queries since subscription is now active
298+ await reactivatePausedQueries ( userSubscription . user_id , 'Subscription updated to active' ) ;
299+ }
218300 break ;
219301 }
220302 case 'customer.subscription.deleted' : {
0 commit comments