import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Queue } from './entities/queue.entity';
import { CreateQueueDto } from './dto/create-queue.dto';
import { UpdateQueueDto } from './dto/update-queue.dto';

@Injectable()
export class QueuesService {
  constructor(
    @InjectRepository(Queue)
    private readonly queueRepository: Repository<Queue>,
  ) {}

  async create(createQueueDto: CreateQueueDto) {
    const queue = this.queueRepository.create(createQueueDto);
    return await this.queueRepository.save(queue);
  }

  async findAll() {
    return await this.queueRepository.find({
      relations: ['machine', 'order', 'employees'],
    });
  }

  async findOne(id: number) {
    return await this.queueRepository.findOne({
      where: { QueueID: id },
      relations: ['machine', 'order', 'employees'],
    });
  }

  async update(id: number, updateQueueDto: UpdateQueueDto) {
    await this.queueRepository.update(id, updateQueueDto);
    return await this.findOne(id);
  }

  async remove(id: number) {
    return await this.queueRepository.delete(id);
  }
}