Fix build issues and optimize API routes

This commit is contained in:
TheMaddax 2024-12-01 21:23:05 -06:00
parent 6638b6a93d
commit 30df0e67d4
4 changed files with 25 additions and 22 deletions

View file

@ -1,8 +1,8 @@
// Import the NextJS API route handler
import { getConfig } from '@/lib/serverActions'; import { getConfig } from '@/lib/serverActions';
import { NextResponse } from 'next/server'; import { NextResponse } from 'next/server';
// Define the route handler function export const dynamic = 'force-dynamic'
export async function GET() { export async function GET() {
let caddyConfig = await getConfig(); let caddyConfig = await getConfig();

View file

@ -25,18 +25,22 @@ export async function DELETE(req: Request) {
let routes: Route[] = await getRoutes(); let routes: Route[] = await getRoutes();
let routesMap: Route[] = routes.map(r => r); let routesMap: Route[] = routes.map(r => r);
let targetRoute: Route = routesMap.filter((r) => (JSON.stringify(r) === JSON.stringify(route))).values().next().value; let targetRoute: Route = routesMap.filter((r) =>
(JSON.stringify(r) === JSON.stringify(route))
)[0]; // Use array indexing instead of iterator
if (!targetRoute) {
return new NextResponse(JSON.stringify({error: true, message: "Route not found"}), {
status: 404,
headers: {
'Content-Type': 'application/json',
},
});
}
let index = routesMap.indexOf(targetRoute); let index = routesMap.indexOf(targetRoute);
revalidateTag('routes');
if(index == -1) return new NextResponse(JSON.stringify({error: true, message: "Route not found"}), { revalidateTag('routes');
status: 404,
headers: {
'Content-Type': 'application/json',
},
})
const res = await fetch(`${process.env.CADDY_API}/config/apps/http/servers/srv0/routes/${index}`, { const res = await fetch(`${process.env.CADDY_API}/config/apps/http/servers/srv0/routes/${index}`, {
method: 'DELETE', method: 'DELETE',
@ -44,9 +48,8 @@ export async function DELETE(req: Request) {
'Content-Type': 'application/json' 'Content-Type': 'application/json'
}, },
body: JSON.stringify({route, error: false}) body: JSON.stringify({route, error: false})
}); });
return new NextResponse(JSON.stringify(JSON.stringify(res.body)), { return new NextResponse(JSON.stringify(JSON.stringify(res.body)), {
status: 200, status: 200,
headers: { headers: {

View file

@ -1,5 +1,7 @@
import { NextResponse } from "next/server"; import { NextResponse } from "next/server";
export const dynamic = 'force-dynamic'
export async function GET(request: Request) { export async function GET(request: Request) {
const res = await fetch(`${process.env.CADDY_API}/config/apps/http/servers/`, { cache: 'no-store' }); const res = await fetch(`${process.env.CADDY_API}/config/apps/http/servers/`, { cache: 'no-store' });
@ -14,4 +16,4 @@ export async function GET(request: Request) {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
}); });
} }

View file

@ -1,33 +1,31 @@
import useSWR from "swr"; import useSWR from "swr";
export async function useConfig() { export function useConfig() {
const { data, error, isLoading } = useSWR('/api/caddy/servers', fetcher); const { data, error, isLoading } = useSWR('/api/caddy/servers', fetcher);
return { return {
data, data,
error, error,
isLoading, isLoading,
} }
} }
export async function useServer() { export function useServer() {
const { data, error, isLoading } = useSWR('/api/caddy/servers', fetcher); const { data, error, isLoading } = useSWR('/api/caddy/servers', fetcher);
return { return {
data, data,
error, error,
isLoading, isLoading,
} }
} }
export async function useUpstreamRoutes(route: Route) { export function useUpstreamRoutes(route: Route) {
const { data, error, isLoading } = useSWR(`${process.env.CADDY_API}/reverse_proxy/upstreams`, fetcher); const { data, error, isLoading } = useSWR(`${process.env.CADDY_API}/reverse_proxy/upstreams`, fetcher);
return { return {
data, data,
error, error,
isLoading, isLoading,
} }
} }
export function useRoutes() { export function useRoutes() {
const { data, error, isLoading } = useSWR('/api/caddy/routes', fetcher); const { data, error, isLoading } = useSWR('/api/caddy/routes', fetcher);
return { return {