feat: add booking description field to item model and database

pull/157/head
shancheas 2025-06-10 14:29:46 +07:00
parent ffc75ba174
commit 6a7ab72e12
6 changed files with 36 additions and 0 deletions

View File

@ -0,0 +1,19 @@
import { MigrationInterface, QueryRunner } from 'typeorm';
export class AddBookingDescriptionToItem1749537252986
implements MigrationInterface
{
name = 'AddBookingDescriptionToItem1749537252986';
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "items" ADD "booking_description" text`,
);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(
`ALTER TABLE "items" DROP COLUMN "booking_description"`,
);
}
}

View File

@ -27,6 +27,9 @@ export class ItemModel
@Column('varchar', { name: 'name', unique: true }) @Column('varchar', { name: 'name', unique: true })
name: string; name: string;
@Column('text', { name: 'booking_description', nullable: true })
booking_description: string;
@Column('varchar', { name: 'image_url', nullable: true }) @Column('varchar', { name: 'image_url', nullable: true })
image_url: string; image_url: string;

View File

@ -18,4 +18,5 @@ export interface ItemEntity extends BaseStatusEntity {
use_queue: boolean; use_queue: boolean;
show_to_booking: boolean; show_to_booking: boolean;
breakdown_bundling?: boolean; breakdown_bundling?: boolean;
booking_description?: string;
} }

View File

@ -56,6 +56,7 @@ export class DetailItemManager extends BaseDetailManager<ItemEntity> {
`${this.tableName}.show_to_booking`, `${this.tableName}.show_to_booking`,
`${this.tableName}.breakdown_bundling`, `${this.tableName}.breakdown_bundling`,
`${this.tableName}.play_estimation`, `${this.tableName}.play_estimation`,
`${this.tableName}.booking_description`,
`item_category.id`, `item_category.id`,
`item_category.name`, `item_category.name`,

View File

@ -54,6 +54,7 @@ export class IndexItemManager extends BaseIndexManager<ItemEntity> {
`${this.tableName}.breakdown_bundling`, `${this.tableName}.breakdown_bundling`,
`${this.tableName}.play_estimation`, `${this.tableName}.play_estimation`,
`${this.tableName}.show_to_booking`, `${this.tableName}.show_to_booking`,
`${this.tableName}.booking_description`,
`item_category.id`, `item_category.id`,
`item_category.name`, `item_category.name`,

View File

@ -138,6 +138,17 @@ export class ItemDto extends BaseStatusDto implements ItemEntity {
@ValidateIf((body) => body.show_to_booking) @ValidateIf((body) => body.show_to_booking)
show_to_booking: boolean; show_to_booking: boolean;
@ApiProperty({
type: String,
required: false,
example: '...',
})
@ValidateIf((body) => body.show_to_booking)
@IsString({
message: 'Booking description is required when show to booking is enabled.',
})
booking_description: string;
@ApiProperty({ @ApiProperty({
name: 'bundling_items', name: 'bundling_items',
type: [Object], type: [Object],