-
-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathtable-schema.module.ts
More file actions
104 lines (103 loc) · 4.42 KB
/
table-schema.module.ts
File metadata and controls
104 lines (103 loc) · 4.42 KB
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import { MiddlewareConsumer, Module, NestModule, RequestMethod } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AuthMiddleware } from '../../authorization/auth.middleware.js';
import { GlobalDatabaseContext } from '../../common/application/global-database-context.js';
import { BaseType, UseCaseType } from '../../common/data-injection.tokens.js';
import { SchemaChangeBatchOwnershipGuard } from '../../guards/schema-change-batch-ownership.guard.js';
import { SchemaChangeOwnershipGuard } from '../../guards/schema-change-ownership.guard.js';
import { ConnectionEntity } from '../connection/connection.entity.js';
import { LogOutEntity } from '../log-out/log-out.entity.js';
import { UserEntity } from '../user/user.entity.js';
import { SchemaChangeChatEntity } from './schema-change-chat/schema-change-chat/schema-change-chat.entity.js';
import { SchemaChangeChatMessageEntity } from './schema-change-chat/schema-change-chat-message/schema-change-chat-message.entity.js';
import { TableSchemaController } from './table-schema.controller.js';
import { TableSchemaChangeEntity } from './table-schema-change.entity.js';
import { ApproveAndApplySchemaChangeUseCase } from './use-cases/approve-and-apply-schema-change.use-case.js';
import { ApproveBatchSchemaChangesUseCase } from './use-cases/approve-batch-schema-changes.use-case.js';
import { GenerateSchemaChangeUseCase } from './use-cases/generate-schema-change.use-case.js';
import { GetBatchSchemaChangesUseCase } from './use-cases/get-batch-schema-changes.use-case.js';
import { GetSchemaChangeUseCase } from './use-cases/get-schema-change.use-case.js';
import { ListSchemaChangesUseCase } from './use-cases/list-schema-changes.use-case.js';
import { RejectBatchSchemaChangesUseCase } from './use-cases/reject-batch-schema-changes.use-case.js';
import { RejectSchemaChangeUseCase } from './use-cases/reject-schema-change.use-case.js';
import { RollbackBatchSchemaChangesUseCase } from './use-cases/rollback-batch-schema-changes.use-case.js';
import { RollbackSchemaChangeUseCase } from './use-cases/rollback-schema-change.use-case.js';
@Module({
imports: [
TypeOrmModule.forFeature([
TableSchemaChangeEntity,
SchemaChangeChatEntity,
SchemaChangeChatMessageEntity,
ConnectionEntity,
UserEntity,
LogOutEntity,
]),
],
providers: [
{
provide: BaseType.GLOBAL_DB_CONTEXT,
useClass: GlobalDatabaseContext,
},
{
provide: UseCaseType.GENERATE_SCHEMA_CHANGE,
useClass: GenerateSchemaChangeUseCase,
},
{
provide: UseCaseType.APPROVE_SCHEMA_CHANGE,
useClass: ApproveAndApplySchemaChangeUseCase,
},
{
provide: UseCaseType.REJECT_SCHEMA_CHANGE,
useClass: RejectSchemaChangeUseCase,
},
{
provide: UseCaseType.ROLLBACK_SCHEMA_CHANGE,
useClass: RollbackSchemaChangeUseCase,
},
{
provide: UseCaseType.LIST_SCHEMA_CHANGES,
useClass: ListSchemaChangesUseCase,
},
{
provide: UseCaseType.GET_SCHEMA_CHANGE,
useClass: GetSchemaChangeUseCase,
},
{
provide: UseCaseType.APPROVE_BATCH_SCHEMA_CHANGE,
useClass: ApproveBatchSchemaChangesUseCase,
},
{
provide: UseCaseType.REJECT_BATCH_SCHEMA_CHANGE,
useClass: RejectBatchSchemaChangesUseCase,
},
{
provide: UseCaseType.ROLLBACK_BATCH_SCHEMA_CHANGE,
useClass: RollbackBatchSchemaChangesUseCase,
},
{
provide: UseCaseType.GET_BATCH_SCHEMA_CHANGE,
useClass: GetBatchSchemaChangesUseCase,
},
SchemaChangeOwnershipGuard,
SchemaChangeBatchOwnershipGuard,
],
controllers: [TableSchemaController],
})
export class TableSchemaModule implements NestModule {
public configure(consumer: MiddlewareConsumer): void {
consumer
.apply(AuthMiddleware)
.forRoutes(
{ path: '/table-schema/:connectionId/generate', method: RequestMethod.POST },
{ path: '/table-schema/:connectionId/changes', method: RequestMethod.GET },
{ path: '/table-schema/change/:changeId', method: RequestMethod.GET },
{ path: '/table-schema/change/:changeId/approve', method: RequestMethod.POST },
{ path: '/table-schema/change/:changeId/reject', method: RequestMethod.POST },
{ path: '/table-schema/change/:changeId/rollback', method: RequestMethod.POST },
{ path: '/table-schema/batch/:batchId', method: RequestMethod.GET },
{ path: '/table-schema/batch/:batchId/approve', method: RequestMethod.POST },
{ path: '/table-schema/batch/:batchId/reject', method: RequestMethod.POST },
{ path: '/table-schema/batch/:batchId/rollback', method: RequestMethod.POST },
);
}
}