diff --git a/src/common/enums/message.enum.ts b/src/common/enums/message.enum.ts index b18106e..02f0a7b 100755 --- a/src/common/enums/message.enum.ts +++ b/src/common/enums/message.enum.ts @@ -479,4 +479,6 @@ export const enum TemplateMessage { TEMPLATE_BUSINESS_NOT_FOUND = "کسب و کار مالک قالب یافت نشد", SEARCH_STRING = "نام برای جستجو باید یک رشته باشد", TEMPLATE_SELECTED_SUCCESSFULLY = "وضعیت قالب با موفقیت تغییر کرد", + TEMPLATE_THUMBNAIL_URL_VALID = "آدرس تصویر قالب باید یک آدرس معتبر باشد", + TEMPLATE_RAW_HTML_REQUIRED = "HTML خام قالب الزامی است", } diff --git a/src/modules/templates/DTO/create-template.dto.ts b/src/modules/templates/DTO/create-template.dto.ts index f5d8c48..c23ac03 100644 --- a/src/modules/templates/DTO/create-template.dto.ts +++ b/src/modules/templates/DTO/create-template.dto.ts @@ -1,5 +1,5 @@ import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; -import { IsNotEmpty, IsOptional, IsString, MaxLength } from "class-validator"; +import { IsNotEmpty, IsOptional, IsString, IsUrl, MaxLength } from "class-validator"; import { TemplateMessage } from "../../../common/enums/message.enum"; // import { PersonalityDataType } from "../interfaces/structure.interface"; @@ -33,13 +33,15 @@ export class CreateTemplateDto { }) structure: Record; - @IsOptional() + @IsNotEmpty({ message: TemplateMessage.TEMPLATE_RAW_HTML_REQUIRED }) @IsString({ message: TemplateMessage.TEMPLATE_RAW_HTML_STRING }) - @ApiPropertyOptional({ - description: "Raw HTML content of the template (optional)", - example: "

Template Content

", - }) - rawHtml?: string; + @ApiProperty({ description: "Raw HTML content of the template", example: "

Template Content

" }) + rawHtml: string; + + @IsOptional() + @IsUrl({ protocols: ["http", "https"] }, { message: TemplateMessage.TEMPLATE_THUMBNAIL_URL_VALID }) + @ApiPropertyOptional({ description: "Thumbnail URL of the template (optional)", example: "https://example.com/thumbnail.png" }) + thumbnailUrl?: string; // @IsNotEmpty({ message: "شناسه کسب و کار الزامی است" }) // @IsUUID("7", { message: "شناسه کسب و کار باید یک UUID معتبر باشد" }) diff --git a/src/modules/templates/entities/template.entity.ts b/src/modules/templates/entities/template.entity.ts index 18cd98c..cbac83f 100644 --- a/src/modules/templates/entities/template.entity.ts +++ b/src/modules/templates/entities/template.entity.ts @@ -10,20 +10,23 @@ import { TemplateRepository } from "../repositories/template.repository"; @Entity({ repository: () => TemplateRepository }) export class Template extends BaseEntity { @Property({ type: "varchar", length: 255, nullable: false }) - name: string; + name!: string; @Property({ type: "jsonb" }) - structure: unknown; + structure!: unknown; - @Property({ type: "text", nullable: true }) - rawHtml?: string; + @Property({ type: "text", nullable: false }) + rawHtml!: string; @Property({ type: "uuid", onCreate: () => uuidv7() }) - currentVersion: string; + currentVersion!: string; @Property({ type: "boolean", default: false }) selected: boolean & Opt; + @Property({ type: "varchar", length: 255, nullable: true }) + thumbnailUrl?: string; + //-------------------------------------------------- @OneToMany(() => User, (user) => user.template) diff --git a/src/modules/templates/services/templates.service.ts b/src/modules/templates/services/templates.service.ts index a08bc68..505b933 100644 --- a/src/modules/templates/services/templates.service.ts +++ b/src/modules/templates/services/templates.service.ts @@ -29,6 +29,7 @@ export class TemplatesService { name: createTemplateDto.name, structure: createTemplateDto.structure, rawHtml: createTemplateDto.rawHtml, + thumbnailUrl: createTemplateDto.thumbnailUrl, currentVersion: uuidv7(), business, });