import { ConfigService } from '<%= props.frameworkImport %>';
import { Module, forwardRef } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
<% if ((props.controller === 'GraphQL') || (props.controller === 'Both')) { -%>
import { PubSub } from 'graphql-subscriptions';
<% } -%>

import { UserModule } from '../user/user.module';
import { <%= props.namePascal %>, <%= props.namePascal %>Schema } from './<%= props.nameKebab %>.model';
<% if ((props.controller === 'GraphQL') || (props.controller === 'Both')) { -%>
import { <%= props.namePascal %>Resolver } from './<%= props.nameKebab %>.resolver';
<% } -%>
import { <%= props.namePascal %>Service } from './<%= props.nameKebab %>.service';
<% if ((props.controller === 'Rest') || (props.controller === 'Both')) { -%>
import { <%= props.namePascal %>Controller } from './<%= props.nameKebab %>.controller';
<% } -%>

/**
* <%= props.namePascal %> module
*/
@Module({
<% if ((props.controller === 'Rest') || (props.controller === 'Both')) { -%>
  controllers: [<%= props.namePascal %>Controller],
<% } -%>
  exports: [ MongooseModule, <% if ((props.controller === 'GraphQL') || (props.controller === 'Both')) { -%> <%= props.namePascal %>Resolver, <% } -%> <%= props.namePascal %>Service],
  imports: [ MongooseModule.forFeature([{ name: <%= props.namePascal %>.name, schema: <%= props.namePascal %>Schema }]), forwardRef(() => UserModule) ],
  providers: [
  ConfigService,
<% if ((props.controller === 'GraphQL') || (props.controller === 'Both')) { -%>
  <%= props.namePascal %>Resolver,
<% } -%>
  <%= props.namePascal %>Service,
<% if ((props.controller === 'GraphQL') || (props.controller === 'Both')) { -%>
    {
      provide: 'PUB_SUB',
      useValue: new PubSub(),
    },
<% } -%>
  ],
})
export class <%= props.namePascal %>Module {}
