import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Token } from '../entities/token.entity';
import { TokenService } from '../services/token.service';
import { QuickBooksService } from '../services/quickbooks.service';
import { createQuickbooksAPI } from '../apis/quickbooks.api';
import { InvoiceService } from '../services/invoice.service';

@Module({
  imports: [
    TypeOrmModule.forFeature([Token]),
  ],
  providers: [
    TokenService,
    QuickBooksService,
    InvoiceService,
    {
      provide: 'QUICKBOOKS_API',
      useFactory: (tokenService: TokenService) => {
        return createQuickbooksAPI(tokenService);
      },
      inject: [TokenService],
    },
  ],
  exports: [
    TokenService,
    QuickBooksService,
    InvoiceService,
    'QUICKBOOKS_API',
  ],
})
export class QuickBooksModule {}
