diff --git a/src/app.module.ts b/src/app.module.ts index e8696ac..3015ab4 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -92,6 +92,7 @@ import { } from './modules/queue/data/models/queue.model'; import { ItemQueueModule } from './modules/item-related/item-queue/item-queue.module'; import { ItemQueueModel } from './modules/item-related/item-queue/data/models/item-queue.model'; +import { QueueBucketModel } from './modules/queue/data/models/queue-bucket.model'; @Module({ imports: [ @@ -151,6 +152,7 @@ import { ItemQueueModel } from './modules/item-related/item-queue/data/models/it QueueTicketModel, QueueItemModel, QueueModel, + QueueBucketModel, ], synchronize: false, }), diff --git a/src/core/strings/constants/table.constants.ts b/src/core/strings/constants/table.constants.ts index 1e5129e..27eb096 100644 --- a/src/core/strings/constants/table.constants.ts +++ b/src/core/strings/constants/table.constants.ts @@ -41,4 +41,5 @@ export enum TABLE_NAME { QUEUE_ORDER = 'queue_orders', QUEUE_TICKET = 'queue_tickets', QUEUE_ITEM = 'queue_items', + QUEUE_BUCKET = 'queue_bucket', } diff --git a/src/modules/queue/data/models/queue-bucket.model.ts b/src/modules/queue/data/models/queue-bucket.model.ts new file mode 100644 index 0000000..51f2e3a --- /dev/null +++ b/src/modules/queue/data/models/queue-bucket.model.ts @@ -0,0 +1,21 @@ +import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; +import { QueueBucket } from '../../domain/entities/queue-bucket.entity'; +import { TABLE_NAME } from 'src/core/strings/constants/table.constants'; + +@Entity(TABLE_NAME.QUEUE_BUCKET) +export class QueueBucketModel implements QueueBucket { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column('varchar') + queue_item_id: string; + + @Column({ type: 'bigint', nullable: false }) + date: number; + + @Column('int') + regular: number; + + @Column('int') + vip: number; +} diff --git a/src/modules/queue/data/services/queue-bucket.ts b/src/modules/queue/data/services/queue-bucket.ts new file mode 100644 index 0000000..9186137 --- /dev/null +++ b/src/modules/queue/data/services/queue-bucket.ts @@ -0,0 +1,25 @@ +import { Injectable } from '@nestjs/common'; + +import { InjectRepository } from '@nestjs/typeorm'; +import { CONNECTION_NAME } from 'src/core/strings/constants/base.constants'; +import { Repository } from 'typeorm'; +import { BaseReadService } from 'src/core/modules/data/service/base-read.service'; +import { QueueBucketModel } from '../models/queue-bucket.model'; + +@Injectable() +export class QueueBucketReadService extends BaseReadService { + constructor( + @InjectRepository(QueueBucketModel, CONNECTION_NAME.DEFAULT) + private repo: Repository, + ) { + super(repo); + } + + getQueue(item_id: string): Promise { + return this.repo.findOne({ + where: { + queue_item_id: item_id, + }, + }); + } +} diff --git a/src/modules/queue/queue.module.ts b/src/modules/queue/queue.module.ts index ff62289..e9eb803 100644 --- a/src/modules/queue/queue.module.ts +++ b/src/modules/queue/queue.module.ts @@ -18,12 +18,19 @@ import { QueueTransactionHandler } from './infrastructure/handlers/transaction.h import { TransactionDataService } from '../transaction/transaction/data/services/transaction-data.service'; import { TransactionModel } from '../transaction/transaction/data/models/transaction.model'; import { TicketDataService } from './data/services/ticket.service'; -import { QueueDataService, QueueService } from './data/services/queue.service'; +import { + QueueDataService, + QueueOrderService, + QueueService, +} from './data/services/queue.service'; import { QueueAdminController } from './infrastructure/controllers/queue-admin.controller'; import { QueueAdminOrchestrator } from './domain/queue-admin.orchestrator'; import { IndexQueueManager } from './domain/usecases/index-queue.manager'; import { CallQueueManager } from './domain/usecases/call-queue.manager'; import { RegisterQueueManager } from './domain/usecases/register-queue.manager'; +import { QueueBucketModel } from './data/models/queue-bucket.model'; +import { QueueBucketReadService } from './data/services/queue-bucket'; +import { SplitQueueManager } from './domain/usecases/split-queue.manager'; @Module({ imports: [ @@ -34,6 +41,7 @@ import { RegisterQueueManager } from './domain/usecases/register-queue.manager'; QueueTicketModel, QueueItemModel, QueueModel, + QueueBucketModel, ItemModel, TransactionModel, ], @@ -52,10 +60,13 @@ import { RegisterQueueManager } from './domain/usecases/register-queue.manager'; TicketDataService, QueueDataService, QueueService, + QueueBucketReadService, + QueueOrderService, IndexQueueManager, CallQueueManager, RegisterQueueManager, + SplitQueueManager, ], }) export class QueueModule {}