import { Injectable } from '@nestjs/common';
import { PromptAI, ServiceType } from 'src/common/enums';
import { NEED_FULL_DESCRIPTION } from './rules/prompt.rules';
import { PromptProviderFactory } from './providers/prompt-provider.factory';

@Injectable()
export class PromptService {
  constructor(
    private readonly promptFactory: PromptProviderFactory,
  ) {}

  async preparePrompt(
    serviceType: ServiceType,
    promptAI: PromptAI,
    input: string,
  ): Promise<string> {
    const rule = NEED_FULL_DESCRIPTION[serviceType];
    if (!rule) return input;

    const provider = this.promptFactory.get(promptAI);

    if (rule === 'partial') {
      return provider.expandPrompt(input, { mode: 'partial' });
    }

    return provider.expandPrompt(input);
  }
}
