mirror of
https://github.com/Dokploy/dokploy.git
synced 2026-06-15 20:25:23 +02:00
feat(validation): centralize app name validation logic
- Introduced `APP_NAME_REGEX` and `APP_NAME_MESSAGE` constants in `schema.ts` for consistent app name validation across `add-application.tsx`, `add-compose.tsx`, and `add-database.tsx`. - Updated regex and error message in the respective schemas to utilize the new constants, improving maintainability and readability.
This commit is contained in:
@@ -43,6 +43,7 @@ import {
|
||||
} from "@/components/ui/tooltip";
|
||||
import { slugify } from "@/lib/slug";
|
||||
import { api } from "@/utils/api";
|
||||
import { APP_NAME_MESSAGE, APP_NAME_REGEX } from "@/utils/schema";
|
||||
|
||||
const AddTemplateSchema = z.object({
|
||||
name: z.string().min(1, {
|
||||
@@ -53,9 +54,8 @@ const AddTemplateSchema = z.object({
|
||||
.min(1, {
|
||||
message: "App name is required",
|
||||
})
|
||||
.regex(/^[a-z](?!.*--)([a-z0-9-]*[a-z])?$/, {
|
||||
message:
|
||||
"App name supports lowercase letters, numbers, '-' and can only start and end letters, and does not support continuous '-'",
|
||||
.regex(APP_NAME_REGEX, {
|
||||
message: APP_NAME_MESSAGE,
|
||||
}),
|
||||
description: z.string().optional(),
|
||||
serverId: z.string().optional(),
|
||||
|
||||
@@ -43,6 +43,7 @@ import {
|
||||
} from "@/components/ui/tooltip";
|
||||
import { slugify } from "@/lib/slug";
|
||||
import { api } from "@/utils/api";
|
||||
import { APP_NAME_MESSAGE, APP_NAME_REGEX } from "@/utils/schema";
|
||||
|
||||
const AddComposeSchema = z.object({
|
||||
composeType: z.enum(["docker-compose", "stack"]).optional(),
|
||||
@@ -54,9 +55,8 @@ const AddComposeSchema = z.object({
|
||||
.min(1, {
|
||||
message: "App name is required",
|
||||
})
|
||||
.regex(/^[a-z](?!.*--)([a-z0-9-]*[a-z0-9])?$/, {
|
||||
message:
|
||||
"App name supports lowercase letters, numbers, '-' and must start with a letter, end with a letter or number, and cannot contain consecutive '-'",
|
||||
.regex(APP_NAME_REGEX, {
|
||||
message: APP_NAME_MESSAGE,
|
||||
}),
|
||||
description: z.string().optional(),
|
||||
serverId: z.string().optional(),
|
||||
|
||||
@@ -52,6 +52,7 @@ import {
|
||||
} from "@/components/ui/tooltip";
|
||||
import { slugify } from "@/lib/slug";
|
||||
import { api } from "@/utils/api";
|
||||
import { APP_NAME_MESSAGE, APP_NAME_REGEX } from "@/utils/schema";
|
||||
|
||||
type DbType = z.infer<typeof mySchema>["type"];
|
||||
|
||||
@@ -82,9 +83,8 @@ const baseDatabaseSchema = z.object({
|
||||
.min(1, {
|
||||
message: "App name is required",
|
||||
})
|
||||
.regex(/^[a-z](?!.*--)([a-z0-9-]*[a-z])?$/, {
|
||||
message:
|
||||
"App name supports lowercase letters, numbers, '-' and can only start and end letters, and does not support continuous '-'",
|
||||
.regex(APP_NAME_REGEX, {
|
||||
message: APP_NAME_MESSAGE,
|
||||
}),
|
||||
databasePassword: z
|
||||
.string()
|
||||
|
||||
@@ -10,6 +10,10 @@ if (typeof window === "undefined") {
|
||||
})();
|
||||
}
|
||||
|
||||
export const APP_NAME_REGEX = /^[a-z](?!.*--)([a-z0-9-]*[a-z0-9])?$/;
|
||||
export const APP_NAME_MESSAGE =
|
||||
"App name supports lowercase letters, numbers, '-' and must start with a letter, end with a letter or number, and cannot contain consecutive '-'";
|
||||
|
||||
export const uploadFileSchema = zfd.formData({
|
||||
applicationId: z.string().optional(),
|
||||
zip: zfd.file(),
|
||||
|
||||
Reference in New Issue
Block a user