diff --git a/apps/dokploy/__test__/utils/backups.test.ts b/apps/dokploy/__test__/utils/backups.test.ts index c7bc310c..2c1e5dec 100644 --- a/apps/dokploy/__test__/utils/backups.test.ts +++ b/apps/dokploy/__test__/utils/backups.test.ts @@ -1,5 +1,5 @@ -import { describe, expect, test } from "vitest"; import { normalizeS3Path } from "@dokploy/server/utils/backups/utils"; +import { describe, expect, test } from "vitest"; describe("normalizeS3Path", () => { test("should handle empty and whitespace-only prefix", () => { diff --git a/apps/dokploy/components/dashboard/application/build/show.tsx b/apps/dokploy/components/dashboard/application/build/show.tsx index fbefab6d..291026d4 100644 --- a/apps/dokploy/components/dashboard/application/build/show.tsx +++ b/apps/dokploy/components/dashboard/application/build/show.tsx @@ -2,6 +2,7 @@ import { AlertBlock } from "@/components/shared/alert-block"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { Checkbox } from "@/components/ui/checkbox"; import { Form, FormControl, @@ -12,7 +13,6 @@ import { FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -import { Checkbox } from "@/components/ui/checkbox"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { api } from "@/utils/api"; import { zodResolver } from "@hookform/resolvers/zod"; @@ -124,11 +124,12 @@ const resetData = (data: ApplicationData): AddTemplate => { return { buildType: BuildType.railpack, }; - default: + default: { const buildType = data.buildType as BuildType; return { buildType, } as AddTemplate; + } } }; diff --git a/apps/dokploy/components/dashboard/application/deployments/show-deployments.tsx b/apps/dokploy/components/dashboard/application/deployments/show-deployments.tsx index 5c84888f..3cb18f98 100644 --- a/apps/dokploy/components/dashboard/application/deployments/show-deployments.tsx +++ b/apps/dokploy/components/dashboard/application/deployments/show-deployments.tsx @@ -1,5 +1,6 @@ import { DateTooltip } from "@/components/shared/date-tooltip"; import { StatusTooltip } from "@/components/shared/status-tooltip"; +import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, @@ -9,12 +10,11 @@ import { CardTitle, } from "@/components/ui/card"; import { type RouterOutputs, api } from "@/utils/api"; -import { RocketIcon, Clock, Loader2 } from "lucide-react"; +import { Clock, Loader2, RocketIcon } from "lucide-react"; import React, { useEffect, useState } from "react"; import { CancelQueues } from "./cancel-queues"; import { RefreshToken } from "./refresh-token"; import { ShowDeployment } from "./show-deployment"; -import { Badge } from "@/components/ui/badge"; interface Props { id: string; diff --git a/apps/dokploy/components/dashboard/application/domains/dns-helper-modal.tsx b/apps/dokploy/components/dashboard/application/domains/dns-helper-modal.tsx index 82c25d0f..e7b2f187 100644 --- a/apps/dokploy/components/dashboard/application/domains/dns-helper-modal.tsx +++ b/apps/dokploy/components/dashboard/application/domains/dns-helper-modal.tsx @@ -1,3 +1,5 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, @@ -6,8 +8,6 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import { Button } from "@/components/ui/button"; -import { AlertBlock } from "@/components/shared/alert-block"; import { Copy, HelpCircle, Server } from "lucide-react"; import { toast } from "sonner"; diff --git a/apps/dokploy/components/dashboard/application/domains/show-domains.tsx b/apps/dokploy/components/dashboard/application/domains/show-domains.tsx index 06fa5743..fe637353 100644 --- a/apps/dokploy/components/dashboard/application/domains/show-domains.tsx +++ b/apps/dokploy/components/dashboard/application/domains/show-domains.tsx @@ -1,4 +1,5 @@ import { DialogAction } from "@/components/shared/dialog-action"; +import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, @@ -7,6 +8,12 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip"; import { api } from "@/utils/api"; import { CheckCircle2, @@ -21,17 +28,10 @@ import { XCircle, } from "lucide-react"; import Link from "next/link"; -import { toast } from "sonner"; -import { AddDomain } from "./handle-domain"; import { useState } from "react"; -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger, -} from "@/components/ui/tooltip"; +import { toast } from "sonner"; import { DnsHelperModal } from "./dns-helper-modal"; -import { Badge } from "@/components/ui/badge"; +import { AddDomain } from "./handle-domain"; export type ValidationState = { isLoading: boolean; diff --git a/apps/dokploy/components/dashboard/application/general/generic/save-git-provider.tsx b/apps/dokploy/components/dashboard/application/general/generic/save-git-provider.tsx index 68f56055..f3e8116e 100644 --- a/apps/dokploy/components/dashboard/application/general/generic/save-git-provider.tsx +++ b/apps/dokploy/components/dashboard/application/general/generic/save-git-provider.tsx @@ -17,13 +17,13 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; +import { Switch } from "@/components/ui/switch"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; -import { Switch } from "@/components/ui/switch"; import { api } from "@/utils/api"; import { zodResolver } from "@hookform/resolvers/zod"; import { KeyRoundIcon, LockIcon, X } from "lucide-react"; diff --git a/apps/dokploy/components/dashboard/application/preview-deployments/show-preview-deployments.tsx b/apps/dokploy/components/dashboard/application/preview-deployments/show-preview-deployments.tsx index d436055e..bf93af71 100644 --- a/apps/dokploy/components/dashboard/application/preview-deployments/show-preview-deployments.tsx +++ b/apps/dokploy/components/dashboard/application/preview-deployments/show-preview-deployments.tsx @@ -24,9 +24,9 @@ import { } from "lucide-react"; import { toast } from "sonner"; import { ShowModalLogs } from "../../settings/web-server/show-modal-logs"; +import { ShowDeploymentsModal } from "../deployments/show-deployments-modal"; import { AddPreviewDomain } from "./add-preview-domain"; import { ShowPreviewSettings } from "./show-preview-settings"; -import { ShowDeploymentsModal } from "../deployments/show-deployments-modal"; interface Props { applicationId: string; diff --git a/apps/dokploy/components/dashboard/application/schedules/handle-schedules.tsx b/apps/dokploy/components/dashboard/application/schedules/handle-schedules.tsx index 5c34206a..2d26d7a9 100644 --- a/apps/dokploy/components/dashboard/application/schedules/handle-schedules.tsx +++ b/apps/dokploy/components/dashboard/application/schedules/handle-schedules.tsx @@ -1,40 +1,6 @@ +import { AlertBlock } from "@/components/shared/alert-block"; +import { CodeEditor } from "@/components/shared/code-editor"; import { Button } from "@/components/ui/button"; -import { - Form, - FormControl, - FormField, - FormItem, - FormLabel, - FormMessage, - FormDescription, -} from "@/components/ui/form"; -import { Input } from "@/components/ui/input"; -import { api } from "@/utils/api"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { useForm } from "react-hook-form"; -import { z } from "zod"; -import { - Info, - PlusCircle, - PenBoxIcon, - RefreshCw, - DatabaseZap, -} from "lucide-react"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "@/components/ui/select"; -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger, -} from "@/components/ui/tooltip"; -import { Switch } from "@/components/ui/switch"; -import { useEffect, useState } from "react"; import { Dialog, DialogContent, @@ -42,10 +8,44 @@ import { DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; -import { toast } from "sonner"; -import { AlertBlock } from "@/components/shared/alert-block"; -import { CodeEditor } from "@/components/shared/code-editor"; +import { + Form, + FormControl, + FormDescription, + FormField, + FormItem, + FormLabel, + FormMessage, +} from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { Switch } from "@/components/ui/switch"; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip"; import { cn } from "@/lib/utils"; +import { api } from "@/utils/api"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { + DatabaseZap, + Info, + PenBoxIcon, + PlusCircle, + RefreshCw, +} from "lucide-react"; +import { useEffect, useState } from "react"; +import { useForm } from "react-hook-form"; +import { toast } from "sonner"; +import { z } from "zod"; import type { CacheType } from "../domains/handle-domain"; export const commonCronExpressions = [ diff --git a/apps/dokploy/components/dashboard/application/schedules/show-schedules.tsx b/apps/dokploy/components/dashboard/application/schedules/show-schedules.tsx index bb62eb3e..672fb5ee 100644 --- a/apps/dokploy/components/dashboard/application/schedules/show-schedules.tsx +++ b/apps/dokploy/components/dashboard/application/schedules/show-schedules.tsx @@ -1,14 +1,6 @@ +import { DialogAction } from "@/components/shared/dialog-action"; +import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; -import { api } from "@/utils/api"; -import { HandleSchedules } from "./handle-schedules"; -import { - Clock, - Play, - Terminal, - Trash2, - ClipboardList, - Loader2, -} from "lucide-react"; import { Card, CardContent, @@ -16,16 +8,24 @@ import { CardHeader, CardTitle, } from "@/components/ui/card"; -import { Badge } from "@/components/ui/badge"; -import { toast } from "sonner"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; -import { DialogAction } from "@/components/shared/dialog-action"; +import { api } from "@/utils/api"; +import { + ClipboardList, + Clock, + Loader2, + Play, + Terminal, + Trash2, +} from "lucide-react"; +import { toast } from "sonner"; import { ShowDeploymentsModal } from "../deployments/show-deployments-modal"; +import { HandleSchedules } from "./handle-schedules"; interface Props { id: string; diff --git a/apps/dokploy/components/dashboard/database/backups/restore-backup.tsx b/apps/dokploy/components/dashboard/database/backups/restore-backup.tsx index a8a2f1ae..7617b510 100644 --- a/apps/dokploy/components/dashboard/database/backups/restore-backup.tsx +++ b/apps/dokploy/components/dashboard/database/backups/restore-backup.tsx @@ -39,6 +39,12 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select"; +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/components/ui/tooltip"; import { cn } from "@/lib/utils"; import { api } from "@/utils/api"; import { zodResolver } from "@hookform/resolvers/zod"; @@ -48,9 +54,9 @@ import { CheckIcon, ChevronsUpDown, Copy, - RotateCcw, - RefreshCw, DatabaseZap, + RefreshCw, + RotateCcw, } from "lucide-react"; import { useState } from "react"; import { useForm } from "react-hook-form"; @@ -58,12 +64,6 @@ import { toast } from "sonner"; import { z } from "zod"; import type { ServiceType } from "../../application/advanced/show-resources"; import { type LogLine, parseLogs } from "../../docker/logs/utils"; -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger, -} from "@/components/ui/tooltip"; type DatabaseType = | Exclude diff --git a/apps/dokploy/components/dashboard/database/backups/show-backups.tsx b/apps/dokploy/components/dashboard/database/backups/show-backups.tsx index bb3128cf..28ee68a9 100644 --- a/apps/dokploy/components/dashboard/database/backups/show-backups.tsx +++ b/apps/dokploy/components/dashboard/database/backups/show-backups.tsx @@ -1,3 +1,10 @@ +import { + MariadbIcon, + MongodbIcon, + MysqlIcon, + PostgresqlIcon, +} from "@/components/icons/data-tools-icons"; +import { AlertBlock } from "@/components/shared/alert-block"; import { DialogAction } from "@/components/shared/dialog-action"; import { Button } from "@/components/ui/button"; import { @@ -13,6 +20,7 @@ import { TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip"; +import { cn } from "@/lib/utils"; import { api } from "@/utils/api"; import { ClipboardList, @@ -25,17 +33,9 @@ import Link from "next/link"; import { useState } from "react"; import { toast } from "sonner"; import type { ServiceType } from "../../application/advanced/show-resources"; -import { RestoreBackup } from "./restore-backup"; -import { HandleBackup } from "./handle-backup"; -import { cn } from "@/lib/utils"; -import { - MariadbIcon, - MongodbIcon, - MysqlIcon, - PostgresqlIcon, -} from "@/components/icons/data-tools-icons"; -import { AlertBlock } from "@/components/shared/alert-block"; import { ShowDeploymentsModal } from "../../application/deployments/show-deployments-modal"; +import { HandleBackup } from "./handle-backup"; +import { RestoreBackup } from "./restore-backup"; interface Props { id: string; diff --git a/apps/dokploy/components/dashboard/impersonation/impersonation-bar.tsx b/apps/dokploy/components/dashboard/impersonation/impersonation-bar.tsx index 4b89e984..8a9f55c9 100644 --- a/apps/dokploy/components/dashboard/impersonation/impersonation-bar.tsx +++ b/apps/dokploy/components/dashboard/impersonation/impersonation-bar.tsx @@ -1,24 +1,9 @@ "use client"; -import { authClient } from "@/lib/auth-client"; -import { useEffect, useState } from "react"; +import { Logo } from "@/components/shared/logo"; +import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; +import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; -import { - CheckIcon, - ChevronsUpDown, - Settings2, - UserIcon, - XIcon, - Shield, - Calendar, - Key, - Copy, - Fingerprint, - Building2, - CreditCard, - Server, -} from "lucide-react"; -import { toast } from "sonner"; import { Command, CommandEmpty, @@ -32,19 +17,34 @@ import { PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; -import { cn } from "@/lib/utils"; -import { Logo } from "@/components/shared/logo"; -import { Badge } from "@/components/ui/badge"; import { Tooltip, TooltipContent, - TooltipTrigger, TooltipProvider, + TooltipTrigger, } from "@/components/ui/tooltip"; -import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; -import { format } from "date-fns"; -import copy from "copy-to-clipboard"; +import { authClient } from "@/lib/auth-client"; +import { cn } from "@/lib/utils"; import { api } from "@/utils/api"; +import copy from "copy-to-clipboard"; +import { format } from "date-fns"; +import { + Building2, + Calendar, + CheckIcon, + ChevronsUpDown, + Copy, + CreditCard, + Fingerprint, + Key, + Server, + Settings2, + Shield, + UserIcon, + XIcon, +} from "lucide-react"; +import { useEffect, useState } from "react"; +import { toast } from "sonner"; type User = typeof authClient.$Infer.Session.user; diff --git a/apps/dokploy/components/dashboard/project/duplicate-project.tsx b/apps/dokploy/components/dashboard/project/duplicate-project.tsx index d8abea2d..ffcfeba8 100644 --- a/apps/dokploy/components/dashboard/project/duplicate-project.tsx +++ b/apps/dokploy/components/dashboard/project/duplicate-project.tsx @@ -10,12 +10,12 @@ import { } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; +import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { api } from "@/utils/api"; import { Copy, Loader2 } from "lucide-react"; import { useRouter } from "next/router"; import { useState } from "react"; import { toast } from "sonner"; -import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; export type Services = { appName: string; diff --git a/apps/dokploy/components/dashboard/settings/profile/profile-form.tsx b/apps/dokploy/components/dashboard/settings/profile/profile-form.tsx index 1a8bc684..59e4736d 100644 --- a/apps/dokploy/components/dashboard/settings/profile/profile-form.tsx +++ b/apps/dokploy/components/dashboard/settings/profile/profile-form.tsx @@ -18,6 +18,7 @@ import { } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; +import { Switch } from "@/components/ui/switch"; import { generateSHA256Hash } from "@/lib/utils"; import { api } from "@/utils/api"; import { zodResolver } from "@hookform/resolvers/zod"; @@ -29,7 +30,6 @@ import { toast } from "sonner"; import { z } from "zod"; import { Disable2FA } from "./disable-2fa"; import { Enable2FA } from "./enable-2fa"; -import { Switch } from "@/components/ui/switch"; const profileSchema = z.object({ email: z.string(), diff --git a/apps/dokploy/components/dashboard/settings/servers/show-schedules-modal.tsx b/apps/dokploy/components/dashboard/settings/servers/show-schedules-modal.tsx index 5f6a26e7..6f6a1a6d 100644 --- a/apps/dokploy/components/dashboard/settings/servers/show-schedules-modal.tsx +++ b/apps/dokploy/components/dashboard/settings/servers/show-schedules-modal.tsx @@ -1,7 +1,7 @@ -import { useState } from "react"; +import { ShowSchedules } from "@/components/dashboard/application/schedules/show-schedules"; import { Dialog, DialogContent, DialogTrigger } from "@/components/ui/dialog"; import { DropdownMenuItem } from "@/components/ui/dropdown-menu"; -import { ShowSchedules } from "@/components/dashboard/application/schedules/show-schedules"; +import { useState } from "react"; interface Props { serverId: string; diff --git a/apps/dokploy/components/dashboard/settings/servers/show-servers.tsx b/apps/dokploy/components/dashboard/settings/servers/show-servers.tsx index 7ad9df94..813acb34 100644 --- a/apps/dokploy/components/dashboard/settings/servers/show-servers.tsx +++ b/apps/dokploy/components/dashboard/settings/servers/show-servers.tsx @@ -40,10 +40,10 @@ import { HandleServers } from "./handle-servers"; import { SetupServer } from "./setup-server"; import { ShowDockerContainersModal } from "./show-docker-containers-modal"; import { ShowMonitoringModal } from "./show-monitoring-modal"; +import { ShowSchedulesModal } from "./show-schedules-modal"; import { ShowSwarmOverviewModal } from "./show-swarm-overview-modal"; import { ShowTraefikFileSystemModal } from "./show-traefik-file-system-modal"; import { WelcomeSuscription } from "./welcome-stripe/welcome-suscription"; -import { ShowSchedulesModal } from "./show-schedules-modal"; export const ShowServers = () => { const { t } = useTranslation("settings"); diff --git a/apps/dokploy/components/layouts/dashboard-layout.tsx b/apps/dokploy/components/layouts/dashboard-layout.tsx index 25dd77a5..0bc39baf 100644 --- a/apps/dokploy/components/layouts/dashboard-layout.tsx +++ b/apps/dokploy/components/layouts/dashboard-layout.tsx @@ -1,6 +1,6 @@ -import Page from "./side"; -import { ImpersonationBar } from "../dashboard/impersonation/impersonation-bar"; import { api } from "@/utils/api"; +import { ImpersonationBar } from "../dashboard/impersonation/impersonation-bar"; +import Page from "./side"; interface Props { children: React.ReactNode; diff --git a/apps/dokploy/pages/dashboard/project/[projectId].tsx b/apps/dokploy/pages/dashboard/project/[projectId].tsx index 6bc39642..baf00556 100644 --- a/apps/dokploy/pages/dashboard/project/[projectId].tsx +++ b/apps/dokploy/pages/dashboard/project/[projectId].tsx @@ -18,6 +18,7 @@ import { StatusTooltip } from "@/components/shared/status-tooltip"; import { Button } from "@/components/ui/button"; import { AddAiAssistant } from "@/components/dashboard/project/add-ai-assistant"; +import { DuplicateProject } from "@/components/dashboard/project/duplicate-project"; import { Card, CardContent, @@ -93,7 +94,6 @@ import { useRouter } from "next/router"; import { type ReactElement, useEffect, useMemo, useState } from "react"; import { toast } from "sonner"; import superjson from "superjson"; -import { DuplicateProject } from "@/components/dashboard/project/duplicate-project"; export type Services = { appName: string; diff --git a/apps/dokploy/pages/dashboard/schedules.tsx b/apps/dokploy/pages/dashboard/schedules.tsx index 37c8d298..c537990c 100644 --- a/apps/dokploy/pages/dashboard/schedules.tsx +++ b/apps/dokploy/pages/dashboard/schedules.tsx @@ -1,11 +1,11 @@ -import { DashboardLayout } from "@/components/layouts/dashboard-layout"; -import type { ReactElement } from "react"; -import type { GetServerSidePropsContext } from "next"; -import { validateRequest } from "@dokploy/server/lib/auth"; -import { IS_CLOUD } from "@dokploy/server/constants"; -import { api } from "@/utils/api"; import { ShowSchedules } from "@/components/dashboard/application/schedules/show-schedules"; +import { DashboardLayout } from "@/components/layouts/dashboard-layout"; import { Card } from "@/components/ui/card"; +import { api } from "@/utils/api"; +import { IS_CLOUD } from "@dokploy/server/constants"; +import { validateRequest } from "@dokploy/server/lib/auth"; +import type { GetServerSidePropsContext } from "next"; +import type { ReactElement } from "react"; function SchedulesPage() { const { data: user } = api.user.get.useQuery(); return ( diff --git a/apps/dokploy/pages/dashboard/settings/server.tsx b/apps/dokploy/pages/dashboard/settings/server.tsx index 5e16ef42..84f6b2a1 100644 --- a/apps/dokploy/pages/dashboard/settings/server.tsx +++ b/apps/dokploy/pages/dashboard/settings/server.tsx @@ -1,16 +1,16 @@ +import { ShowBackups } from "@/components/dashboard/database/backups/show-backups"; import { WebDomain } from "@/components/dashboard/settings/web-domain"; import { WebServer } from "@/components/dashboard/settings/web-server"; import { DashboardLayout } from "@/components/layouts/dashboard-layout"; +import { Card } from "@/components/ui/card"; import { appRouter } from "@/server/api/root"; +import { api } from "@/utils/api"; import { getLocale, serverSideTranslations } from "@/utils/i18n"; import { IS_CLOUD, validateRequest } from "@dokploy/server"; import { createServerSideHelpers } from "@trpc/react-query/server"; import type { GetServerSidePropsContext } from "next"; import type { ReactElement } from "react"; import superjson from "superjson"; -import { api } from "@/utils/api"; -import { ShowBackups } from "@/components/dashboard/database/backups/show-backups"; -import { Card } from "@/components/ui/card"; const Page = () => { const { data: user } = api.user.get.useQuery(); return ( diff --git a/apps/dokploy/server/api/root.ts b/apps/dokploy/server/api/root.ts index 95a00fec..68cba6bd 100644 --- a/apps/dokploy/server/api/root.ts +++ b/apps/dokploy/server/api/root.ts @@ -28,6 +28,7 @@ import { projectRouter } from "./routers/project"; import { redirectsRouter } from "./routers/redirects"; import { redisRouter } from "./routers/redis"; import { registryRouter } from "./routers/registry"; +import { scheduleRouter } from "./routers/schedule"; import { securityRouter } from "./routers/security"; import { serverRouter } from "./routers/server"; import { settingsRouter } from "./routers/settings"; @@ -35,7 +36,6 @@ import { sshRouter } from "./routers/ssh-key"; import { stripeRouter } from "./routers/stripe"; import { swarmRouter } from "./routers/swarm"; import { userRouter } from "./routers/user"; -import { scheduleRouter } from "./routers/schedule"; /** * This is the primary router for your server. * diff --git a/apps/dokploy/server/api/routers/compose.ts b/apps/dokploy/server/api/routers/compose.ts index 583dde5c..abe0a3f7 100644 --- a/apps/dokploy/server/api/routers/compose.ts +++ b/apps/dokploy/server/api/routers/compose.ts @@ -51,9 +51,9 @@ import { processTemplate } from "@dokploy/server/templates/processors"; import { TRPCError } from "@trpc/server"; import { eq } from "drizzle-orm"; import { dump } from "js-yaml"; -import { parse } from "toml"; import _ from "lodash"; import { nanoid } from "nanoid"; +import { parse } from "toml"; import { z } from "zod"; import { createTRPCRouter, protectedProcedure, publicProcedure } from "../trpc"; diff --git a/apps/dokploy/server/api/routers/deployment.ts b/apps/dokploy/server/api/routers/deployment.ts index 238b3317..d04f6454 100644 --- a/apps/dokploy/server/api/routers/deployment.ts +++ b/apps/dokploy/server/api/routers/deployment.ts @@ -1,3 +1,4 @@ +import { db } from "@/server/db"; import { apiFindAllByApplication, apiFindAllByCompose, @@ -16,7 +17,6 @@ import { import { TRPCError } from "@trpc/server"; import { desc, eq } from "drizzle-orm"; import { createTRPCRouter, protectedProcedure } from "../trpc"; -import { db } from "@/server/db"; export const deploymentRouter = createTRPCRouter({ all: protectedProcedure diff --git a/apps/dokploy/server/api/routers/project.ts b/apps/dokploy/server/api/routers/project.ts index b98c93fa..66e0928f 100644 --- a/apps/dokploy/server/api/routers/project.ts +++ b/apps/dokploy/server/api/routers/project.ts @@ -21,32 +21,32 @@ import { addNewProject, checkProjectAccess, createApplication, + createBackup, createCompose, + createDomain, createMariadb, createMongo, + createMount, createMysql, + createPort, createPostgres, + createPreviewDeployment, createProject, + createRedirect, createRedis, + createSecurity, deleteProject, findApplicationById, findComposeById, - findMongoById, + findMariadbById, findMemberById, - findRedisById, + findMongoById, + findMySqlById, + findPostgresById, findProjectById, + findRedisById, findUserById, updateProjectById, - findPostgresById, - findMariadbById, - findMySqlById, - createDomain, - createPort, - createMount, - createRedirect, - createPreviewDeployment, - createBackup, - createSecurity, } from "@dokploy/server"; import { TRPCError } from "@trpc/server"; import { and, desc, eq, sql } from "drizzle-orm"; diff --git a/apps/dokploy/server/api/routers/schedule.ts b/apps/dokploy/server/api/routers/schedule.ts index 2b204adb..18e74cea 100644 --- a/apps/dokploy/server/api/routers/schedule.ts +++ b/apps/dokploy/server/api/routers/schedule.ts @@ -1,24 +1,24 @@ -import { TRPCError } from "@trpc/server"; -import { z } from "zod"; +import { removeJob, schedule } from "@/server/utils/backup"; +import { IS_CLOUD, scheduleJob } from "@dokploy/server"; +import { removeScheduleJob } from "@dokploy/server"; +import { db } from "@dokploy/server/db"; +import { deployments } from "@dokploy/server/db/schema/deployment"; import { createScheduleSchema, schedules, updateScheduleSchema, } from "@dokploy/server/db/schema/schedule"; -import { desc, eq } from "drizzle-orm"; -import { db } from "@dokploy/server/db"; -import { createTRPCRouter, protectedProcedure } from "../trpc"; import { runCommand } from "@dokploy/server/index"; -import { deployments } from "@dokploy/server/db/schema/deployment"; import { + createSchedule, deleteSchedule, findScheduleById, - createSchedule, updateSchedule, } from "@dokploy/server/services/schedule"; -import { IS_CLOUD, scheduleJob } from "@dokploy/server"; -import { removeJob, schedule } from "@/server/utils/backup"; -import { removeScheduleJob } from "@dokploy/server"; +import { TRPCError } from "@trpc/server"; +import { desc, eq } from "drizzle-orm"; +import { z } from "zod"; +import { createTRPCRouter, protectedProcedure } from "../trpc"; export const scheduleRouter = createTRPCRouter({ create: protectedProcedure .input(createScheduleSchema) diff --git a/apps/dokploy/server/wss/drawer-logs.ts b/apps/dokploy/server/wss/drawer-logs.ts index 0202ae52..e68c2fed 100644 --- a/apps/dokploy/server/wss/drawer-logs.ts +++ b/apps/dokploy/server/wss/drawer-logs.ts @@ -1,9 +1,9 @@ import type http from "node:http"; +import { validateRequest } from "@dokploy/server/lib/auth"; import { applyWSSHandler } from "@trpc/server/adapters/ws"; import { WebSocketServer } from "ws"; import { appRouter } from "../api/root"; import { createTRPCContext } from "../api/trpc"; -import { validateRequest } from "@dokploy/server/lib/auth"; export const setupDrawerLogsWebSocketServer = ( server: http.Server, diff --git a/apps/schedules/src/utils.ts b/apps/schedules/src/utils.ts index e3bd5a48..e65775ae 100644 --- a/apps/schedules/src/utils.ts +++ b/apps/schedules/src/utils.ts @@ -7,11 +7,11 @@ import { findServerById, keepLatestNBackups, runCommand, + runComposeBackup, runMariadbBackup, runMongoBackup, runMySqlBackup, runPostgresBackup, - runComposeBackup, } from "@dokploy/server"; import { db } from "@dokploy/server/dist/db"; import { backups, schedules, server } from "@dokploy/server/dist/db/schema"; diff --git a/packages/server/src/db/schema/backups.ts b/packages/server/src/db/schema/backups.ts index 328ed512..2359a40a 100644 --- a/packages/server/src/db/schema/backups.ts +++ b/packages/server/src/db/schema/backups.ts @@ -11,15 +11,15 @@ import { import { createInsertSchema } from "drizzle-zod"; import { nanoid } from "nanoid"; import { z } from "zod"; +import { generateAppName } from "."; +import { compose } from "./compose"; +import { deployments } from "./deployment"; import { destinations } from "./destination"; import { mariadb } from "./mariadb"; import { mongo } from "./mongo"; import { mysql } from "./mysql"; import { postgres } from "./postgres"; import { users_temp } from "./user"; -import { compose } from "./compose"; -import { deployments } from "./deployment"; -import { generateAppName } from "."; export const databaseType = pgEnum("databaseType", [ "postgres", "mariadb", diff --git a/packages/server/src/db/schema/compose.ts b/packages/server/src/db/schema/compose.ts index f67521e5..a6fb998c 100644 --- a/packages/server/src/db/schema/compose.ts +++ b/packages/server/src/db/schema/compose.ts @@ -3,6 +3,7 @@ import { boolean, integer, pgEnum, pgTable, text } from "drizzle-orm/pg-core"; import { createInsertSchema } from "drizzle-zod"; import { nanoid } from "nanoid"; import { z } from "zod"; +import { backups } from "./backups"; import { bitbucket } from "./bitbucket"; import { deployments } from "./deployment"; import { domains } from "./domain"; @@ -15,7 +16,6 @@ import { server } from "./server"; import { applicationStatus, triggerType } from "./shared"; import { sshKeys } from "./ssh-key"; import { generateAppName } from "./utils"; -import { backups } from "./backups"; import { schedules } from "./schedule"; export const sourceTypeCompose = pgEnum("sourceTypeCompose", [ diff --git a/packages/server/src/db/schema/deployment.ts b/packages/server/src/db/schema/deployment.ts index 8e13bf6c..5712d928 100644 --- a/packages/server/src/db/schema/deployment.ts +++ b/packages/server/src/db/schema/deployment.ts @@ -10,11 +10,11 @@ import { createInsertSchema } from "drizzle-zod"; import { nanoid } from "nanoid"; import { z } from "zod"; import { applications } from "./application"; +import { backups } from "./backups"; import { compose } from "./compose"; import { previewDeployments } from "./preview-deployments"; -import { server } from "./server"; import { schedules } from "./schedule"; -import { backups } from "./backups"; +import { server } from "./server"; export const deploymentStatus = pgEnum("deploymentStatus", [ "running", "done", diff --git a/packages/server/src/db/schema/schedule.ts b/packages/server/src/db/schema/schedule.ts index 3c83247f..0f078ae7 100644 --- a/packages/server/src/db/schema/schedule.ts +++ b/packages/server/src/db/schema/schedule.ts @@ -4,11 +4,11 @@ import { createInsertSchema } from "drizzle-zod"; import { nanoid } from "nanoid"; import { z } from "zod"; import { applications } from "./application"; -import { deployments } from "./deployment"; -import { generateAppName } from "./utils"; import { compose } from "./compose"; +import { deployments } from "./deployment"; import { server } from "./server"; import { users_temp } from "./user"; +import { generateAppName } from "./utils"; export const shellTypes = pgEnum("shellType", ["bash", "sh"]); export const scheduleType = pgEnum("scheduleType", [ diff --git a/packages/server/src/db/schema/server.ts b/packages/server/src/db/schema/server.ts index 31434122..4313e95d 100644 --- a/packages/server/src/db/schema/server.ts +++ b/packages/server/src/db/schema/server.ts @@ -20,9 +20,9 @@ import { mongo } from "./mongo"; import { mysql } from "./mysql"; import { postgres } from "./postgres"; import { redis } from "./redis"; +import { schedules } from "./schedule"; import { sshKeys } from "./ssh-key"; import { generateAppName } from "./utils"; -import { schedules } from "./schedule"; export const serverStatus = pgEnum("serverStatus", ["active", "inactive"]); export const server = pgTable("server", { diff --git a/packages/server/src/db/schema/user.ts b/packages/server/src/db/schema/user.ts index c9b8c9fb..6c091ce5 100644 --- a/packages/server/src/db/schema/user.ts +++ b/packages/server/src/db/schema/user.ts @@ -11,10 +11,10 @@ import { createInsertSchema } from "drizzle-zod"; import { nanoid } from "nanoid"; import { z } from "zod"; import { account, apikey, organization } from "./account"; -import { projects } from "./project"; -import { certificateType } from "./shared"; import { backups } from "./backups"; +import { projects } from "./project"; import { schedules } from "./schedule"; +import { certificateType } from "./shared"; /** * This is an example of how to use the multi-project schema feature of Drizzle ORM. Use the same * database instance for multiple projects. diff --git a/packages/server/src/lib/auth.ts b/packages/server/src/lib/auth.ts index 7496d729..fb22bb9f 100644 --- a/packages/server/src/lib/auth.ts +++ b/packages/server/src/lib/auth.ts @@ -3,7 +3,7 @@ import * as bcrypt from "bcrypt"; import { betterAuth } from "better-auth"; import { drizzleAdapter } from "better-auth/adapters/drizzle"; import { APIError } from "better-auth/api"; -import { apiKey, organization, twoFactor, admin } from "better-auth/plugins"; +import { admin, apiKey, organization, twoFactor } from "better-auth/plugins"; import { and, desc, eq } from "drizzle-orm"; import { IS_CLOUD } from "../constants"; import { db } from "../db"; diff --git a/packages/server/src/services/deployment.ts b/packages/server/src/services/deployment.ts index 74f73f0e..6a76fcaa 100644 --- a/packages/server/src/services/deployment.ts +++ b/packages/server/src/services/deployment.ts @@ -24,13 +24,13 @@ import { type Compose, findComposeById, updateCompose } from "./compose"; import { type Server, findServerById } from "./server"; import { execAsyncRemote } from "@dokploy/server/utils/process/execAsync"; +import { findBackupById } from "./backup"; import { type PreviewDeployment, findPreviewDeploymentById, updatePreviewDeployment, } from "./preview-deployment"; import { findScheduleById } from "./schedule"; -import { findBackupById } from "./backup"; export type Deployment = typeof deployments.$inferSelect; diff --git a/packages/server/src/services/domain.ts b/packages/server/src/services/domain.ts index 1ce8f199..edbf3cca 100644 --- a/packages/server/src/services/domain.ts +++ b/packages/server/src/services/domain.ts @@ -1,3 +1,5 @@ +import dns from "node:dns"; +import { promisify } from "node:util"; import { db } from "@dokploy/server/db"; import { generateRandomDomain } from "@dokploy/server/templates"; import { manageDomain } from "@dokploy/server/utils/traefik/domain"; @@ -7,8 +9,6 @@ import { type apiCreateDomain, domains } from "../db/schema"; import { findUserById } from "./admin"; import { findApplicationById } from "./application"; import { findServerById } from "./server"; -import dns from "node:dns"; -import { promisify } from "node:util"; export type Domain = typeof domains.$inferSelect; diff --git a/packages/server/src/services/schedule.ts b/packages/server/src/services/schedule.ts index b9a6cd52..cac707aa 100644 --- a/packages/server/src/services/schedule.ts +++ b/packages/server/src/services/schedule.ts @@ -1,16 +1,16 @@ -import { type Schedule, schedules } from "../db/schema/schedule"; -import { db } from "../db"; -import { eq } from "drizzle-orm"; +import path from "node:path"; import { TRPCError } from "@trpc/server"; +import { eq } from "drizzle-orm"; import type { z } from "zod"; +import { paths } from "../constants"; +import { db } from "../db"; +import { type Schedule, schedules } from "../db/schema/schedule"; import type { createScheduleSchema, updateScheduleSchema, } from "../db/schema/schedule"; -import { execAsync, execAsyncRemote } from "../utils/process/execAsync"; -import { paths } from "../constants"; -import path from "node:path"; import { encodeBase64 } from "../utils/docker/utils"; +import { execAsync, execAsyncRemote } from "../utils/process/execAsync"; export type ScheduleExtended = Awaited>; diff --git a/packages/server/src/templates/index.ts b/packages/server/src/templates/index.ts index 80a89887..17c46151 100644 --- a/packages/server/src/templates/index.ts +++ b/packages/server/src/templates/index.ts @@ -1,4 +1,4 @@ -import { randomBytes, createHmac } from "node:crypto"; +import { createHmac, randomBytes } from "node:crypto"; import { existsSync } from "node:fs"; import { mkdir, readFile, writeFile } from "node:fs/promises"; import { join } from "node:path"; diff --git a/packages/server/src/utils/backups/compose.ts b/packages/server/src/utils/backups/compose.ts index 1e12cafa..82fb8828 100644 --- a/packages/server/src/utils/backups/compose.ts +++ b/packages/server/src/utils/backups/compose.ts @@ -1,13 +1,13 @@ import type { BackupSchedule } from "@dokploy/server/services/backup"; import type { Compose } from "@dokploy/server/services/compose"; -import { findProjectById } from "@dokploy/server/services/project"; -import { sendDatabaseBackupNotifications } from "../notifications/database-backup"; -import { execAsync, execAsyncRemote } from "../process/execAsync"; -import { getS3Credentials, normalizeS3Path, getBackupCommand } from "./utils"; import { createDeploymentBackup, updateDeploymentStatus, } from "@dokploy/server/services/deployment"; +import { findProjectById } from "@dokploy/server/services/project"; +import { sendDatabaseBackupNotifications } from "../notifications/database-backup"; +import { execAsync, execAsyncRemote } from "../process/execAsync"; +import { getBackupCommand, getS3Credentials, normalizeS3Path } from "./utils"; export const runComposeBackup = async ( compose: Compose, diff --git a/packages/server/src/utils/backups/index.ts b/packages/server/src/utils/backups/index.ts index 38a0b446..9c3ad5a9 100644 --- a/packages/server/src/utils/backups/index.ts +++ b/packages/server/src/utils/backups/index.ts @@ -11,10 +11,10 @@ import { sendDockerCleanupNotifications } from "../notifications/docker-cleanup" import { execAsync, execAsyncRemote } from "../process/execAsync"; import { getS3Credentials, scheduleBackup } from "./utils"; -import type { BackupSchedule } from "@dokploy/server/services/backup"; -import { startLogCleanup } from "../access-log/handler"; import { member } from "@dokploy/server/db/schema"; +import type { BackupSchedule } from "@dokploy/server/services/backup"; import { eq } from "drizzle-orm"; +import { startLogCleanup } from "../access-log/handler"; export const initCronJobs = async () => { console.log("Setting up cron jobs...."); diff --git a/packages/server/src/utils/backups/mariadb.ts b/packages/server/src/utils/backups/mariadb.ts index b998c006..70bad169 100644 --- a/packages/server/src/utils/backups/mariadb.ts +++ b/packages/server/src/utils/backups/mariadb.ts @@ -1,13 +1,13 @@ import type { BackupSchedule } from "@dokploy/server/services/backup"; +import { + createDeploymentBackup, + updateDeploymentStatus, +} from "@dokploy/server/services/deployment"; import type { Mariadb } from "@dokploy/server/services/mariadb"; import { findProjectById } from "@dokploy/server/services/project"; import { sendDatabaseBackupNotifications } from "../notifications/database-backup"; import { execAsync, execAsyncRemote } from "../process/execAsync"; import { getBackupCommand, getS3Credentials, normalizeS3Path } from "./utils"; -import { - createDeploymentBackup, - updateDeploymentStatus, -} from "@dokploy/server/services/deployment"; export const runMariadbBackup = async ( mariadb: Mariadb, diff --git a/packages/server/src/utils/backups/mongo.ts b/packages/server/src/utils/backups/mongo.ts index 6da79b6c..806fd5c0 100644 --- a/packages/server/src/utils/backups/mongo.ts +++ b/packages/server/src/utils/backups/mongo.ts @@ -1,13 +1,13 @@ import type { BackupSchedule } from "@dokploy/server/services/backup"; +import { + createDeploymentBackup, + updateDeploymentStatus, +} from "@dokploy/server/services/deployment"; import type { Mongo } from "@dokploy/server/services/mongo"; import { findProjectById } from "@dokploy/server/services/project"; import { sendDatabaseBackupNotifications } from "../notifications/database-backup"; import { execAsync, execAsyncRemote } from "../process/execAsync"; import { getBackupCommand, getS3Credentials, normalizeS3Path } from "./utils"; -import { - createDeploymentBackup, - updateDeploymentStatus, -} from "@dokploy/server/services/deployment"; export const runMongoBackup = async (mongo: Mongo, backup: BackupSchedule) => { const { projectId, name } = mongo; diff --git a/packages/server/src/utils/backups/mysql.ts b/packages/server/src/utils/backups/mysql.ts index 4799f47c..2ba8a0e1 100644 --- a/packages/server/src/utils/backups/mysql.ts +++ b/packages/server/src/utils/backups/mysql.ts @@ -1,13 +1,13 @@ import type { BackupSchedule } from "@dokploy/server/services/backup"; +import { + createDeploymentBackup, + updateDeploymentStatus, +} from "@dokploy/server/services/deployment"; import type { MySql } from "@dokploy/server/services/mysql"; import { findProjectById } from "@dokploy/server/services/project"; import { sendDatabaseBackupNotifications } from "../notifications/database-backup"; import { execAsync, execAsyncRemote } from "../process/execAsync"; import { getBackupCommand, getS3Credentials, normalizeS3Path } from "./utils"; -import { - createDeploymentBackup, - updateDeploymentStatus, -} from "@dokploy/server/services/deployment"; export const runMySqlBackup = async (mysql: MySql, backup: BackupSchedule) => { const { projectId, name } = mysql; diff --git a/packages/server/src/utils/backups/postgres.ts b/packages/server/src/utils/backups/postgres.ts index c30d8861..9ce2025a 100644 --- a/packages/server/src/utils/backups/postgres.ts +++ b/packages/server/src/utils/backups/postgres.ts @@ -1,13 +1,13 @@ import type { BackupSchedule } from "@dokploy/server/services/backup"; +import { + createDeploymentBackup, + updateDeploymentStatus, +} from "@dokploy/server/services/deployment"; import type { Postgres } from "@dokploy/server/services/postgres"; import { findProjectById } from "@dokploy/server/services/project"; import { sendDatabaseBackupNotifications } from "../notifications/database-backup"; import { execAsync, execAsyncRemote } from "../process/execAsync"; import { getBackupCommand, getS3Credentials, normalizeS3Path } from "./utils"; -import { - createDeploymentBackup, - updateDeploymentStatus, -} from "@dokploy/server/services/deployment"; export const runPostgresBackup = async ( postgres: Postgres, diff --git a/packages/server/src/utils/backups/utils.ts b/packages/server/src/utils/backups/utils.ts index 0711c87d..83b0298c 100644 --- a/packages/server/src/utils/backups/utils.ts +++ b/packages/server/src/utils/backups/utils.ts @@ -1,14 +1,14 @@ +import { logger } from "@dokploy/server/lib/logger"; import type { BackupSchedule } from "@dokploy/server/services/backup"; import type { Destination } from "@dokploy/server/services/destination"; import { scheduleJob, scheduledJobs } from "node-schedule"; import { keepLatestNBackups } from "."; +import { runComposeBackup } from "./compose"; import { runMariadbBackup } from "./mariadb"; import { runMongoBackup } from "./mongo"; import { runMySqlBackup } from "./mysql"; import { runPostgresBackup } from "./postgres"; import { runWebServerBackup } from "./web-server"; -import { runComposeBackup } from "./compose"; -import { logger } from "@dokploy/server/lib/logger"; export const scheduleBackup = (backup: BackupSchedule) => { const { diff --git a/packages/server/src/utils/backups/web-server.ts b/packages/server/src/utils/backups/web-server.ts index 54592d87..923f03fd 100644 --- a/packages/server/src/utils/backups/web-server.ts +++ b/packages/server/src/utils/backups/web-server.ts @@ -1,16 +1,16 @@ -import type { BackupSchedule } from "@dokploy/server/services/backup"; -import { execAsync } from "../process/execAsync"; -import { getS3Credentials, normalizeS3Path } from "./utils"; -import { findDestinationById } from "@dokploy/server/services/destination"; -import { IS_CLOUD, paths } from "@dokploy/server/constants"; +import { createWriteStream } from "node:fs"; import { mkdtemp, rm } from "node:fs/promises"; -import { join } from "node:path"; import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { IS_CLOUD, paths } from "@dokploy/server/constants"; +import type { BackupSchedule } from "@dokploy/server/services/backup"; import { createDeploymentBackup, updateDeploymentStatus, } from "@dokploy/server/services/deployment"; -import { createWriteStream } from "node:fs"; +import { findDestinationById } from "@dokploy/server/services/destination"; +import { execAsync } from "../process/execAsync"; +import { getS3Credentials, normalizeS3Path } from "./utils"; export const runWebServerBackup = async (backup: BackupSchedule) => { if (IS_CLOUD) { diff --git a/packages/server/src/utils/docker/utils.ts b/packages/server/src/utils/docker/utils.ts index be497242..840e6f41 100644 --- a/packages/server/src/utils/docker/utils.ts +++ b/packages/server/src/utils/docker/utils.ts @@ -2,6 +2,7 @@ import fs from "node:fs"; import path from "node:path"; import type { Readable } from "node:stream"; import { docker, paths } from "@dokploy/server/constants"; +import type { Compose } from "@dokploy/server/services/compose"; import type { ContainerInfo, ResourceRequirements } from "dockerode"; import { parse } from "dotenv"; import type { ApplicationNested } from "../builders"; @@ -13,7 +14,6 @@ import type { RedisNested } from "../databases/redis"; import { execAsync, execAsyncRemote } from "../process/execAsync"; import { spawnAsync } from "../process/spawnAsync"; import { getRemoteDocker } from "../servers/remote-docker"; -import type { Compose } from "@dokploy/server/services/compose"; interface RegistryAuth { username: string; diff --git a/packages/server/src/utils/providers/gitlab.ts b/packages/server/src/utils/providers/gitlab.ts index 6454abe5..b77c1c6f 100644 --- a/packages/server/src/utils/providers/gitlab.ts +++ b/packages/server/src/utils/providers/gitlab.ts @@ -256,7 +256,7 @@ export const getGitlabRepositories = async (gitlabId?: string) => { const isIncluded = groupName .split(",") .some((name) => - full_path.toLowerCase().startsWith(name.trim().toLowerCase()) + full_path.toLowerCase().startsWith(name.trim().toLowerCase()), ); return isIncluded && kind === "group"; @@ -425,11 +425,10 @@ export const testGitlabConnection = async ( if (groupName) { return groupName - .split(",") - .some((name) => - full_path.toLowerCase().startsWith(name.trim().toLowerCase()) - ); - + .split(",") + .some((name) => + full_path.toLowerCase().startsWith(name.trim().toLowerCase()), + ); } return kind === "user"; }); diff --git a/packages/server/src/utils/restore/compose.ts b/packages/server/src/utils/restore/compose.ts index 219cd6dd..d55b12fd 100644 --- a/packages/server/src/utils/restore/compose.ts +++ b/packages/server/src/utils/restore/compose.ts @@ -1,10 +1,10 @@ -import type { Destination } from "@dokploy/server/services/destination"; +import type { apiRestoreBackup } from "@dokploy/server/db/schema"; import type { Compose } from "@dokploy/server/services/compose"; +import type { Destination } from "@dokploy/server/services/destination"; +import type { z } from "zod"; import { getS3Credentials } from "../backups/utils"; import { execAsync, execAsyncRemote } from "../process/execAsync"; import { getRestoreCommand } from "./utils"; -import type { apiRestoreBackup } from "@dokploy/server/db/schema"; -import type { z } from "zod"; interface DatabaseCredentials { databaseUser?: string; diff --git a/packages/server/src/utils/restore/mariadb.ts b/packages/server/src/utils/restore/mariadb.ts index afc4a22b..ffbceba7 100644 --- a/packages/server/src/utils/restore/mariadb.ts +++ b/packages/server/src/utils/restore/mariadb.ts @@ -1,10 +1,10 @@ +import type { apiRestoreBackup } from "@dokploy/server/db/schema"; import type { Destination } from "@dokploy/server/services/destination"; import type { Mariadb } from "@dokploy/server/services/mariadb"; +import type { z } from "zod"; import { getS3Credentials } from "../backups/utils"; import { execAsync, execAsyncRemote } from "../process/execAsync"; import { getRestoreCommand } from "./utils"; -import type { apiRestoreBackup } from "@dokploy/server/db/schema"; -import type { z } from "zod"; export const restoreMariadbBackup = async ( mariadb: Mariadb, diff --git a/packages/server/src/utils/restore/mongo.ts b/packages/server/src/utils/restore/mongo.ts index cb9e3583..4329a498 100644 --- a/packages/server/src/utils/restore/mongo.ts +++ b/packages/server/src/utils/restore/mongo.ts @@ -1,10 +1,10 @@ +import type { apiRestoreBackup } from "@dokploy/server/db/schema"; import type { Destination } from "@dokploy/server/services/destination"; import type { Mongo } from "@dokploy/server/services/mongo"; +import type { z } from "zod"; import { getS3Credentials } from "../backups/utils"; import { execAsync, execAsyncRemote } from "../process/execAsync"; import { getRestoreCommand } from "./utils"; -import type { apiRestoreBackup } from "@dokploy/server/db/schema"; -import type { z } from "zod"; export const restoreMongoBackup = async ( mongo: Mongo, diff --git a/packages/server/src/utils/restore/mysql.ts b/packages/server/src/utils/restore/mysql.ts index 103536bc..f5187242 100644 --- a/packages/server/src/utils/restore/mysql.ts +++ b/packages/server/src/utils/restore/mysql.ts @@ -1,10 +1,10 @@ +import type { apiRestoreBackup } from "@dokploy/server/db/schema"; import type { Destination } from "@dokploy/server/services/destination"; import type { MySql } from "@dokploy/server/services/mysql"; +import type { z } from "zod"; import { getS3Credentials } from "../backups/utils"; import { execAsync, execAsyncRemote } from "../process/execAsync"; import { getRestoreCommand } from "./utils"; -import type { apiRestoreBackup } from "@dokploy/server/db/schema"; -import type { z } from "zod"; export const restoreMySqlBackup = async ( mysql: MySql, diff --git a/packages/server/src/utils/restore/postgres.ts b/packages/server/src/utils/restore/postgres.ts index 68ced8a5..19f32989 100644 --- a/packages/server/src/utils/restore/postgres.ts +++ b/packages/server/src/utils/restore/postgres.ts @@ -1,10 +1,10 @@ +import type { apiRestoreBackup } from "@dokploy/server/db/schema"; import type { Destination } from "@dokploy/server/services/destination"; import type { Postgres } from "@dokploy/server/services/postgres"; +import type { z } from "zod"; import { getS3Credentials } from "../backups/utils"; import { execAsync, execAsyncRemote } from "../process/execAsync"; import { getRestoreCommand } from "./utils"; -import type { apiRestoreBackup } from "@dokploy/server/db/schema"; -import type { z } from "zod"; export const restorePostgresBackup = async ( postgres: Postgres, diff --git a/packages/server/src/utils/restore/web-server.ts b/packages/server/src/utils/restore/web-server.ts index 8397dcf2..683a1898 100644 --- a/packages/server/src/utils/restore/web-server.ts +++ b/packages/server/src/utils/restore/web-server.ts @@ -1,10 +1,10 @@ +import { mkdtemp } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { IS_CLOUD, paths } from "@dokploy/server/constants"; import type { Destination } from "@dokploy/server/services/destination"; import { getS3Credentials } from "../backups/utils"; import { execAsync } from "../process/execAsync"; -import { paths, IS_CLOUD } from "@dokploy/server/constants"; -import { mkdtemp } from "node:fs/promises"; -import { join } from "node:path"; -import { tmpdir } from "node:os"; export const restoreWebServerBackup = async ( destination: Destination, diff --git a/packages/server/src/utils/schedules/index.ts b/packages/server/src/utils/schedules/index.ts index 0f9b167e..e430a7dd 100644 --- a/packages/server/src/utils/schedules/index.ts +++ b/packages/server/src/utils/schedules/index.ts @@ -1,6 +1,6 @@ -import { db } from "../../db/index"; import { schedules } from "@dokploy/server/db/schema"; import { eq } from "drizzle-orm"; +import { db } from "../../db/index"; import { scheduleJob } from "./utils"; export const initSchedules = async () => { diff --git a/packages/server/src/utils/schedules/utils.ts b/packages/server/src/utils/schedules/utils.ts index d1f5ef78..2484c334 100644 --- a/packages/server/src/utils/schedules/utils.ts +++ b/packages/server/src/utils/schedules/utils.ts @@ -1,14 +1,14 @@ +import { createWriteStream } from "node:fs"; +import path from "node:path"; +import { paths } from "@dokploy/server/constants"; import type { Schedule } from "@dokploy/server/db/schema/schedule"; +import { createDeploymentSchedule } from "@dokploy/server/services/deployment"; +import { updateDeploymentStatus } from "@dokploy/server/services/deployment"; import { findScheduleById } from "@dokploy/server/services/schedule"; -import { scheduledJobs, scheduleJob as scheduleJobNode } from "node-schedule"; +import { scheduleJob as scheduleJobNode, scheduledJobs } from "node-schedule"; import { getComposeContainer, getServiceContainer } from "../docker/utils"; import { execAsyncRemote } from "../process/execAsync"; import { spawnAsync } from "../process/spawnAsync"; -import { createDeploymentSchedule } from "@dokploy/server/services/deployment"; -import { createWriteStream } from "node:fs"; -import { updateDeploymentStatus } from "@dokploy/server/services/deployment"; -import { paths } from "@dokploy/server/constants"; -import path from "node:path"; export const scheduleJob = (schedule: Schedule) => { const { cronExpression, scheduleId } = schedule;