import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ConfigModule, ConfigService } from 'nestjs-config';
import { TypeOrmModule } from '@nestjs/typeorm';
import { UsersModule } from './modules/users/users.module';
import * as path from 'path';
import { ProjectModule } from './modules/project/project.module';
import { AttachmentModule } from './modules/attachment/attachment.module';
import { ServeStaticModule } from '@nestjs/serve-static';
import { join } from 'path';

import { MulterModule } from '@nestjs/platform-express';
import { MaterialModule } from './modules/material/material.module';
import { TeamModule } from './modules/team/team.module';
import { TaskModule } from './modules/task/task.module';




@Module({
  imports: [
    ConfigModule.load(path.resolve(__dirname, 'config', '**/!(*.d).{ts,js}')),
    TypeOrmModule.forRootAsync({
      useFactory: (config: ConfigService) => config.get('database'),
      inject: [ConfigService],
    }),
    UsersModule,AttachmentModule,ProjectModule,MaterialModule,TeamModule,TaskModule,MulterModule.register({
      dest: './files'
    }),ServeStaticModule.forRoot({
      rootPath: join(__dirname, '..', 'files')
    }), 
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {

}
