diff --git a/src/database/migrations/1789046600000-AddBusinessSubtitle.ts b/src/database/migrations/1789046600000-AddBusinessSubtitle.ts new file mode 100644 index 0000000..1527593 --- /dev/null +++ b/src/database/migrations/1789046600000-AddBusinessSubtitle.ts @@ -0,0 +1,27 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddBusinessSubtitle1789046600000 implements MigrationInterface { + name = 'AddBusinessSubtitle1789046600000'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + ALTER TABLE "businesses" + ADD COLUMN IF NOT EXISTS "subtitle" character varying(150) + `); + await queryRunner.query(` + ALTER TABLE "business_registration_requests" + ADD COLUMN IF NOT EXISTS "subtitle" character varying(150) + `); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(` + ALTER TABLE "business_registration_requests" + DROP COLUMN IF EXISTS "subtitle" + `); + await queryRunner.query(` + ALTER TABLE "businesses" + DROP COLUMN IF EXISTS "subtitle" + `); + } +} diff --git a/src/entities/business-registration-request.entity.ts b/src/entities/business-registration-request.entity.ts index b134dfe..7c20118 100644 --- a/src/entities/business-registration-request.entity.ts +++ b/src/entities/business-registration-request.entity.ts @@ -49,6 +49,9 @@ export class BusinessRegistrationRequestEntity { @Column('uuid') categoryId!: string; + @Column({ type: 'varchar', nullable: true, length: 150 }) + subtitle!: string | null; + @Column({ type: 'varchar', nullable: true, length: 500 }) description!: string | null; diff --git a/src/entities/business.entity.ts b/src/entities/business.entity.ts index a3cd8cd..0269ed3 100644 --- a/src/entities/business.entity.ts +++ b/src/entities/business.entity.ts @@ -28,6 +28,9 @@ export class BusinessEntity { @Column({ unique: true, length: 120 }) slug!: string; + @Column({ type: 'varchar', nullable: true, length: 150 }) + subtitle!: string | null; + @Column({ type: 'varchar', nullable: true, length: 500 }) description!: string | null; diff --git a/src/modules/business-registration-requests/business-registration-requests.service.ts b/src/modules/business-registration-requests/business-registration-requests.service.ts index e532088..0c79de0 100644 --- a/src/modules/business-registration-requests/business-registration-requests.service.ts +++ b/src/modules/business-registration-requests/business-registration-requests.service.ts @@ -99,6 +99,7 @@ export class BusinessRegistrationRequestsService { title: dto.title.trim(), slug, categoryId: dto.categoryId, + subtitle: dto.subtitle?.trim() ?? null, description: dto.description?.trim() ?? null, contactPhone: dto.contactPhone?.trim() ?? null, address: dto.address?.trim() ?? null, @@ -167,6 +168,7 @@ export class BusinessRegistrationRequestsService { title: request.title, slug: request.slug, categoryId: request.categoryId, + subtitle: request.subtitle, description: request.description, contactPhone: request.contactPhone, address: request.address, diff --git a/src/modules/business-registration-requests/dto/create-business-registration.dto.ts b/src/modules/business-registration-requests/dto/create-business-registration.dto.ts index 4bc7fca..7f2d1ce 100644 --- a/src/modules/business-registration-requests/dto/create-business-registration.dto.ts +++ b/src/modules/business-registration-requests/dto/create-business-registration.dto.ts @@ -28,6 +28,12 @@ export class CreateBusinessRegistrationDto { }) slug?: string; + @ApiPropertyOptional({ example: 'تمیزی که می‌درخشد' }) + @IsOptional() + @IsString() + @MaxLength(150) + subtitle?: string; + @ApiPropertyOptional() @IsOptional() @IsString() diff --git a/src/modules/businesses/businesses.service.ts b/src/modules/businesses/businesses.service.ts index 88ba82d..70d656d 100644 --- a/src/modules/businesses/businesses.service.ts +++ b/src/modules/businesses/businesses.service.ts @@ -110,6 +110,7 @@ export class BusinessesService { title: payload.title, slug, categoryId: payload.categoryId, + subtitle: payload.subtitle ?? null, description: payload.description ?? null, contactPhone: payload.contactPhone ?? null, address: payload.address ?? null, diff --git a/src/modules/businesses/dto/create-business.dto.ts b/src/modules/businesses/dto/create-business.dto.ts index ff4f8c0..32b45f0 100644 --- a/src/modules/businesses/dto/create-business.dto.ts +++ b/src/modules/businesses/dto/create-business.dto.ts @@ -29,6 +29,12 @@ export class CreateBusinessDto { @IsUUID() categoryId!: string; + @ApiPropertyOptional({ example: 'تمیزی که می‌درخشد' }) + @IsOptional() + @IsString() + @MaxLength(150) + subtitle?: string; + @ApiPropertyOptional({ example: 'Premium carwash service' }) @IsOptional() @IsString() diff --git a/src/modules/businesses/dto/update-business.dto.ts b/src/modules/businesses/dto/update-business.dto.ts index 6db53fd..fe032f6 100644 --- a/src/modules/businesses/dto/update-business.dto.ts +++ b/src/modules/businesses/dto/update-business.dto.ts @@ -34,6 +34,12 @@ export class UpdateBusinessDto { @IsUUID() categoryId?: string; + @ApiPropertyOptional({ example: 'تمیزی که می‌درخشد', nullable: true }) + @IsOptional() + @IsString() + @MaxLength(150) + subtitle?: string | null; + @ApiPropertyOptional({ example: 'Premium carwash service', nullable: true }) @IsOptional() @IsString()