diff --git a/src/database/migrations/1731570311609-add-information-to-item-queue.ts b/src/database/migrations/1731570311609-add-information-to-item-queue.ts new file mode 100644 index 0000000..ccc0993 --- /dev/null +++ b/src/database/migrations/1731570311609-add-information-to-item-queue.ts @@ -0,0 +1,19 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddInformationToItemQueue1731570311609 + implements MigrationInterface +{ + name = 'AddInformationToItemQueue1731570311609'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "item_queues" ADD "information" character varying`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "item_queues" DROP COLUMN "information"`, + ); + } +} diff --git a/src/modules/item-related/item-queue/data/models/item-queue.model.ts b/src/modules/item-related/item-queue/data/models/item-queue.model.ts index 61e7d39..58733b8 100644 --- a/src/modules/item-related/item-queue/data/models/item-queue.model.ts +++ b/src/modules/item-related/item-queue/data/models/item-queue.model.ts @@ -13,6 +13,9 @@ export class ItemQueueModel @Column('varchar', { name: 'name' }) name: string; + @Column('varchar', { name: 'information', nullable: true }) + information: string; + @Column('enum', { name: 'item_type', enum: ItemType, diff --git a/src/modules/item-related/item-queue/domain/entities/item-queue.entity.ts b/src/modules/item-related/item-queue/domain/entities/item-queue.entity.ts index e3b7708..2d706a7 100644 --- a/src/modules/item-related/item-queue/domain/entities/item-queue.entity.ts +++ b/src/modules/item-related/item-queue/domain/entities/item-queue.entity.ts @@ -5,5 +5,6 @@ import { ItemEntity } from 'src/modules/item-related/item/domain/entities/item.e export interface ItemQueueEntity extends BaseStatusEntity { name: string; item_type: ItemType; + information?: string; items: ItemEntity[]; } diff --git a/src/modules/item-related/item-queue/domain/usecases/managers/detail-item-queue.manager.ts b/src/modules/item-related/item-queue/domain/usecases/managers/detail-item-queue.manager.ts index 007c5b9..6b815e1 100644 --- a/src/modules/item-related/item-queue/domain/usecases/managers/detail-item-queue.manager.ts +++ b/src/modules/item-related/item-queue/domain/usecases/managers/detail-item-queue.manager.ts @@ -30,6 +30,7 @@ export class DetailItemQueueManager extends BaseDetailManager { `${this.tableName}.id`, `${this.tableName}.status`, `${this.tableName}.name`, + `${this.tableName}.information`, `${this.tableName}.item_type`, `${this.tableName}.created_at`, `${this.tableName}.creator_name`, @@ -47,6 +48,7 @@ export class DetailItemQueueManager extends BaseDetailManager { `items.base_price`, `items.share_profit`, `items.play_estimation`, + `items.video_url`, ]; } @@ -55,4 +57,12 @@ export class DetailItemQueueManager extends BaseDetailManager { id: this.dataId, }; } + + getResult(): ItemQueueEntity { + const videos = this.result.items.map((item) => { + return item.video_url ?? []; + }); + this.result['videos'] = videos.flat(); + return this.result; + } } diff --git a/src/modules/item-related/item-queue/infrastructure/dto/item-queue.dto.ts b/src/modules/item-related/item-queue/infrastructure/dto/item-queue.dto.ts index cb1406c..fbbceb3 100644 --- a/src/modules/item-related/item-queue/infrastructure/dto/item-queue.dto.ts +++ b/src/modules/item-related/item-queue/infrastructure/dto/item-queue.dto.ts @@ -14,6 +14,14 @@ export class ItemQueueDto extends BaseStatusDto implements ItemQueueEntity { @IsString() name: string; + @ApiProperty({ + name: 'information', + required: false, + example: 'Running text untuk display antrian', + }) + @IsString() + information: string; + @ApiProperty({ type: 'string', required: true, diff --git a/src/modules/item-related/item-queue/infrastructure/item-queue-read.controller.ts b/src/modules/item-related/item-queue/infrastructure/item-queue-read.controller.ts index 8932974..b3a78b6 100644 --- a/src/modules/item-related/item-queue/infrastructure/item-queue-read.controller.ts +++ b/src/modules/item-related/item-queue/infrastructure/item-queue-read.controller.ts @@ -40,4 +40,10 @@ export class ItemQueueReadController { async detail(@Param('id') id: string): Promise { return await this.orchestrator.detail(id); } + + @Get('display/:id') + @Public(true) + async detailPublic(@Param('id') id: string): Promise { + return await this.orchestrator.detail(id); + } }