Fix build issues and optimize API routes
This commit is contained in:
parent
6638b6a93d
commit
30df0e67d4
4 changed files with 25 additions and 22 deletions
|
|
@ -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();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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: {
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue