Skip to content

Commit

Permalink
refactor: refactor mediatr-js in building-blocks
Browse files Browse the repository at this point in the history
  • Loading branch information
meysamhadeli committed Jan 6, 2024
1 parent 5aaa8f2 commit 9dd1f6c
Show file tree
Hide file tree
Showing 11 changed files with 46 additions and 40 deletions.
2 changes: 1 addition & 1 deletion src/booking/src/extensions/mediatr.extensions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ import {
import { mediatrJs } from 'building-blocks/mediatr-js/mediatr-js';

export const registerMediatrHandlers = () => {
mediatrJs.registerRequestHandler(CreateBooking, container.resolve(CreateBookingHandler));
mediatrJs.registerRequestHandler(new CreateBooking(), container.resolve(CreateBookingHandler));
};
3 changes: 2 additions & 1 deletion src/building-blocks/.eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
},
"rules": {
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-var-requires": "off"
"@typescript-eslint/no-var-requires": "off",
"@typescript-eslint/no-empty-interface": "off"
}
}
2 changes: 1 addition & 1 deletion src/building-blocks/mediatr-js/mediatr-js.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export interface IRequest<TResponse> {
}
declare class MediatrJs {
private requestHandlersRegistrations;
registerRequestHandler<TRequest, TResponse>(request: new () => TRequest, handler: any): void;
registerRequestHandler<TRequest, TResponse>(request: TRequest, handler: any): void;
send<TResponse>(request: IRequest<TResponse>): Promise<TResponse>;
private GetTypeName;
}
Expand Down
3 changes: 1 addition & 2 deletions src/building-blocks/mediatr-js/mediatr-js.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/building-blocks/mediatr-js/mediatr-js.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 2 additions & 4 deletions src/building-blocks/mediatr-js/mediatr-js.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
export interface IRequestHandler<TRequest, TResponse> {
handle(request: TRequest): Promise<TResponse>;
}

// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface IRequest<TResponse> {}

