import { Injectable } from '@nestjs/common'; import { BaseIndexManager } from 'src/core/modules/domain/usecase/managers/base-index.manager'; import { ItemQueueEntity } from '../../entities/item-queue.entity'; import { SelectQueryBuilder } from 'typeorm'; import { Param, RelationParam, } from 'src/core/modules/domain/entities/base-filter.entity'; @Injectable() export class IndexItemQueueManager extends BaseIndexManager { async prepareData(): Promise { return; } async beforeProcess(): Promise { return; } async afterProcess(): Promise { return; } get relations(): RelationParam { return { joinRelations: [], selectRelations: ['items'], countRelations: [], }; } get selects(): string[] { return [ `${this.tableName}.id`, `${this.tableName}.status`, `${this.tableName}.name`, `${this.tableName}.item_type`, `${this.tableName}.created_at`, `${this.tableName}.creator_name`, `${this.tableName}.updated_at`, `${this.tableName}.editor_name`, `${this.tableName}.max_peak_level`, `${this.tableName}.call_preparation`, `${this.tableName}.use_notification`, `${this.tableName}.requiring_notification`, `items.id`, `items.created_at`, `items.status`, `items.item_type`, `items.name`, `items.hpp`, `items.limit_type`, `items.limit_value`, `items.base_price`, `items.share_profit`, `items.play_estimation`, ]; } get specificFilter(): Param[] { return [ { cols: `${this.tableName}.name`, data: this.filterParam.names, }, { cols: `${this.tableName}.item_type::text`, data: this.filterParam.item_types, }, ]; } setQueryFilter( queryBuilder: SelectQueryBuilder, ): SelectQueryBuilder { return queryBuilder; } }