Files
homarr/packages/integrations/src/media-transcoding/tdarr-validation-schemas.ts
2024-12-15 15:53:02 +01:00

119 lines
2.8 KiB
TypeScript

import { z } from "@homarr/validation";
export const getStatisticsSchema = z.object({
totalFileCount: z.number(),
totalTranscodeCount: z.number(),
totalHealthCheckCount: z.number(),
table3Count: z.number(),
table6Count: z.number(),
table1Count: z.number(),
table4Count: z.number(),
pies: z.array(
z.tuple([
z.string(), // Library Name
z.string(), // Library ID
z.number(), // File count
z.number(), // Number of transcodes
z.number(), // Space saved (in GB)
z.number(), // Number of health checks
z.array(
z.object({
// Transcode Status (Pie segments)
name: z.string(),
value: z.number(),
}),
),
z.array(
z.object({
// Health Status (Pie segments)
name: z.string(),
value: z.number(),
}),
),
z.array(
z.object({
// Video files - Codecs (Pie segments)
name: z.string(),
value: z.number(),
}),
),
z.array(
z.object({
// Video files - Containers (Pie segments)
name: z.string(),
value: z.number(),
}),
),
z.array(
z.object({
// Video files - Resolutions (Pie segments)
name: z.string(),
value: z.number(),
}),
),
z.array(
z.object({
// Audio files - Codecs (Pie segments)
name: z.string(),
value: z.number(),
}),
),
z.array(
z.object({
// Audio files - Containers (Pie segments)
name: z.string(),
value: z.number(),
}),
),
]),
),
});
export const getNodesResponseSchema = z.record(
z.string(),
z.object({
_id: z.string(),
nodeName: z.string(),
nodePaused: z.boolean(),
workers: z.record(
z.string(),
z.object({
_id: z.string(),
file: z.string(),
fps: z.number(),
percentage: z.number(),
ETA: z.string(),
job: z.object({
type: z.string(),
}),
status: z.string(),
lastPluginDetails: z
.object({
number: z.string().optional(),
})
.optional(),
originalfileSizeInGbytes: z.number(),
estSize: z.number().optional(),
outputFileSizeInGbytes: z.number().optional(),
workerType: z.string(),
}),
),
}),
);
export const getStatusTableSchema = z.object({
array: z.array(
z.object({
_id: z.string(),
HealthCheck: z.string(),
TranscodeDecisionMaker: z.string(),
file: z.string(),
file_size: z.number(),
container: z.string(),
video_codec_name: z.string(),
video_resolution: z.string(),
}),
),
totalCount: z.number(),
});