refactor: add dokploy trpc open api

This commit is contained in:
Mauricio Siu
2024-06-23 12:17:38 -06:00
parent b360cc2af4
commit 0801e91816
5 changed files with 356 additions and 37 deletions

View File

@@ -23,7 +23,7 @@ import { dockerRouter } from "./routers/docker";
import { composeRouter } from "./routers/compose";
import { registryRouter } from "./routers/registry";
import { clusterRouter } from "./routers/cluster";
import { generateOpenAPIDocumentFromTRPCRouter } from "openapi-trpc";
import { generateOpenApiDocument } from "@dokploy/trpc-openapi";
/**
* This is the primary router for your server.
@@ -59,9 +59,18 @@ export const appRouter = createTRPCRouter({
// export type definition of API
export type AppRouter = typeof appRouter;
export const doc = generateOpenAPIDocumentFromTRPCRouter(appRouter, {
pathPrefix: "/api/trpc",
processOperation(op) {
op.security = [{ bearerAuth: [] }];
export const openApiDocument = generateOpenApiDocument(appRouter, {
title: "tRPC OpenAPI",
version: "1.0.0",
baseUrl: "http://localhost:3000/api/trpc",
docsUrl: "http://localhost:3000/api/trpc/settings.getOpenApiDocument",
securitySchemes: {
bearerAuth: {
type: "http",
scheme: "bearer",
bearerFormat: "JWT",
},
},
description: "Dokploy API",
});

View File

@@ -41,7 +41,7 @@ import {
} from "../services/settings";
import { canAccessToTraefikFiles } from "../services/user";
import { recreateDirectory } from "@/server/utils/filesystem/directory";
import { doc } from "../root";
import { openApiDocument } from "../root";
export const settingsRouter = createTRPCRouter({
reloadServer: adminProcedure.mutation(async () => {
@@ -245,20 +245,12 @@ export const settingsRouter = createTRPCRouter({
}),
getOpenApiDocument: protectedProcedure.query((): unknown => {
doc.components = {
securitySchemes: {
bearerAuth: {
type: "http",
scheme: "bearer",
bearerFormat: "JWT",
},
},
};
doc.info = {
openApiDocument.info = {
title: "Dokploy API",
description: "Endpoints for dokploy",
version: getDokployVersion(),
};
return doc;
return openApiDocument;
}),
});

View File

@@ -15,8 +15,8 @@ import superjson from "superjson";
import { ZodError } from "zod";
import { validateRequest } from "../auth/auth";
import type { Session, User } from "lucia";
import type { OperationMeta } from "openapi-trpc";
import { validateBearerToken } from "../auth/token";
import type { OpenApiMeta } from "@dokploy/trpc-openapi";
/**
* 1. CONTEXT
@@ -97,7 +97,7 @@ export const createTRPCContext = async (opts: CreateNextContextOptions) => {
*/
const t = initTRPC
.meta<OperationMeta>()
.meta<OpenApiMeta>()
.context<typeof createTRPCContext>()
.create({
transformer: superjson,