From 566af68d7799a95d76794d5898d7bc428199d65a Mon Sep 17 00:00:00 2001 From: Waleed Latif Date: Wed, 26 Mar 2025 15:32:00 -0700 Subject: [PATCH] improvement(api): deprecated /db from /api and moved all routes to their relevant domain location. updated all references to old routes (#191) --- sim/app/api/{db => }/environment/route.ts | 0 .../api/{db/workflow-logs => logs}/route.ts | 1 + sim/app/api/{db => }/settings/route.ts | 0 .../[id]/variables}/route.ts | 36 ++++++++----------- .../{db/workflow => workflows/sync}/route.ts | 0 .../components/control-bar/control-bar.tsx | 2 +- sim/app/w/logs/logs.tsx | 2 +- sim/stores/constants.ts | 7 ++-- 8 files changed, 22 insertions(+), 26 deletions(-) rename sim/app/api/{db => }/environment/route.ts (100%) rename sim/app/api/{db/workflow-logs => logs}/route.ts (99%) rename sim/app/api/{db => }/settings/route.ts (100%) rename sim/app/api/{db/workflow/variables/[id] => workflows/[id]/variables}/route.ts (89%) rename sim/app/api/{db/workflow => workflows/sync}/route.ts (100%) diff --git a/sim/app/api/db/environment/route.ts b/sim/app/api/environment/route.ts similarity index 100% rename from sim/app/api/db/environment/route.ts rename to sim/app/api/environment/route.ts diff --git a/sim/app/api/db/workflow-logs/route.ts b/sim/app/api/logs/route.ts similarity index 99% rename from sim/app/api/db/workflow-logs/route.ts rename to sim/app/api/logs/route.ts index ac96de1b60..aa486b4f5c 100644 --- a/sim/app/api/db/workflow-logs/route.ts +++ b/sim/app/api/logs/route.ts @@ -25,6 +25,7 @@ const QueryParamsSchema = z.object({ endDate: z.string().optional(), }) +// Used to retrieve and display workflow logs export async function GET(request: NextRequest) { const requestId = crypto.randomUUID().slice(0, 8) diff --git a/sim/app/api/db/settings/route.ts b/sim/app/api/settings/route.ts similarity index 100% rename from sim/app/api/db/settings/route.ts rename to sim/app/api/settings/route.ts diff --git a/sim/app/api/db/workflow/variables/[id]/route.ts b/sim/app/api/workflows/[id]/variables/route.ts similarity index 89% rename from sim/app/api/db/workflow/variables/[id]/route.ts rename to sim/app/api/workflows/[id]/variables/route.ts index 9c040af1d0..d61f714d02 100644 --- a/sim/app/api/db/workflow/variables/[id]/route.ts +++ b/sim/app/api/workflows/[id]/variables/route.ts @@ -3,9 +3,9 @@ import { eq } from 'drizzle-orm' import { z } from 'zod' import { getSession } from '@/lib/auth' import { createLogger } from '@/lib/logs/console-logger' +import { Variable } from '@/stores/panel/variables/types' import { db } from '@/db' import { workflow } from '@/db/schema' -import { Variable } from '@/stores/panel/variables/types' const logger = createLogger('WorkflowVariablesAPI') @@ -22,10 +22,7 @@ const VariablesSchema = z.object({ ), }) -export async function POST( - req: NextRequest, - { params }: { params: Promise<{ id: string }> } -) { +export async function POST(req: NextRequest, { params }: { params: Promise<{ id: string }> }) { const requestId = crypto.randomUUID().slice(0, 8) const workflowId = (await params).id @@ -90,17 +87,11 @@ export async function POST( } } catch (error) { logger.error(`[${requestId}] Error updating workflow variables`, error) - return NextResponse.json( - { error: 'Failed to update workflow variables' }, - { status: 500 } - ) + return NextResponse.json({ error: 'Failed to update workflow variables' }, { status: 500 }) } } -export async function GET( - req: NextRequest, - { params }: { params: Promise<{ id: string }> } -) { +export async function GET(req: NextRequest, { params }: { params: Promise<{ id: string }> }) { const requestId = crypto.randomUUID().slice(0, 8) const workflowId = (await params).id @@ -132,20 +123,23 @@ export async function GET( } // Return variables if they exist - const variables = workflowRecord[0].variables as Record || {} - + const variables = (workflowRecord[0].variables as Record) || {} + // Add cache headers to prevent frequent reloading const headers = new Headers({ 'Cache-Control': 'max-age=60, stale-while-revalidate=300', // Cache for 1 minute, stale for 5 - 'ETag': `"${requestId}-${Object.keys(variables).length}"`, + ETag: `"${requestId}-${Object.keys(variables).length}"`, }) - return NextResponse.json({ data: variables }, { - status: 200, - headers, - }) + return NextResponse.json( + { data: variables }, + { + status: 200, + headers, + } + ) } catch (error: any) { logger.error(`[${requestId}] Workflow variables fetch error`, error) return NextResponse.json({ error: error.message }, { status: 500 }) } -} \ No newline at end of file +} diff --git a/sim/app/api/db/workflow/route.ts b/sim/app/api/workflows/sync/route.ts similarity index 100% rename from sim/app/api/db/workflow/route.ts rename to sim/app/api/workflows/sync/route.ts diff --git a/sim/app/w/logs/components/control-bar/control-bar.tsx b/sim/app/w/logs/components/control-bar/control-bar.tsx index b6031dbfc7..71d6c5cf74 100644 --- a/sim/app/w/logs/components/control-bar/control-bar.tsx +++ b/sim/app/w/logs/components/control-bar/control-bar.tsx @@ -37,7 +37,7 @@ export function ControlBar() { const fetchLogs = async () => { try { // Include workflow data in the response - const response = await fetch('/api/db/workflow-logs?includeWorkflow=true') + const response = await fetch('/api/logs?includeWorkflow=true') if (!response.ok) { throw new Error(`Error fetching logs: ${response.statusText}`) diff --git a/sim/app/w/logs/logs.tsx b/sim/app/w/logs/logs.tsx index 58ded0a743..46c08610d8 100644 --- a/sim/app/w/logs/logs.tsx +++ b/sim/app/w/logs/logs.tsx @@ -132,7 +132,7 @@ export default function Logs() { try { setLoading(true) // Include workflow data in the response - const response = await fetch('/api/db/workflow-logs?includeWorkflow=true') + const response = await fetch('/api/logs?includeWorkflow=true') if (!response.ok) { throw new Error(`Error fetching logs: ${response.statusText}`) diff --git a/sim/stores/constants.ts b/sim/stores/constants.ts index e49cd9eee4..dcf26383f0 100644 --- a/sim/stores/constants.ts +++ b/sim/stores/constants.ts @@ -5,10 +5,11 @@ export const STORAGE_KEYS = { } export const API_ENDPOINTS = { - WORKFLOW: '/api/db/workflow', - ENVIRONMENT: '/api/db/environment', + WORKFLOW: '/api/workflows/sync', + ENVIRONMENT: '/api/environment', SCHEDULE: '/api/schedules/schedule', - WORKFLOW_VARIABLES: '/api/db/workflow/variables', + SETTINGS: '/api/settings', + WORKFLOW_VARIABLES: '/api/workflows/[id]/variables', } export const SYNC_INTERVALS = {