119 lines
2.8 KiB
TypeScript
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(),
|
|
});
|