@@ -5,6 +5,7 @@ import { v4 as uuidv4 } from 'uuid'
55import { z } from 'zod'
66import { getSession } from '@/lib/auth'
77import { checkServerSideUsageLimits } from '@/lib/billing'
8+ import { getHighestPrioritySubscription } from '@/lib/billing/core/subscription'
89import { getPersonalAndWorkspaceEnv } from '@/lib/environment/utils'
910import { createLogger } from '@/lib/logs/console/logger'
1011import { LoggingSession } from '@/lib/logs/execution/logging-session'
@@ -19,7 +20,7 @@ import {
1920import { validateWorkflowAccess } from '@/app/api/workflows/middleware'
2021import { createErrorResponse , createSuccessResponse } from '@/app/api/workflows/utils'
2122import { db } from '@/db'
22- import { subscription , userStats } from '@/db/schema'
23+ import { userStats } from '@/db/schema'
2324import { Executor } from '@/executor'
2425import { Serializer } from '@/serializer'
2526import {
@@ -374,19 +375,15 @@ export async function GET(request: NextRequest, { params }: { params: Promise<{
374375 try {
375376 // Check rate limits BEFORE entering queue for GET requests
376377 if ( triggerType === 'api' ) {
377- // Get user subscription
378- const [ subscriptionRecord ] = await db
379- . select ( { plan : subscription . plan } )
380- . from ( subscription )
381- . where ( eq ( subscription . referenceId , validation . workflow . userId ) )
382- . limit ( 1 )
378+ // Get user subscription (checks both personal and org subscriptions)
379+ const userSubscription = await getHighestPrioritySubscription ( validation . workflow . userId )
383380
384- const subscriptionPlan = ( subscriptionRecord ?. plan || 'free' ) as SubscriptionPlan
381+ const subscriptionPlan = ( userSubscription ?. plan || 'free' ) as SubscriptionPlan
385382
386383 const rateLimiter = new RateLimiter ( )
387- const rateLimitCheck = await rateLimiter . checkRateLimit (
384+ const rateLimitCheck = await rateLimiter . checkRateLimitWithSubscription (
388385 validation . workflow . userId ,
389- subscriptionPlan ,
386+ userSubscription ,
390387 triggerType ,
391388 false // isAsync = false for sync calls
392389 )
@@ -505,20 +502,17 @@ export async function POST(
505502 return createErrorResponse ( 'Authentication required' , 401 )
506503 }
507504
508- const [ subscriptionRecord ] = await db
509- . select ( { plan : subscription . plan } )
510- . from ( subscription )
511- . where ( eq ( subscription . referenceId , authenticatedUserId ) )
512- . limit ( 1 )
505+ // Get user subscription (checks both personal and org subscriptions)
506+ const userSubscription = await getHighestPrioritySubscription ( authenticatedUserId )
513507
514- const subscriptionPlan = ( subscriptionRecord ?. plan || 'free' ) as SubscriptionPlan
508+ const subscriptionPlan = ( userSubscription ?. plan || 'free' ) as SubscriptionPlan
515509
516510 if ( isAsync ) {
517511 try {
518512 const rateLimiter = new RateLimiter ( )
519- const rateLimitCheck = await rateLimiter . checkRateLimit (
513+ const rateLimitCheck = await rateLimiter . checkRateLimitWithSubscription (
520514 authenticatedUserId ,
521- subscriptionPlan ,
515+ userSubscription ,
522516 'api' ,
523517 true // isAsync = true
524518 )
@@ -580,9 +574,9 @@ export async function POST(
580574
581575 try {
582576 const rateLimiter = new RateLimiter ( )
583- const rateLimitCheck = await rateLimiter . checkRateLimit (
577+ const rateLimitCheck = await rateLimiter . checkRateLimitWithSubscription (
584578 authenticatedUserId ,
585- subscriptionPlan ,
579+ userSubscription ,
586580 triggerType ,
587581 false // isAsync = false for sync calls
588582 )
0 commit comments