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[];