-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.module.ts
87 lines (84 loc) · 2.61 KB
/
app.module.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import { MiddlewareConsumer, Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { ScheduleModule } from '@nestjs/schedule';
import { TypeOrmModule } from '@nestjs/typeorm';
import { join } from 'path';
import { ServeStaticModule } from '@nestjs/serve-static';
import { HealthModule } from './health/health.module';
import { ProvisionModule } from './provision/provision.module';
import { TokenModule } from './token/token.module';
import { AuditModule } from './audit/audit.module';
import { AuthModule } from './auth/auth.module';
import { AccessLogsMiddleware } from './access-logs.middleware';
import { KinesisModule } from './kinesis/kinesis.module';
import { IntentionModule } from './intention/intention.module';
import { PersistenceModule } from './persistence/persistence.module';
import { GraphModule } from './graph/graph.module';
import { CollectionModule } from './collection/collection.module';
import { getMongoDbConnectionUrl } from './persistence/mongo/mongo.util';
import { PreferenceModule } from './preference/preference.module';
import { RedisModule } from './redis/redis.module';
/**
* Convenience function for converting an environment variable to an object
* @param key Object key
* @param envName Name of environment variable
* @returns Object
*/
function envToObj(key: string, envName: string) {
return process.env[envName]
? {
[key]: process.env[envName],
}
: {};
}
@Module({
imports: [
ConfigModule.forRoot({
ignoreEnvFile: true,
}),
ScheduleModule.forRoot(),
TypeOrmModule.forRoot({
...{
type: 'mongodb',
url: getMongoDbConnectionUrl(),
useNewUrlParser: true,
synchronize: true,
autoLoadEntities: true,
useUnifiedTopology: true,
},
...(process.env.DB_SSL
? {
ssl: true,
sslValidate: true,
}
: {}),
...envToObj('sslCA', 'DB_SSL_CA'),
...envToObj('sslCert', 'DB_SSL_CERT'),
...envToObj('sslKey', 'DB_SSL_KEY'),
...envToObj('sslPass', 'DB_SSL_PASS'),
...envToObj('sslCRL', 'DB_SSL_CRL'),
}),
ServeStaticModule.forRoot({
rootPath: join(__dirname, '..', process.env.NESTJS_UI_ROOT_PATH),
}),
HealthModule,
IntentionModule,
ProvisionModule,
TokenModule,
AuditModule,
AuthModule,
KinesisModule,
PersistenceModule,
GraphModule,
CollectionModule,
PreferenceModule,
RedisModule,
],
controllers: [],
providers: [],
})
export class AppModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(AccessLogsMiddleware).forRoutes('*');
}
}