import { entities } from '@backend/domain'
import * as Repositories from '@backend/repository'
import { Global, Module } from '@nestjs/common'
import { TypeOrmModule } from '@nestjs/typeorm'
import { values } from 'es-toolkit/compat'
import { EmailModule } from './email'
import { EventService } from './events'
import { FirebaseModule } from './firebase'
import { AppConfigModule } from './appconfig'

const repositories = values(Repositories)

@Global()
@Module({
	imports: [TypeOrmModule.forFeature(entities), EmailModule, FirebaseModule, AppConfigModule],
	providers: [...repositories, EventService],
	exports: [
		TypeOrmModule.forFeature(entities),
		...repositories,
		EmailModule,
		FirebaseModule,
		EventService,
		AppConfigModule,
	],
})
export class GlobalModule {}
