import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { HttpModule } from '@nestjs/axios';
import { JwtModule } from '@nestjs/jwt';
import { Constants } from '../../common/constants';
import { PassportModule } from '@nestjs/passport';

import { BrandStrategy } from '../auth/strategies/brand.strategy';
import { BrandGuard } from '../auth/guards/brand.guard';

// entities
import { Users } from '../../entities/users.entity';
import { BrowseInfluencerController } from './browse-influencer.controller';
import { BrowseInfluencerService } from './browse-influencer.services';
import { BrowseInfluencerRepository } from './browse-influencer.repository';
import { InfluencerCategory } from 'src/entities/influencer-caregories.entity';
import { Categories } from 'src/entities/categories.entity';
import { SocialMedias } from 'src/entities/social-medias.entity';
import { Settings } from '../../entities/settings.entity';
import { BrandIndustries } from 'src/entities/brand-industries.entity';
import { SocialMediaPosts } from 'src/entities/social-media-posts.entity';
import { BrandFavorite } from 'src/entities/brand-favorit.entity';
import { CanpaignModule } from '../campaign/campaign.module';
import { Campaign } from 'src/entities/campaign.entity';
import { UsersModule } from 'src/common/services/users/users.module';
import { SearchLog } from 'src/entities/search-logs.entity';

@Module({
  imports: [
    JwtModule.register({
      secret: Constants.jwt_secret,
      signOptions: { expiresIn: '7d' },
    }),
    PassportModule,
    HttpModule,
    TypeOrmModule.forFeature([Users, InfluencerCategory, BrandIndustries, Categories, SocialMedias, Settings, SocialMediaPosts, BrandFavorite, Campaign, SearchLog]),
    CanpaignModule,
    UsersModule
  ],
  controllers: [BrowseInfluencerController],
  providers: [BrowseInfluencerService, BrowseInfluencerRepository, BrandStrategy, BrandGuard],
  exports: [BrowseInfluencerService]
})
export class BrowseInfluencerModule { }
