From 5f6214eeb6d15b473b6038d776964e065ca74c2a Mon Sep 17 00:00:00 2001 From: shancheas Date: Tue, 3 Dec 2024 11:21:44 +0700 Subject: [PATCH] feat: add max peak level and call prepare call time to item queue --- ...0134-item-queue-add-time-and-peak-level.ts | 25 +++++++++++++++++++ .../data/models/item-queue.model.ts | 6 +++++ .../domain/entities/item-queue.entity.ts | 2 ++ .../managers/detail-item-queue.manager.ts | 2 ++ .../managers/index-item-queue.manager.ts | 2 ++ .../infrastructure/dto/item-queue.dto.ts | 20 ++++++++++++++- 6 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 src/database/migrations/1733199330134-item-queue-add-time-and-peak-level.ts diff --git a/src/database/migrations/1733199330134-item-queue-add-time-and-peak-level.ts b/src/database/migrations/1733199330134-item-queue-add-time-and-peak-level.ts new file mode 100644 index 0000000..6a21374 --- /dev/null +++ b/src/database/migrations/1733199330134-item-queue-add-time-and-peak-level.ts @@ -0,0 +1,25 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class ItemQueueAddTimeAndPeakLevel1733199330134 + implements MigrationInterface +{ + name = 'ItemQueueAddTimeAndPeakLevel1733199330134'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "item_queues" ADD "max_peak_level" integer NOT NULL DEFAULT '100'`, + ); + await queryRunner.query( + `ALTER TABLE "item_queues" ADD "call_preparation" integer NOT NULL DEFAULT '5'`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "item_queues" DROP COLUMN "call_preparation"`, + ); + await queryRunner.query( + `ALTER TABLE "item_queues" DROP COLUMN "max_peak_level"`, + ); + } +} 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 58733b8..7f0be80 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 @@ -10,6 +10,12 @@ export class ItemQueueModel extends BaseStatusModel implements ItemQueueEntity { + @Column('int', { default: 100 }) + max_peak_level: number; + + @Column('int', { default: 5 }) + call_preparation: number; + @Column('varchar', { name: 'name' }) name: string; 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 2d706a7..5b89cfe 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 @@ -6,5 +6,7 @@ export interface ItemQueueEntity extends BaseStatusEntity { name: string; item_type: ItemType; information?: string; + max_peak_level: number; + call_preparation: number; 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 6b815e1..67d7861 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 @@ -36,6 +36,8 @@ export class DetailItemQueueManager extends BaseDetailManager { `${this.tableName}.creator_name`, `${this.tableName}.updated_at`, `${this.tableName}.editor_name`, + `${this.tableName}.max_peak_level`, + `${this.tableName}.call_preparation`, `items.id`, `items.created_at`, diff --git a/src/modules/item-related/item-queue/domain/usecases/managers/index-item-queue.manager.ts b/src/modules/item-related/item-queue/domain/usecases/managers/index-item-queue.manager.ts index b1256d3..93c6eb8 100644 --- a/src/modules/item-related/item-queue/domain/usecases/managers/index-item-queue.manager.ts +++ b/src/modules/item-related/item-queue/domain/usecases/managers/index-item-queue.manager.ts @@ -39,6 +39,8 @@ export class IndexItemQueueManager extends BaseIndexManager { `${this.tableName}.creator_name`, `${this.tableName}.updated_at`, `${this.tableName}.editor_name`, + `${this.tableName}.max_peak_level`, + `${this.tableName}.call_preparation`, `items.id`, `items.created_at`, 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 fbbceb3..43cb677 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 @@ -1,12 +1,30 @@ import { BaseStatusDto } from 'src/core/modules/infrastructure/dto/base-status.dto'; import { ItemQueueEntity } from '../../domain/entities/item-queue.entity'; -import { IsArray, IsString } from 'class-validator'; +import { IsArray, IsNumber, IsString } from 'class-validator'; import { ItemType } from '../../constants'; import { ApiProperty } from '@nestjs/swagger'; import { ItemEntity } from 'src/modules/item-related/item/domain/entities/item.entity'; import { Exclude, Transform } from 'class-transformer'; export class ItemQueueDto extends BaseStatusDto implements ItemQueueEntity { + @ApiProperty({ + name: 'max_peak_level', + required: false, + example: 'Menentukan level peak maksimal penuhnya wahana', + default: 100, + }) + @IsNumber() + max_peak_level: number; + + @ApiProperty({ + name: 'call_preparation', + required: false, + example: 'Waktu persiapan untuk memanggil antrian dalam menit', + default: 5, + }) + @IsNumber() + call_preparation: number; + @Exclude() items: ItemEntity[];