feat: enhance rollback functionality with UI updates and database schema changes

- Updated Tailwind configuration for responsive design.
- Modified the ShowDeployments component to include rollback settings and actions.
- Introduced a new "rollback" table in the database schema with foreign key relationships.
- Updated deployment and application schemas to support rollback features.
- Added rollback mutation to the API for initiating rollbacks.
This commit is contained in:
Mauricio Siu
2025-06-01 22:52:33 -06:00
parent a7d1fabd81
commit b14b9300c0
14 changed files with 192 additions and 78 deletions

View File

@@ -65,7 +65,11 @@ export const deploymentRouter = createTRPCRouter({
const deploymentsList = await db.query.deployments.findMany({
where: eq(deployments[`${input.type}Id`], input.id),
orderBy: desc(deployments.createdAt),
with: {
rollback: true,
},
});
return deploymentsList;
}),
});

View File

@@ -1,10 +1,10 @@
import { createTRPCRouter, protectedProcedure } from "@/server/api/trpc";
import { apiFindOneRollback, rollbacks } from "@/server/db/schema";
import { apiFindOneRollback } from "@/server/db/schema";
import { removeRollbackById, rollback } from "@dokploy/server";
import { TRPCError } from "@trpc/server";
import { eq, desc } from "drizzle-orm";
import { db } from "@/server/db";
import { z } from "zod";
// import { eq, desc } from "drizzle-orm";
// import { db } from "@/server/db";
// import { z } from "zod";
export const rollbackRouter = createTRPCRouter({
delete: protectedProcedure
@@ -23,26 +23,26 @@ export const rollbackRouter = createTRPCRouter({
});
}
}),
all: protectedProcedure
.input(
z.object({
applicationId: z.string(),
}),
)
.query(async ({ input }) => {
try {
return await db.query.rollbacks.findMany({
where: eq(rollbacks.applicationId, input.applicationId),
orderBy: desc(rollbacks.createdAt),
});
} catch (error) {
throw new TRPCError({
code: "BAD_REQUEST",
message: "Error input: Fetching rollbacks",
cause: error,
});
}
}),
// all: protectedProcedure
// .input(
// z.object({
// applicationId: z.string(),
// }),
// )
// .query(async ({ input }) => {
// try {
// return await db.query.rollbacks.findMany({
// where: eq(rollbacks.applicationId, input.applicationId),
// orderBy: desc(rollbacks.createdAt),
// });
// } catch (error) {
// throw new TRPCError({
// code: "BAD_REQUEST",
// message: "Error input: Fetching rollbacks",
// cause: error,
// });
// }
// }),
rollback: protectedProcedure
.input(apiFindOneRollback)
.mutation(async ({ input }) => {