Merge remote-tracking branch 'origin/feature/delete-docker-volumes' into feature/delete-docker-volumes

This commit is contained in:
djknaeckebrot
2024-12-23 08:13:57 +01:00
4 changed files with 446 additions and 403 deletions

View File

@@ -1,5 +1,6 @@
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import { Checkbox } from "@/components/ui/checkbox";
import {
Dialog,
DialogContent,
@@ -31,6 +32,7 @@ const deleteApplicationSchema = z.object({
projectName: z.string().min(1, {
message: "Application name is required",
}),
deleteVolumes: z.boolean(),
});
type DeleteApplication = z.infer<typeof deleteApplicationSchema>;
@@ -50,6 +52,7 @@ export const DeleteApplication = ({ applicationId }: Props) => {
const form = useForm<DeleteApplication>({
defaultValues: {
projectName: "",
deleteVolumes: false,
},
resolver: zodResolver(deleteApplicationSchema),
});
@@ -59,6 +62,7 @@ export const DeleteApplication = ({ applicationId }: Props) => {
if (formData.projectName === expectedName) {
await mutateAsync({
applicationId,
deleteVolumes: formData.deleteVolumes,
})
.then((data) => {
push(`/dashboard/project/${data?.projectId}`);
@@ -134,6 +138,27 @@ export const DeleteApplication = ({ applicationId }: Props) => {
</FormItem>
)}
/>
<FormField
control={form.control}
name="deleteVolumes"
render={({ field }) => (
<FormItem>
<div className="flex items-center">
<FormControl>
<Checkbox
checked={field.value}
onCheckedChange={field.onChange}
/>
</FormControl>
<FormLabel className="ml-2">
Delete volumes associated with this compose
</FormLabel>
</div>
<FormMessage />
</FormItem>
)}
/>
</form>
</Form>
</div>

View File

@@ -6,6 +6,7 @@ import {
import { db } from "@/server/db";
import {
apiCreateApplication,
apiDeleteApplication,
apiFindMonitoringStats,
apiFindOneApplication,
apiReloadApplication,
@@ -142,7 +143,7 @@ export const applicationRouter = createTRPCRouter({
}),
delete: protectedProcedure
.input(apiFindOneApplication)
.input(apiDeleteApplication)
.mutation(async ({ input, ctx }) => {
if (ctx.user.rol === "user") {
await checkServiceAccess(
@@ -178,7 +179,11 @@ export const applicationRouter = createTRPCRouter({
async () =>
await removeTraefikConfig(application.appName, application.serverId),
async () =>
await removeService(application?.appName, application.serverId),
await removeService(
application?.appName,
application.serverId,
input.deleteVolumes,
),
];
for (const operation of cleanupOperations) {