refactor: replace deprecated unsable_concat with concat for trpc middlewares (#2991)
This commit is contained in:
@@ -20,7 +20,7 @@ export type IntegrationAction = "query" | "interact";
|
|||||||
* @param action query for showing data or interact for mutating data
|
* @param action query for showing data or interact for mutating data
|
||||||
* @param kinds kinds of integrations that are supported
|
* @param kinds kinds of integrations that are supported
|
||||||
* @returns middleware that can be used with trpc
|
* @returns middleware that can be used with trpc
|
||||||
* @example publicProcedure.unstable_concat(createOneIntegrationMiddleware("query", "piHole", "homeAssistant")).query(...)
|
* @example publicProcedure.concat(createOneIntegrationMiddleware("query", "piHole", "homeAssistant")).query(...)
|
||||||
* @throws TRPCError NOT_FOUND if the integration was not found
|
* @throws TRPCError NOT_FOUND if the integration was not found
|
||||||
* @throws TRPCError FORBIDDEN if the user does not have permission to perform the specified action on the specified integration
|
* @throws TRPCError FORBIDDEN if the user does not have permission to perform the specified action on the specified integration
|
||||||
*/
|
*/
|
||||||
@@ -82,7 +82,7 @@ export const createOneIntegrationMiddleware = <TKind extends IntegrationKind>(
|
|||||||
* @param action query for showing data or interact for mutating data
|
* @param action query for showing data or interact for mutating data
|
||||||
* @param kinds kinds of integrations that are supported
|
* @param kinds kinds of integrations that are supported
|
||||||
* @returns middleware that can be used with trpc
|
* @returns middleware that can be used with trpc
|
||||||
* @example publicProcedure.unstable_concat(createManyIntegrationMiddleware("query", "piHole", "homeAssistant")).query(...)
|
* @example publicProcedure.concat(createManyIntegrationMiddleware("query", "piHole", "homeAssistant")).query(...)
|
||||||
* @throws TRPCError NOT_FOUND if the integration was not found
|
* @throws TRPCError NOT_FOUND if the integration was not found
|
||||||
* @throws TRPCError FORBIDDEN if the user does not have permission to perform the specified action on at least one of the specified integrations
|
* @throws TRPCError FORBIDDEN if the user does not have permission to perform the specified action on at least one of the specified integrations
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ const dockerCache = createCacheChannel<{
|
|||||||
export const dockerRouter = createTRPCRouter({
|
export const dockerRouter = createTRPCRouter({
|
||||||
getContainers: permissionRequiredProcedure
|
getContainers: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(dockerMiddleware())
|
.concat(dockerMiddleware())
|
||||||
.query(async () => {
|
.query(async () => {
|
||||||
const result = await dockerCache
|
const result = await dockerCache
|
||||||
.consumeAsync(async () => {
|
.consumeAsync(async () => {
|
||||||
@@ -81,14 +81,14 @@ export const dockerRouter = createTRPCRouter({
|
|||||||
}),
|
}),
|
||||||
invalidate: permissionRequiredProcedure
|
invalidate: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(dockerMiddleware())
|
.concat(dockerMiddleware())
|
||||||
.mutation(async () => {
|
.mutation(async () => {
|
||||||
await dockerCache.invalidateAsync();
|
await dockerCache.invalidateAsync();
|
||||||
return;
|
return;
|
||||||
}),
|
}),
|
||||||
startAll: permissionRequiredProcedure
|
startAll: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(dockerMiddleware())
|
.concat(dockerMiddleware())
|
||||||
.input(z.object({ ids: z.array(z.string()) }))
|
.input(z.object({ ids: z.array(z.string()) }))
|
||||||
.mutation(async ({ input }) => {
|
.mutation(async ({ input }) => {
|
||||||
await Promise.allSettled(
|
await Promise.allSettled(
|
||||||
@@ -102,7 +102,7 @@ export const dockerRouter = createTRPCRouter({
|
|||||||
}),
|
}),
|
||||||
stopAll: permissionRequiredProcedure
|
stopAll: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(dockerMiddleware())
|
.concat(dockerMiddleware())
|
||||||
.input(z.object({ ids: z.array(z.string()) }))
|
.input(z.object({ ids: z.array(z.string()) }))
|
||||||
.mutation(async ({ input }) => {
|
.mutation(async ({ input }) => {
|
||||||
await Promise.allSettled(
|
await Promise.allSettled(
|
||||||
@@ -116,7 +116,7 @@ export const dockerRouter = createTRPCRouter({
|
|||||||
}),
|
}),
|
||||||
restartAll: permissionRequiredProcedure
|
restartAll: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(dockerMiddleware())
|
.concat(dockerMiddleware())
|
||||||
.input(z.object({ ids: z.array(z.string()) }))
|
.input(z.object({ ids: z.array(z.string()) }))
|
||||||
.mutation(async ({ input }) => {
|
.mutation(async ({ input }) => {
|
||||||
await Promise.allSettled(
|
await Promise.allSettled(
|
||||||
@@ -130,7 +130,7 @@ export const dockerRouter = createTRPCRouter({
|
|||||||
}),
|
}),
|
||||||
removeAll: permissionRequiredProcedure
|
removeAll: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(dockerMiddleware())
|
.concat(dockerMiddleware())
|
||||||
.input(z.object({ ids: z.array(z.string()) }))
|
.input(z.object({ ids: z.array(z.string()) }))
|
||||||
.mutation(async ({ input }) => {
|
.mutation(async ({ input }) => {
|
||||||
await Promise.allSettled(
|
await Promise.allSettled(
|
||||||
|
|||||||
@@ -467,7 +467,7 @@ export const integrationRouter = createTRPCRouter({
|
|||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
searchInIntegration: protectedProcedure
|
searchInIntegration: protectedProcedure
|
||||||
.unstable_concat(createOneIntegrationMiddleware("query", ...getIntegrationKindsByCategory("search")))
|
.concat(createOneIntegrationMiddleware("query", ...getIntegrationKindsByCategory("search")))
|
||||||
.input(z.object({ integrationId: z.string(), query: z.string() }))
|
.input(z.object({ integrationId: z.string(), query: z.string() }))
|
||||||
.query(async ({ ctx, input }) => {
|
.query(async ({ ctx, input }) => {
|
||||||
const integrationInstance = await createIntegrationAsync(ctx.integration);
|
const integrationInstance = await createIntegrationAsync(ctx.integration);
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import { MemoryResourceParser } from "../resource-parser/memory-resource-parser"
|
|||||||
export const clusterRouter = createTRPCRouter({
|
export const clusterRouter = createTRPCRouter({
|
||||||
getCluster: permissionRequiredProcedure
|
getCluster: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(kubernetesMiddleware())
|
.concat(kubernetesMiddleware())
|
||||||
.query(async (): Promise<KubernetesCluster> => {
|
.query(async (): Promise<KubernetesCluster> => {
|
||||||
const { coreApi, metricsApi, versionApi, kubeConfig } = KubernetesClient.getInstance();
|
const { coreApi, metricsApi, versionApi, kubeConfig } = KubernetesClient.getInstance();
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { KubernetesClient } from "../kubernetes-client";
|
|||||||
export const configMapsRouter = createTRPCRouter({
|
export const configMapsRouter = createTRPCRouter({
|
||||||
getConfigMaps: permissionRequiredProcedure
|
getConfigMaps: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(kubernetesMiddleware())
|
.concat(kubernetesMiddleware())
|
||||||
.query(async (): Promise<KubernetesBaseResource[]> => {
|
.query(async (): Promise<KubernetesBaseResource[]> => {
|
||||||
const { coreApi } = KubernetesClient.getInstance();
|
const { coreApi } = KubernetesClient.getInstance();
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import { KubernetesClient } from "../kubernetes-client";
|
|||||||
export const ingressesRouter = createTRPCRouter({
|
export const ingressesRouter = createTRPCRouter({
|
||||||
getIngresses: permissionRequiredProcedure
|
getIngresses: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(kubernetesMiddleware())
|
.concat(kubernetesMiddleware())
|
||||||
.query(async (): Promise<KubernetesIngress[]> => {
|
.query(async (): Promise<KubernetesIngress[]> => {
|
||||||
const { networkingApi } = KubernetesClient.getInstance();
|
const { networkingApi } = KubernetesClient.getInstance();
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { KubernetesClient } from "../kubernetes-client";
|
|||||||
export const namespacesRouter = createTRPCRouter({
|
export const namespacesRouter = createTRPCRouter({
|
||||||
getNamespaces: permissionRequiredProcedure
|
getNamespaces: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(kubernetesMiddleware())
|
.concat(kubernetesMiddleware())
|
||||||
.query(async (): Promise<KubernetesNamespace[]> => {
|
.query(async (): Promise<KubernetesNamespace[]> => {
|
||||||
const { coreApi } = KubernetesClient.getInstance();
|
const { coreApi } = KubernetesClient.getInstance();
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { MemoryResourceParser } from "../resource-parser/memory-resource-parser"
|
|||||||
export const nodesRouter = createTRPCRouter({
|
export const nodesRouter = createTRPCRouter({
|
||||||
getNodes: permissionRequiredProcedure
|
getNodes: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(kubernetesMiddleware())
|
.concat(kubernetesMiddleware())
|
||||||
.query(async (): Promise<KubernetesNode[]> => {
|
.query(async (): Promise<KubernetesNode[]> => {
|
||||||
const { coreApi, metricsApi } = KubernetesClient.getInstance();
|
const { coreApi, metricsApi } = KubernetesClient.getInstance();
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { KubernetesClient } from "../kubernetes-client";
|
|||||||
export const podsRouter = createTRPCRouter({
|
export const podsRouter = createTRPCRouter({
|
||||||
getPods: permissionRequiredProcedure
|
getPods: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(kubernetesMiddleware())
|
.concat(kubernetesMiddleware())
|
||||||
.query(async (): Promise<KubernetesPod[]> => {
|
.query(async (): Promise<KubernetesPod[]> => {
|
||||||
const { coreApi, kubeConfig } = KubernetesClient.getInstance();
|
const { coreApi, kubeConfig } = KubernetesClient.getInstance();
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { KubernetesClient } from "../kubernetes-client";
|
|||||||
export const secretsRouter = createTRPCRouter({
|
export const secretsRouter = createTRPCRouter({
|
||||||
getSecrets: permissionRequiredProcedure
|
getSecrets: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(kubernetesMiddleware())
|
.concat(kubernetesMiddleware())
|
||||||
.query(async (): Promise<KubernetesSecret[]> => {
|
.query(async (): Promise<KubernetesSecret[]> => {
|
||||||
const { coreApi } = KubernetesClient.getInstance();
|
const { coreApi } = KubernetesClient.getInstance();
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { KubernetesClient } from "../kubernetes-client";
|
|||||||
export const servicesRouter = createTRPCRouter({
|
export const servicesRouter = createTRPCRouter({
|
||||||
getServices: permissionRequiredProcedure
|
getServices: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(kubernetesMiddleware())
|
.concat(kubernetesMiddleware())
|
||||||
.query(async (): Promise<KubernetesService[]> => {
|
.query(async (): Promise<KubernetesService[]> => {
|
||||||
const { coreApi } = KubernetesClient.getInstance();
|
const { coreApi } = KubernetesClient.getInstance();
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { KubernetesClient } from "../kubernetes-client";
|
|||||||
export const volumesRouter = createTRPCRouter({
|
export const volumesRouter = createTRPCRouter({
|
||||||
getVolumes: permissionRequiredProcedure
|
getVolumes: permissionRequiredProcedure
|
||||||
.requiresPermission("admin")
|
.requiresPermission("admin")
|
||||||
.unstable_concat(kubernetesMiddleware())
|
.concat(kubernetesMiddleware())
|
||||||
.query(async (): Promise<KubernetesVolume[]> => {
|
.query(async (): Promise<KubernetesVolume[]> => {
|
||||||
const { coreApi } = KubernetesClient.getInstance();
|
const { coreApi } = KubernetesClient.getInstance();
|
||||||
|
|
||||||
|
|||||||
@@ -133,14 +133,14 @@ export const searchEngineRouter = createTRPCRouter({
|
|||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
getMediaRequestOptions: protectedProcedure
|
getMediaRequestOptions: protectedProcedure
|
||||||
.unstable_concat(createOneIntegrationMiddleware("query", "jellyseerr", "overseerr"))
|
.concat(createOneIntegrationMiddleware("query", "jellyseerr", "overseerr"))
|
||||||
.input(mediaRequestOptionsSchema)
|
.input(mediaRequestOptionsSchema)
|
||||||
.query(async ({ ctx, input }) => {
|
.query(async ({ ctx, input }) => {
|
||||||
const integration = await createIntegrationAsync(ctx.integration);
|
const integration = await createIntegrationAsync(ctx.integration);
|
||||||
return await integration.getSeriesInformationAsync(input.mediaType, input.mediaId);
|
return await integration.getSeriesInformationAsync(input.mediaType, input.mediaId);
|
||||||
}),
|
}),
|
||||||
requestMedia: protectedProcedure
|
requestMedia: protectedProcedure
|
||||||
.unstable_concat(createOneIntegrationMiddleware("interact", "jellyseerr", "overseerr"))
|
.concat(createOneIntegrationMiddleware("interact", "jellyseerr", "overseerr"))
|
||||||
.input(mediaRequestRequestSchema)
|
.input(mediaRequestRequestSchema)
|
||||||
.mutation(async ({ ctx, input }) => {
|
.mutation(async ({ ctx, input }) => {
|
||||||
const integration = await createIntegrationAsync(ctx.integration);
|
const integration = await createIntegrationAsync(ctx.integration);
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export const calendarRouter = createTRPCRouter({
|
|||||||
showUnmonitored: z.boolean(),
|
showUnmonitored: z.boolean(),
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
.unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("calendar")))
|
.concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("calendar")))
|
||||||
.query(async ({ ctx, input }) => {
|
.query(async ({ ctx, input }) => {
|
||||||
const results = await Promise.all(
|
const results = await Promise.all(
|
||||||
ctx.integrations.map(async (integration) => {
|
ctx.integrations.map(async (integration) => {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import { createTRPCRouter, protectedProcedure, publicProcedure } from "../../trp
|
|||||||
|
|
||||||
export const dnsHoleRouter = createTRPCRouter({
|
export const dnsHoleRouter = createTRPCRouter({
|
||||||
summary: publicProcedure
|
summary: publicProcedure
|
||||||
.unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("dnsHole")))
|
.concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("dnsHole")))
|
||||||
.query(async ({ ctx }) => {
|
.query(async ({ ctx }) => {
|
||||||
const results = await Promise.all(
|
const results = await Promise.all(
|
||||||
ctx.integrations.map(async (integration) => {
|
ctx.integrations.map(async (integration) => {
|
||||||
@@ -36,7 +36,7 @@ export const dnsHoleRouter = createTRPCRouter({
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
subscribeToSummary: publicProcedure
|
subscribeToSummary: publicProcedure
|
||||||
.unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("dnsHole")))
|
.concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("dnsHole")))
|
||||||
.subscription(({ ctx }) => {
|
.subscription(({ ctx }) => {
|
||||||
return observable<{
|
return observable<{
|
||||||
integration: Modify<Integration, { kind: IntegrationKindByCategory<"dnsHole"> }>;
|
integration: Modify<Integration, { kind: IntegrationKindByCategory<"dnsHole"> }>;
|
||||||
@@ -63,7 +63,7 @@ export const dnsHoleRouter = createTRPCRouter({
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
enable: protectedProcedure
|
enable: protectedProcedure
|
||||||
.unstable_concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("dnsHole")))
|
.concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("dnsHole")))
|
||||||
.mutation(async ({ ctx: { integration } }) => {
|
.mutation(async ({ ctx: { integration } }) => {
|
||||||
const client = await createIntegrationAsync(integration);
|
const client = await createIntegrationAsync(integration);
|
||||||
await client.enableAsync();
|
await client.enableAsync();
|
||||||
@@ -81,7 +81,7 @@ export const dnsHoleRouter = createTRPCRouter({
|
|||||||
duration: z.number().optional(),
|
duration: z.number().optional(),
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
.unstable_concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("dnsHole")))
|
.concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("dnsHole")))
|
||||||
.mutation(async ({ ctx: { integration }, input }) => {
|
.mutation(async ({ ctx: { integration }, input }) => {
|
||||||
const client = await createIntegrationAsync(integration);
|
const client = await createIntegrationAsync(integration);
|
||||||
await client.disableAsync(input.duration);
|
await client.disableAsync(input.duration);
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ const createDownloadClientIntegrationMiddleware = (action: IntegrationAction) =>
|
|||||||
|
|
||||||
export const downloadsRouter = createTRPCRouter({
|
export const downloadsRouter = createTRPCRouter({
|
||||||
getJobsAndStatuses: publicProcedure
|
getJobsAndStatuses: publicProcedure
|
||||||
.unstable_concat(createDownloadClientIntegrationMiddleware("query"))
|
.concat(createDownloadClientIntegrationMiddleware("query"))
|
||||||
.query(async ({ ctx }) => {
|
.query(async ({ ctx }) => {
|
||||||
return await Promise.all(
|
return await Promise.all(
|
||||||
ctx.integrations.map(async (integration) => {
|
ctx.integrations.map(async (integration) => {
|
||||||
@@ -39,7 +39,7 @@ export const downloadsRouter = createTRPCRouter({
|
|||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
subscribeToJobsAndStatuses: publicProcedure
|
subscribeToJobsAndStatuses: publicProcedure
|
||||||
.unstable_concat(createDownloadClientIntegrationMiddleware("query"))
|
.concat(createDownloadClientIntegrationMiddleware("query"))
|
||||||
.subscription(({ ctx }) => {
|
.subscription(({ ctx }) => {
|
||||||
return observable<{
|
return observable<{
|
||||||
integration: Modify<Integration, { kind: IntegrationKindByCategory<"downloadClient"> }>;
|
integration: Modify<Integration, { kind: IntegrationKindByCategory<"downloadClient"> }>;
|
||||||
@@ -64,18 +64,16 @@ export const downloadsRouter = createTRPCRouter({
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
pause: protectedProcedure
|
pause: protectedProcedure.concat(createDownloadClientIntegrationMiddleware("interact")).mutation(async ({ ctx }) => {
|
||||||
.unstable_concat(createDownloadClientIntegrationMiddleware("interact"))
|
await Promise.all(
|
||||||
.mutation(async ({ ctx }) => {
|
ctx.integrations.map(async (integration) => {
|
||||||
await Promise.all(
|
const integrationInstance = await createIntegrationAsync(integration);
|
||||||
ctx.integrations.map(async (integration) => {
|
await integrationInstance.pauseQueueAsync();
|
||||||
const integrationInstance = await createIntegrationAsync(integration);
|
}),
|
||||||
await integrationInstance.pauseQueueAsync();
|
);
|
||||||
}),
|
}),
|
||||||
);
|
|
||||||
}),
|
|
||||||
pauseItem: protectedProcedure
|
pauseItem: protectedProcedure
|
||||||
.unstable_concat(createDownloadClientIntegrationMiddleware("interact"))
|
.concat(createDownloadClientIntegrationMiddleware("interact"))
|
||||||
.input(z.object({ item: downloadClientItemSchema }))
|
.input(z.object({ item: downloadClientItemSchema }))
|
||||||
.mutation(async ({ ctx, input }) => {
|
.mutation(async ({ ctx, input }) => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
@@ -85,18 +83,16 @@ export const downloadsRouter = createTRPCRouter({
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
resume: protectedProcedure
|
resume: protectedProcedure.concat(createDownloadClientIntegrationMiddleware("interact")).mutation(async ({ ctx }) => {
|
||||||
.unstable_concat(createDownloadClientIntegrationMiddleware("interact"))
|
await Promise.all(
|
||||||
.mutation(async ({ ctx }) => {
|
ctx.integrations.map(async (integration) => {
|
||||||
await Promise.all(
|
const integrationInstance = await createIntegrationAsync(integration);
|
||||||
ctx.integrations.map(async (integration) => {
|
await integrationInstance.resumeQueueAsync();
|
||||||
const integrationInstance = await createIntegrationAsync(integration);
|
}),
|
||||||
await integrationInstance.resumeQueueAsync();
|
);
|
||||||
}),
|
}),
|
||||||
);
|
|
||||||
}),
|
|
||||||
resumeItem: protectedProcedure
|
resumeItem: protectedProcedure
|
||||||
.unstable_concat(createDownloadClientIntegrationMiddleware("interact"))
|
.concat(createDownloadClientIntegrationMiddleware("interact"))
|
||||||
.input(z.object({ item: downloadClientItemSchema }))
|
.input(z.object({ item: downloadClientItemSchema }))
|
||||||
.mutation(async ({ ctx, input }) => {
|
.mutation(async ({ ctx, input }) => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
@@ -107,7 +103,7 @@ export const downloadsRouter = createTRPCRouter({
|
|||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
deleteItem: protectedProcedure
|
deleteItem: protectedProcedure
|
||||||
.unstable_concat(createDownloadClientIntegrationMiddleware("interact"))
|
.concat(createDownloadClientIntegrationMiddleware("interact"))
|
||||||
.input(z.object({ item: downloadClientItemSchema, fromDisk: z.boolean() }))
|
.input(z.object({ item: downloadClientItemSchema, fromDisk: z.boolean() }))
|
||||||
.mutation(async ({ ctx, input }) => {
|
.mutation(async ({ ctx, input }) => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import { createTRPCRouter, publicProcedure } from "../../trpc";
|
|||||||
|
|
||||||
export const healthMonitoringRouter = createTRPCRouter({
|
export const healthMonitoringRouter = createTRPCRouter({
|
||||||
getSystemHealthStatus: publicProcedure
|
getSystemHealthStatus: publicProcedure
|
||||||
.unstable_concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot"))
|
.concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot"))
|
||||||
.query(async ({ ctx }) => {
|
.query(async ({ ctx }) => {
|
||||||
return await Promise.all(
|
return await Promise.all(
|
||||||
ctx.integrations.map(async (integration) => {
|
ctx.integrations.map(async (integration) => {
|
||||||
@@ -26,7 +26,7 @@ export const healthMonitoringRouter = createTRPCRouter({
|
|||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
subscribeSystemHealthStatus: publicProcedure
|
subscribeSystemHealthStatus: publicProcedure
|
||||||
.unstable_concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot"))
|
.concat(createManyIntegrationMiddleware("query", "openmediavault", "dashDot"))
|
||||||
.subscription(({ ctx }) => {
|
.subscription(({ ctx }) => {
|
||||||
return observable<{ integrationId: string; healthInfo: HealthMonitoring; timestamp: Date }>((emit) => {
|
return observable<{ integrationId: string; healthInfo: HealthMonitoring; timestamp: Date }>((emit) => {
|
||||||
const unsubscribes: (() => void)[] = [];
|
const unsubscribes: (() => void)[] = [];
|
||||||
@@ -49,14 +49,14 @@ export const healthMonitoringRouter = createTRPCRouter({
|
|||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
getClusterHealthStatus: publicProcedure
|
getClusterHealthStatus: publicProcedure
|
||||||
.unstable_concat(createOneIntegrationMiddleware("query", "proxmox"))
|
.concat(createOneIntegrationMiddleware("query", "proxmox"))
|
||||||
.query(async ({ ctx }) => {
|
.query(async ({ ctx }) => {
|
||||||
const innerHandler = clusterInfoRequestHandler.handler(ctx.integration, {});
|
const innerHandler = clusterInfoRequestHandler.handler(ctx.integration, {});
|
||||||
const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false });
|
const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false });
|
||||||
return data;
|
return data;
|
||||||
}),
|
}),
|
||||||
subscribeClusterHealthStatus: publicProcedure
|
subscribeClusterHealthStatus: publicProcedure
|
||||||
.unstable_concat(createOneIntegrationMiddleware("query", "proxmox"))
|
.concat(createOneIntegrationMiddleware("query", "proxmox"))
|
||||||
.subscription(({ ctx }) => {
|
.subscription(({ ctx }) => {
|
||||||
return observable<ProxmoxClusterInfo>((emit) => {
|
return observable<ProxmoxClusterInfo>((emit) => {
|
||||||
const unsubscribes: (() => void)[] = [];
|
const unsubscribes: (() => void)[] = [];
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ const createIndexerManagerIntegrationMiddleware = (action: IntegrationAction) =>
|
|||||||
|
|
||||||
export const indexerManagerRouter = createTRPCRouter({
|
export const indexerManagerRouter = createTRPCRouter({
|
||||||
getIndexersStatus: publicProcedure
|
getIndexersStatus: publicProcedure
|
||||||
.unstable_concat(createIndexerManagerIntegrationMiddleware("query"))
|
.concat(createIndexerManagerIntegrationMiddleware("query"))
|
||||||
.query(async ({ ctx }) => {
|
.query(async ({ ctx }) => {
|
||||||
const results = await Promise.all(
|
const results = await Promise.all(
|
||||||
ctx.integrations.map(async (integration) => {
|
ctx.integrations.map(async (integration) => {
|
||||||
@@ -33,7 +33,7 @@ export const indexerManagerRouter = createTRPCRouter({
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
subscribeIndexersStatus: publicProcedure
|
subscribeIndexersStatus: publicProcedure
|
||||||
.unstable_concat(createIndexerManagerIntegrationMiddleware("query"))
|
.concat(createIndexerManagerIntegrationMiddleware("query"))
|
||||||
.subscription(({ ctx }) => {
|
.subscription(({ ctx }) => {
|
||||||
return observable<{ integrationId: string; indexers: Indexer[] }>((emit) => {
|
return observable<{ integrationId: string; indexers: Indexer[] }>((emit) => {
|
||||||
const unsubscribes: (() => void)[] = [];
|
const unsubscribes: (() => void)[] = [];
|
||||||
@@ -55,7 +55,7 @@ export const indexerManagerRouter = createTRPCRouter({
|
|||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
testAllIndexers: protectedProcedure
|
testAllIndexers: protectedProcedure
|
||||||
.unstable_concat(createIndexerManagerIntegrationMiddleware("interact"))
|
.concat(createIndexerManagerIntegrationMiddleware("interact"))
|
||||||
.mutation(async ({ ctx }) => {
|
.mutation(async ({ ctx }) => {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
ctx.integrations.map(async (integration) => {
|
ctx.integrations.map(async (integration) => {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { createTRPCRouter, protectedProcedure, publicProcedure } from "../../trp
|
|||||||
|
|
||||||
export const mediaRequestsRouter = createTRPCRouter({
|
export const mediaRequestsRouter = createTRPCRouter({
|
||||||
getLatestRequests: publicProcedure
|
getLatestRequests: publicProcedure
|
||||||
.unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest")))
|
.concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest")))
|
||||||
.query(async ({ ctx }) => {
|
.query(async ({ ctx }) => {
|
||||||
const results = await Promise.all(
|
const results = await Promise.all(
|
||||||
ctx.integrations.map(async (integration) => {
|
ctx.integrations.map(async (integration) => {
|
||||||
@@ -39,7 +39,7 @@ export const mediaRequestsRouter = createTRPCRouter({
|
|||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
subscribeToLatestRequests: publicProcedure
|
subscribeToLatestRequests: publicProcedure
|
||||||
.unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest")))
|
.concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest")))
|
||||||
.subscription(({ ctx }) => {
|
.subscription(({ ctx }) => {
|
||||||
return observable<{
|
return observable<{
|
||||||
integrationId: string;
|
integrationId: string;
|
||||||
@@ -65,7 +65,7 @@ export const mediaRequestsRouter = createTRPCRouter({
|
|||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
getStats: publicProcedure
|
getStats: publicProcedure
|
||||||
.unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest")))
|
.concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("mediaRequest")))
|
||||||
.query(async ({ ctx }) => {
|
.query(async ({ ctx }) => {
|
||||||
const results = await Promise.all(
|
const results = await Promise.all(
|
||||||
ctx.integrations.map(async (integration) => {
|
ctx.integrations.map(async (integration) => {
|
||||||
@@ -91,7 +91,7 @@ export const mediaRequestsRouter = createTRPCRouter({
|
|||||||
};
|
};
|
||||||
}),
|
}),
|
||||||
answerRequest: protectedProcedure
|
answerRequest: protectedProcedure
|
||||||
.unstable_concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("mediaRequest")))
|
.concat(createOneIntegrationMiddleware("interact", ...getIntegrationKindsByCategory("mediaRequest")))
|
||||||
.input(z.object({ requestId: z.number(), answer: z.enum(["approve", "decline"]) }))
|
.input(z.object({ requestId: z.number(), answer: z.enum(["approve", "decline"]) }))
|
||||||
.mutation(async ({ ctx: { integration }, input }) => {
|
.mutation(async ({ ctx: { integration }, input }) => {
|
||||||
const integrationInstance = await createIntegrationAsync(integration);
|
const integrationInstance = await createIntegrationAsync(integration);
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ const createMediaServerIntegrationMiddleware = (action: IntegrationAction) =>
|
|||||||
|
|
||||||
export const mediaServerRouter = createTRPCRouter({
|
export const mediaServerRouter = createTRPCRouter({
|
||||||
getCurrentStreams: publicProcedure
|
getCurrentStreams: publicProcedure
|
||||||
.unstable_concat(createMediaServerIntegrationMiddleware("query"))
|
.concat(createMediaServerIntegrationMiddleware("query"))
|
||||||
.input(z.object({ showOnlyPlaying: z.boolean() }))
|
.input(z.object({ showOnlyPlaying: z.boolean() }))
|
||||||
.query(async ({ ctx, input }) => {
|
.query(async ({ ctx, input }) => {
|
||||||
return await Promise.all(
|
return await Promise.all(
|
||||||
@@ -32,7 +32,7 @@ export const mediaServerRouter = createTRPCRouter({
|
|||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
subscribeToCurrentStreams: publicProcedure
|
subscribeToCurrentStreams: publicProcedure
|
||||||
.unstable_concat(createMediaServerIntegrationMiddleware("query"))
|
.concat(createMediaServerIntegrationMiddleware("query"))
|
||||||
.input(z.object({ showOnlyPlaying: z.boolean() }))
|
.input(z.object({ showOnlyPlaying: z.boolean() }))
|
||||||
.subscription(({ ctx, input }) => {
|
.subscription(({ ctx, input }) => {
|
||||||
return observable<{ integrationId: string; data: StreamSession[] }>((emit) => {
|
return observable<{ integrationId: string; data: StreamSession[] }>((emit) => {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ const createIndexerManagerIntegrationMiddleware = (action: IntegrationAction) =>
|
|||||||
|
|
||||||
export const mediaTranscodingRouter = createTRPCRouter({
|
export const mediaTranscodingRouter = createTRPCRouter({
|
||||||
getDataAsync: publicProcedure
|
getDataAsync: publicProcedure
|
||||||
.unstable_concat(createIndexerManagerIntegrationMiddleware("query"))
|
.concat(createIndexerManagerIntegrationMiddleware("query"))
|
||||||
.input(paginatedSchema.pick({ page: true, pageSize: true }))
|
.input(paginatedSchema.pick({ page: true, pageSize: true }))
|
||||||
.query(async ({ ctx, input }) => {
|
.query(async ({ ctx, input }) => {
|
||||||
const innerHandler = mediaTranscodingRequestHandler.handler(ctx.integration, {
|
const innerHandler = mediaTranscodingRequestHandler.handler(ctx.integration, {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { createTRPCRouter, publicProcedure } from "../../trpc";
|
|||||||
|
|
||||||
export const networkControllerRouter = createTRPCRouter({
|
export const networkControllerRouter = createTRPCRouter({
|
||||||
summary: publicProcedure
|
summary: publicProcedure
|
||||||
.unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("networkController")))
|
.concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("networkController")))
|
||||||
.query(async ({ ctx }) => {
|
.query(async ({ ctx }) => {
|
||||||
const results = await Promise.all(
|
const results = await Promise.all(
|
||||||
ctx.integrations.map(async (integration) => {
|
ctx.integrations.map(async (integration) => {
|
||||||
@@ -34,7 +34,7 @@ export const networkControllerRouter = createTRPCRouter({
|
|||||||
}),
|
}),
|
||||||
|
|
||||||
subscribeToSummary: publicProcedure
|
subscribeToSummary: publicProcedure
|
||||||
.unstable_concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("networkController")))
|
.concat(createManyIntegrationMiddleware("query", ...getIntegrationKindsByCategory("networkController")))
|
||||||
.subscription(({ ctx }) => {
|
.subscription(({ ctx }) => {
|
||||||
return observable<{
|
return observable<{
|
||||||
integration: Modify<Integration, { kind: IntegrationKindByCategory<"networkController"> }>;
|
integration: Modify<Integration, { kind: IntegrationKindByCategory<"networkController"> }>;
|
||||||
|
|||||||
@@ -15,14 +15,14 @@ const createSmartHomeIntegrationMiddleware = (action: IntegrationAction) =>
|
|||||||
export const smartHomeRouter = createTRPCRouter({
|
export const smartHomeRouter = createTRPCRouter({
|
||||||
entityState: publicProcedure
|
entityState: publicProcedure
|
||||||
.input(z.object({ entityId: z.string() }))
|
.input(z.object({ entityId: z.string() }))
|
||||||
.unstable_concat(createSmartHomeIntegrationMiddleware("query"))
|
.concat(createSmartHomeIntegrationMiddleware("query"))
|
||||||
.query(async ({ ctx: { integration }, input }) => {
|
.query(async ({ ctx: { integration }, input }) => {
|
||||||
const innerHandler = smartHomeEntityStateRequestHandler.handler(integration, { entityId: input.entityId });
|
const innerHandler = smartHomeEntityStateRequestHandler.handler(integration, { entityId: input.entityId });
|
||||||
const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false });
|
const { data } = await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false });
|
||||||
return data;
|
return data;
|
||||||
}),
|
}),
|
||||||
subscribeEntityState: publicProcedure
|
subscribeEntityState: publicProcedure
|
||||||
.unstable_concat(createSmartHomeIntegrationMiddleware("query"))
|
.concat(createSmartHomeIntegrationMiddleware("query"))
|
||||||
.input(z.object({ entityId: z.string() }))
|
.input(z.object({ entityId: z.string() }))
|
||||||
.subscription(({ input, ctx }) => {
|
.subscription(({ input, ctx }) => {
|
||||||
return observable<{
|
return observable<{
|
||||||
@@ -42,7 +42,7 @@ export const smartHomeRouter = createTRPCRouter({
|
|||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
switchEntity: protectedProcedure
|
switchEntity: protectedProcedure
|
||||||
.unstable_concat(createSmartHomeIntegrationMiddleware("interact"))
|
.concat(createSmartHomeIntegrationMiddleware("interact"))
|
||||||
.input(z.object({ entityId: z.string() }))
|
.input(z.object({ entityId: z.string() }))
|
||||||
.mutation(async ({ ctx: { integration }, input }) => {
|
.mutation(async ({ ctx: { integration }, input }) => {
|
||||||
const client = await createIntegrationAsync(integration);
|
const client = await createIntegrationAsync(integration);
|
||||||
@@ -54,7 +54,7 @@ export const smartHomeRouter = createTRPCRouter({
|
|||||||
return success;
|
return success;
|
||||||
}),
|
}),
|
||||||
executeAutomation: protectedProcedure
|
executeAutomation: protectedProcedure
|
||||||
.unstable_concat(createSmartHomeIntegrationMiddleware("interact"))
|
.concat(createSmartHomeIntegrationMiddleware("interact"))
|
||||||
.input(z.object({ automationId: z.string() }))
|
.input(z.object({ automationId: z.string() }))
|
||||||
.mutation(async ({ ctx: { integration }, input }) => {
|
.mutation(async ({ ctx: { integration }, input }) => {
|
||||||
const client = await createIntegrationAsync(integration);
|
const client = await createIntegrationAsync(integration);
|
||||||
|
|||||||
Reference in New Issue
Block a user