class MediatrJs {
private requestHandlersRegistrations: Record<string, any> = {};

registerRequestHandler<TRequest, TResponse>(request: new () => TRequest, handler: any) {
registerRequestHandler<TRequest, TResponse>(request: TRequest, handler: any) {
const requestTypeName = this.GetTypeName(request);

this.requestHandlersRegistrations[requestTypeName] = handler;
Expand All @@ -28,7 +26,7 @@ class MediatrJs {
}

private GetTypeName(request: any): string {
return request?.name ?? request.constructor.name;
return request.constructor.name;
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/building-blocks/tsconfig.tsbuildinfo

Large diffs are not rendered by default.

17 changes: 10 additions & 7 deletions src/flight/src/extensions/mediatr.extensions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,14 @@ import {
import { mediatrJs } from 'building-blocks/mediatr-js/mediatr-js';

export const registerMediatrHandlers = () => {
mediatrJs.registerRequestHandler(CreateAircraft, container.resolve(CreateAircraftHandler));
mediatrJs.registerRequestHandler(CreateAirport, container.resolve(CreateAirportHandler));
mediatrJs.registerRequestHandler(CreateFlight, container.resolve(CreateFlightHandler));
mediatrJs.registerRequestHandler(GetFlightById, container.resolve(GetFlightByIdHandler));
mediatrJs.registerRequestHandler(CreateSeat, container.resolve(CreateSeatHandler));
mediatrJs.registerRequestHandler(ReserveSeat, container.resolve(ReserveSeatHandler));
mediatrJs.registerRequestHandler(GetAvailableSeats, container.resolve(GetAvailableSeatsHandler));
mediatrJs.registerRequestHandler(new CreateAircraft(), container.resolve(CreateAircraftHandler));
mediatrJs.registerRequestHandler(new CreateAirport(), container.resolve(CreateAirportHandler));
mediatrJs.registerRequestHandler(new CreateFlight(), container.resolve(CreateFlightHandler));
mediatrJs.registerRequestHandler(new GetFlightById(), container.resolve(GetFlightByIdHandler));
mediatrJs.registerRequestHandler(new CreateSeat(), container.resolve(CreateSeatHandler));
mediatrJs.registerRequestHandler(new ReserveSeat(), container.resolve(ReserveSeatHandler));
mediatrJs.registerRequestHandler(
new GetAvailableSeats(),
container.resolve(GetAvailableSeatsHandler)
);
};
22 changes: 11 additions & 11 deletions src/identity/src/extensions/mediatr.extensions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,17 @@ import {
ValidateTokenHandler
} from '../auth/features/v1/validate-token/validate-token';
import { RefreshToken, RefreshTokenHandler } from '../auth/features/v1/refresh-token/refresh-token';
import {mediatrJs} from "building-blocks/mediatr-js/mediatr-js";
import { mediatrJs } from 'building-blocks/mediatr-js/mediatr-js';

export const registerMediatrHandlers = () => {
mediatrJs.registerRequestHandler(CreateUser, container.resolve(CreateUserHandler));
mediatrJs.registerRequestHandler(DeleteUserById, container.resolve(DeleteUserByIdHandler));
mediatrJs.registerRequestHandler(GetUserById, container.resolve(GetUserByIdHandler));
mediatrJs.registerRequestHandler(GetUsers, container.resolve(GetUsersHandler));
mediatrJs.registerRequestHandler(UpdateUser, container.resolve(UpdateUserHandler));
mediatrJs.registerRequestHandler(GenerateToken, container.resolve(GenerateTokenHandler));
mediatrJs.registerRequestHandler(ValidateToken, container.resolve(ValidateTokenHandler));
mediatrJs.registerRequestHandler(Login, container.resolve(LoginHandler));
mediatrJs.registerRequestHandler(Logout, container.resolve(LogoutHandler));
mediatrJs.registerRequestHandler(RefreshToken, container.resolve(RefreshTokenHandler));
mediatrJs.registerRequestHandler(new CreateUser(), container.resolve(CreateUserHandler));
mediatrJs.registerRequestHandler(new DeleteUserById(), container.resolve(DeleteUserByIdHandler));
mediatrJs.registerRequestHandler(new GetUserById(), container.resolve(GetUserByIdHandler));
mediatrJs.registerRequestHandler(new GetUsers(), container.resolve(GetUsersHandler));
mediatrJs.registerRequestHandler(new UpdateUser(), container.resolve(UpdateUserHandler));
mediatrJs.registerRequestHandler(new GenerateToken(), container.resolve(GenerateTokenHandler));
mediatrJs.registerRequestHandler(new ValidateToken(), container.resolve(ValidateTokenHandler));
mediatrJs.registerRequestHandler(new Login(), container.resolve(LoginHandler));
mediatrJs.registerRequestHandler(new Logout(), container.resolve(LogoutHandler));
mediatrJs.registerRequestHandler(new RefreshToken(), container.resolve(RefreshTokenHandler));
};
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import 'reflect-metadata';
import { UserCreated } from 'building-blocks/contracts/identity.contract';
import {Fixture, IntegrationTestFixture} from "../../../shared/fixtures/integration-test.fixture";
import {UserDto} from "../../../../src/user/dtos/user.dto";
import {FakeCreateUser} from "../../../shared/fakes/user/fake-create-user";
import {mediatrJs} from "building-blocks/mediatr-js/mediatr-js";
import { Fixture, IntegrationTestFixture } from '../../../shared/fixtures/integration-test.fixture';
import { UserDto } from '../../../../src/user/dtos/user.dto';
import { FakeCreateUser } from '../../../shared/fakes/user/fake-create-user';
import { mediatrJs } from 'building-blocks/mediatr-js/mediatr-js';

describe('integration test for create user', () => {
const integrationTestFixture = new IntegrationTestFixture();
Expand Down
19 changes: 12 additions & 7 deletions src/passenger/src/extensions/mediatr.extensions.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
import {container} from "tsyringe";
import { container } from 'tsyringe';
import {
GetPassengerById,
GetPassengerByIdHandler
} from "../passenger/features/v1/get-passenger-by-id/get-passenger-by-id";
import {GetPassengers, GetPassengersHandler} from "../passenger/features/v1/get-passengers/get-passengers";
import {mediatrJs} from "building-blocks/mediatr-js/mediatr-js";

} from '../passenger/features/v1/get-passenger-by-id/get-passenger-by-id';
import {
GetPassengers,
GetPassengersHandler
} from '../passenger/features/v1/get-passengers/get-passengers';
import { mediatrJs } from 'building-blocks/mediatr-js/mediatr-js';

export const registerMediatrHandlers = () => {
mediatrJs.registerRequestHandler(GetPassengerById, container.resolve(GetPassengerByIdHandler));
mediatrJs.registerRequestHandler(GetPassengers, container.resolve(GetPassengersHandler));
mediatrJs.registerRequestHandler(
new GetPassengerById(),
container.resolve(GetPassengerByIdHandler)
);
mediatrJs.registerRequestHandler(new GetPassengers(), container.resolve(GetPassengersHandler));
};

0 comments on commit 9dd1f6c

Please sign in to comment.