mirror of
https://github.com/fosrl/pangolin.git
synced 2026-03-06 10:46:38 +00:00
Chungus
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { db, sites } from "@server/db";
|
||||
import { db, sites, targetHealthCheck } from "@server/db";
|
||||
import { targets } from "@server/db";
|
||||
import HttpCode from "@server/types/HttpCode";
|
||||
import response from "@server/lib/response";
|
||||
@@ -45,6 +45,20 @@ function queryTargets(resourceId: number) {
|
||||
resourceId: targets.resourceId,
|
||||
siteId: targets.siteId,
|
||||
siteType: sites.type,
|
||||
hcEnabled: targetHealthCheck.hcEnabled,
|
||||
hcPath: targetHealthCheck.hcPath,
|
||||
hcScheme: targetHealthCheck.hcScheme,
|
||||
hcMode: targetHealthCheck.hcMode,
|
||||
hcHostname: targetHealthCheck.hcHostname,
|
||||
hcPort: targetHealthCheck.hcPort,
|
||||
hcInterval: targetHealthCheck.hcInterval,
|
||||
hcUnhealthyInterval: targetHealthCheck.hcUnhealthyInterval,
|
||||
hcTimeout: targetHealthCheck.hcTimeout,
|
||||
hcHeaders: targetHealthCheck.hcHeaders,
|
||||
hcFollowRedirects: targetHealthCheck.hcFollowRedirects,
|
||||
hcMethod: targetHealthCheck.hcMethod,
|
||||
hcStatus: targetHealthCheck.hcStatus,
|
||||
hcHealth: targetHealthCheck.hcHealth,
|
||||
path: targets.path,
|
||||
pathMatchType: targets.pathMatchType,
|
||||
rewritePath: targets.rewritePath,
|
||||
@@ -52,13 +66,21 @@ function queryTargets(resourceId: number) {
|
||||
})
|
||||
.from(targets)
|
||||
.leftJoin(sites, eq(sites.siteId, targets.siteId))
|
||||
.leftJoin(
|
||||
targetHealthCheck,
|
||||
eq(targetHealthCheck.targetId, targets.targetId)
|
||||
)
|
||||
.where(eq(targets.resourceId, resourceId));
|
||||
|
||||
return baseQuery;
|
||||
}
|
||||
|
||||
type TargetWithParsedHeaders = Omit<Awaited<ReturnType<typeof queryTargets>>[0], 'hcHeaders'> & {
|
||||
hcHeaders: { name: string; value: string; }[] | null;
|
||||
};
|
||||
|
||||
export type ListTargetsResponse = {
|
||||
targets: Awaited<ReturnType<typeof queryTargets>>;
|
||||
targets: TargetWithParsedHeaders[];
|
||||
pagination: { total: number; limit: number; offset: number };
|
||||
};
|
||||
|
||||
@@ -113,9 +135,26 @@ export async function listTargets(
|
||||
const totalCountResult = await countQuery;
|
||||
const totalCount = totalCountResult[0].count;
|
||||
|
||||
// Parse hcHeaders from JSON string back to array for each target
|
||||
const parsedTargetsList = targetsList.map(target => {
|
||||
let parsedHcHeaders = null;
|
||||
if (target.hcHeaders) {
|
||||
try {
|
||||
parsedHcHeaders = JSON.parse(target.hcHeaders);
|
||||
} catch (error) {
|
||||
// If parsing fails, keep as string for backward compatibility
|
||||
parsedHcHeaders = target.hcHeaders;
|
||||
}
|
||||
}
|
||||
return {
|
||||
...target,
|
||||
hcHeaders: parsedHcHeaders
|
||||
};
|
||||
});
|
||||
|
||||
return response<ListTargetsResponse>(res, {
|
||||
data: {
|
||||
targets: targetsList,
|
||||
targets: parsedTargetsList,
|
||||
pagination: {
|
||||
total: totalCount,
|
||||
limit,
|
||||
|
||||
Reference in New Issue
Block a user