pos-be/src/modules/queue/queue.module.ts

80 lines
2.7 KiB
TypeScript

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { CONNECTION_NAME } from 'src/core/strings/constants/base.constants';
import { CqrsModule } from '@nestjs/cqrs';
import { ItemModel } from 'src/modules/item-related/item/data/models/item.model';
import {
QueueItemModel,
QueueModel,
QueueOrderModel,
QueueTicketModel,
} from './data/models/queue.model';
import { QueueController } from './infrastructure/controllers/queue.controller';
import { QueueOrchestrator } from './domain/queue.orchestrator';
import { QueueTransactionHandler } from './infrastructure/handlers/transaction.handler';
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,
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';
import { QueueTransactionCancelHandler } from './infrastructure/handlers/cancel-transaction.handler';
import { ItemQueueModel } from '../item-related/item-queue/data/models/item-queue.model';
import { QueueTimeFormula } from './domain/usecases/formula/queue-time.formula';
@Module({
imports: [
ConfigModule.forRoot(),
TypeOrmModule.forFeature(
[
QueueOrderModel,
QueueTicketModel,
QueueItemModel,
QueueModel,
QueueBucketModel,
ItemModel,
ItemQueueModel,
TransactionModel,
],
CONNECTION_NAME.DEFAULT,
),
CqrsModule,
],
controllers: [QueueController, QueueAdminController],
providers: [
QueueOrchestrator,
QueueAdminOrchestrator,
QueueTransactionHandler,
QueueTransactionCancelHandler,
TransactionDataService,
TicketDataService,
QueueDataService,
QueueService,
QueueBucketReadService,
QueueOrderService,
IndexQueueManager,
CallQueueManager,
RegisterQueueManager,
SplitQueueManager,
QueueTimeFormula,
],
})
export class QueueModule {}