Skip to content

Commit be24512

Browse files
Victor A Higuitaharvic3
Victor A Higuita
authored andcommitted
[UPDATE]: application status was refactorized
1 parent 5d4b2c4 commit be24512

File tree

27 files changed

+153
-144
lines changed

27 files changed

+153
-144
lines changed

README.md

+25-25
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ The tools extended by this class are: the **mapper**, the **validator**, the **m
393393
import messageResources, { Resources } from "../locals/messages/index";
394394
import { ILogProvider } from "../log/providerContracts/ILogProvider";
395395
export { IResult, Result, IResultT, ResultT } from "result-tsk";
396-
import applicationStatus from "../status/applicationStatus";
396+
import { ApplicationStatus } from "../status/applicationStatus";
397397
import wordResources from "../locals/words/index";
398398
import { Validator } from "validator-tsk";
399399
import mapper, { IMap } from "mapper-tsk";
@@ -415,7 +415,7 @@ export abstract class BaseUseCase<T> {
415415
this.validator = new Validator(
416416
messageResources,
417417
messageResources.keys.SOME_PARAMETERS_ARE_MISSING,
418-
applicationStatus.INVALID_INPUT,
418+
ApplicationStatus.INVALID_INPUT,
419419
);
420420
}
421421

@@ -738,11 +738,11 @@ npx run-tsk setup project-name=my-awesome-project
738738
handlers: [this.getFeelingText],
739739
produces: [
740740
{
741-
applicationStatus: applicationStatus.SUCCESS,
741+
applicationStatus: ApplicationStatus.SUCCESS,
742742
httpStatus: HttpStatusEnum.SUCCESS,
743743
},
744744
{
745-
applicationStatus: applicationStatus.USER_NOT_FOUND,
745+
applicationStatus: ApplicationStatus.USER_NOT_FOUND,
746746
httpStatus: HttpStatusEnum.NOT_FOUND,
747747
},
748748
],
@@ -837,11 +837,11 @@ To get an overall idea, here an example:
837837
handlers: [this.login],
838838
produces: [
839839
{
840-
applicationStatus: applicationStatus.SUCCESS,
840+
applicationStatus: ApplicationStatus.SUCCESS,
841841
httpStatus: HttpStatusEnum.SUCCESS,
842842
},
843843
{
844-
applicationStatus: applicationStatus.UNAUTHORIZED,
844+
applicationStatus: ApplicationStatus.UNAUTHORIZED,
845845
httpStatus: HttpStatusEnum.UNAUTHORIZED,
846846
},
847847
],
@@ -912,15 +912,15 @@ When you have already registered (described) a model, it is not necessary to des
912912
handlers: [this.get],
913913
produces: [
914914
{
915-
applicationStatus: applicationStatus.INVALID_INPUT,
915+
applicationStatus: ApplicationStatus.INVALID_INPUT,
916916
httpStatus: HttpStatusEnum.BAD_REQUEST,
917917
},
918918
{
919-
applicationStatus: applicationStatus.SUCCESS,
919+
applicationStatus: ApplicationStatus.SUCCESS,
920920
httpStatus: HttpStatusEnum.SUCCESS,
921921
},
922922
{
923-
applicationStatus: applicationStatus.UNAUTHORIZED,
923+
applicationStatus: ApplicationStatus.UNAUTHORIZED,
924924
httpStatus: HttpStatusEnum.UNAUTHORIZED,
925925
},
926926
],
@@ -1191,12 +1191,12 @@ This strategy is only needed in the **adapter layer** dependencies for **control
11911191
First, all **dic strategy** starts from our **kernel index file** allocated into **adapters layer** as follows:
11921192
```ts
11931193
// adapters/shared/kernel/index
1194-
import applicationStatus from "../../../application/shared/status/applicationStatus";
1194+
import { ApplicationStatus } from "../../../application/shared/status/applicationStatus";
11951195
import appMessages, { localKeys } from "../../../application/shared/locals/messages";
11961196
import tsKernel, { IServiceContainer } from "dic-tsk";
11971197

11981198
tsKernel.init({
1199-
internalErrorCode: applicationStatus.INTERNAL_ERROR,
1199+
internalErrorCode: ApplicationStatus.INTERNAL_ERROR,
12001200
appMessages,
12011201
appErrorMessageKey: localKeys.DEPENDENCY_NOT_FOUND,
12021202
applicationStatus,
@@ -1292,11 +1292,11 @@ export class TextFeelingController extends BaseController {
12921292
handlers: [this.getFeelingText],
12931293
produces: [
12941294
{
1295-
applicationStatus: applicationStatus.SUCCESS,
1295+
applicationStatus: ApplicationStatus.SUCCESS,
12961296
httpStatus: HttpStatusEnum.SUCCESS,
12971297
},
12981298
{
1299-
applicationStatus: applicationStatus.UNAUTHORIZED,
1299+
applicationStatus: ApplicationStatus.UNAUTHORIZED,
13001300
httpStatus: HttpStatusEnum.UNAUTHORIZED,
13011301
},
13021302
],
@@ -1525,11 +1525,11 @@ initializeRoutes(router: IRouter): void {
15251525
handlers: [authorization(), this.create],
15261526
produces: [
15271527
{
1528-
applicationStatus: applicationStatus.CREATED,
1528+
applicationStatus: ApplicationStatus.CREATED,
15291529
httpStatus: HttpStatusEnum.CREATED,
15301530
},
15311531
{
1532-
applicationStatus: applicationStatus.UNAUTHORIZED,
1532+
applicationStatus: ApplicationStatus.UNAUTHORIZED,
15331533
httpStatus: HttpStatusEnum.UNAUTHORIZED,
15341534
},
15351535
],
@@ -1540,11 +1540,11 @@ initializeRoutes(router: IRouter): void {
15401540
handlers: [authorization(), this.get],
15411541
produces: [
15421542
{
1543-
applicationStatus: applicationStatus.SUCCESS,
1543+
applicationStatus: ApplicationStatus.SUCCESS,
15441544
httpStatus: HttpStatusEnum.SUCCESS,
15451545
},
15461546
{
1547-
applicationStatus: applicationStatus.UNAUTHORIZED,
1547+
applicationStatus: ApplicationStatus.UNAUTHORIZED,
15481548
httpStatus: HttpStatusEnum.UNAUTHORIZED,
15491549
},
15501550
],
@@ -1732,11 +1732,11 @@ export class UsersController extends BaseController {
17321732
handlers: [authorization(), this.singUp],
17331733
produces: [
17341734
{
1735-
applicationStatus: applicationStatus.CREATED,
1735+
applicationStatus: ApplicationStatus.CREATED,
17361736
httpStatus: HttpStatusEnum.CREATED,
17371737
},
17381738
{
1739-
applicationStatus: applicationStatus.UNAUTHORIZED,
1739+
applicationStatus: ApplicationStatus.UNAUTHORIZED,
17401740
httpStatus: HttpStatusEnum.UNAUTHORIZED,
17411741
},
17421742
],
@@ -1747,11 +1747,11 @@ export class UsersController extends BaseController {
17471747
handlers: [authorization(), this.get],
17481748
produces: [
17491749
{
1750-
applicationStatus: applicationStatus.SUCCESS,
1750+
applicationStatus: ApplicationStatus.SUCCESS,
17511751
httpStatus: HttpStatusEnum.SUCCESS,
17521752
},
17531753
{
1754-
applicationStatus: applicationStatus.UNAUTHORIZED,
1754+
applicationStatus: ApplicationStatus.UNAUTHORIZED,
17551755
httpStatus: HttpStatusEnum.UNAUTHORIZED,
17561756
},
17571757
],
@@ -1811,11 +1811,11 @@ export class UsersController extends BaseController {
18111811
handlers: [authorization(), this.singUp],
18121812
produces: [
18131813
{
1814-
applicationStatus: applicationStatus.CREATED,
1814+
applicationStatus: ApplicationStatus.CREATED,
18151815
httpStatus: HttpStatusEnum.CREATED,
18161816
},
18171817
{
1818-
applicationStatus: applicationStatus.UNAUTHORIZED,
1818+
applicationStatus: ApplicationStatus.UNAUTHORIZED,
18191819
httpStatus: HttpStatusEnum.UNAUTHORIZED,
18201820
},
18211821
],
@@ -1826,11 +1826,11 @@ export class UsersController extends BaseController {
18261826
handlers: [authorization(), this.get],
18271827
produces: [
18281828
{
1829-
applicationStatus: applicationStatus.SUCCESS,
1829+
applicationStatus: ApplicationStatus.SUCCESS,
18301830
httpStatus: HttpStatusEnum.SUCCESS,
18311831
},
18321832
{
1833-
applicationStatus: applicationStatus.UNAUTHORIZED,
1833+
applicationStatus: ApplicationStatus.UNAUTHORIZED,
18341834
httpStatus: HttpStatusEnum.UNAUTHORIZED,
18351835
},
18361836
],

src/adapters/controllers/auth/Auth.controller.ts

+8-8
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ import BaseController, {
1313
IRequest,
1414
IResponse,
1515
INextFunction,
16-
EntryPointHandler,
16+
RequestHandler,
1717
IRouter,
1818
ServiceContext,
1919
HttpContentTypeEnum,
2020
HttpMethodEnum,
2121
HttpHeaderEnum,
22-
applicationStatus,
22+
ApplicationStatus,
2323
HttpStatusEnum,
2424
} from "../base/Base.controller";
2525

@@ -28,7 +28,7 @@ export class AuthController extends BaseController {
2828
super(AuthController.name, serviceContainer, ServiceContext.AUTH);
2929
}
3030

31-
login: EntryPointHandler = async (
31+
login: RequestHandler = async (
3232
req: IRequest,
3333
res: IResponse,
3434
next: INextFunction,
@@ -49,7 +49,7 @@ export class AuthController extends BaseController {
4949
);
5050
};
5151

52-
logout: EntryPointHandler = async (
52+
logout: RequestHandler = async (
5353
req: IRequest,
5454
res: IResponse,
5555
next: INextFunction,
@@ -73,11 +73,11 @@ export class AuthController extends BaseController {
7373
handlers: [this.logout],
7474
produces: [
7575
{
76-
applicationStatus: applicationStatus.SUCCESS,
76+
applicationStatus: ApplicationStatus.SUCCESS,
7777
httpStatus: HttpStatusEnum.SUCCESS,
7878
},
7979
{
80-
applicationStatus: applicationStatus.UNAUTHORIZED,
80+
applicationStatus: ApplicationStatus.UNAUTHORIZED,
8181
httpStatus: HttpStatusEnum.UNAUTHORIZED,
8282
},
8383
],
@@ -125,11 +125,11 @@ export class AuthController extends BaseController {
125125
handlers: [this.login],
126126
produces: [
127127
{
128-
applicationStatus: applicationStatus.SUCCESS,
128+
applicationStatus: ApplicationStatus.SUCCESS,
129129
httpStatus: HttpStatusEnum.SUCCESS,
130130
},
131131
{
132-
applicationStatus: applicationStatus.UNAUTHORIZED,
132+
applicationStatus: ApplicationStatus.UNAUTHORIZED,
133133
httpStatus: HttpStatusEnum.UNAUTHORIZED,
134134
},
135135
],

src/adapters/controllers/base/Base.controller.ts

+12-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ILogProvider } from "../../../application/shared/log/providerContracts/ILogProvider";
22
import { IUseCaseTraceRepository } from "../../repositories/trace/IUseCaseTrace.repository";
33
import { UseCaseTraceRepository } from "../../repositories/trace/UseCaseTrace.repository";
4-
import applicationStatus from "../../../application/shared/status/applicationStatus";
4+
import { ApplicationStatus } from "../../../application/shared/status/applicationStatus";
55
import { IApiDocGenerator, RouteType } from "./context/apiDoc/IApiDocGenerator";
66
import { UseCaseTrace } from "../../../application/shared/log/UseCaseTrace";
77
import { IResult } from "../../../application/shared/useCase/BaseUseCase";
@@ -20,11 +20,11 @@ import { IResponse } from "./context/IResponse";
2020
import { IRequest } from "./context/IRequest";
2121
import { IRouter } from "./context/IRouter";
2222

23-
type EntryPointHandler = (req: IRequest, res: IResponse, next: INextFunction) => Promise<void>;
23+
type RequestHandler = (req: IRequest, res: IResponse, next: INextFunction) => Promise<void>;
2424
type HeaderType = { [key in HttpHeaderEnum]?: HttpContentTypeEnum | string };
2525

2626
export {
27-
EntryPointHandler,
27+
RequestHandler,
2828
IRequest,
2929
IResponse,
3030
INextFunction,
@@ -34,7 +34,7 @@ export {
3434
HttpContentTypeEnum,
3535
HttpHeaderEnum,
3636
HttpStatusEnum,
37-
applicationStatus,
37+
ApplicationStatus,
3838
};
3939

4040
export default abstract class BaseController {
@@ -82,7 +82,9 @@ export default abstract class BaseController {
8282
): Promise<void> {
8383
this.setTransactionId(res);
8484
this.setHeaders(res, headersToSet);
85-
res.status(HttpStatusResolver.getCode(result.statusCode.toString())).json(result);
85+
res
86+
.status(HttpStatusResolver.getCode(result.statusCode.toString() as ApplicationStatus))
87+
.json(result);
8688
}
8789

8890
private async getResultDto(
@@ -92,7 +94,9 @@ export default abstract class BaseController {
9294
): Promise<void> {
9395
this.setTransactionId(res);
9496
this.setHeaders(res, headersToSet);
95-
res.status(HttpStatusResolver.getCode(result.statusCode.toString())).json(result.toResultDto());
97+
res
98+
.status(HttpStatusResolver.getCode(result.statusCode.toString() as ApplicationStatus))
99+
.json(result.toResultDto());
96100
}
97101

98102
private async getResultData(
@@ -103,7 +107,7 @@ export default abstract class BaseController {
103107
this.setTransactionId(res);
104108
this.setHeaders(res, headersToSet);
105109
res
106-
.status(HttpStatusResolver.getCode(result.statusCode.toString()))
110+
.status(HttpStatusResolver.getCode(result.statusCode.toString() as ApplicationStatus))
107111
.json(result.message ? result.toResultDto() : result.toResultDto().data);
108112
}
109113

@@ -123,7 +127,7 @@ export default abstract class BaseController {
123127
}
124128
}
125129

126-
setProducesCode(applicationStatus: string, httpStatus: HttpStatusEnum): void {
130+
private setProducesCode(applicationStatus: string, httpStatus: HttpStatusEnum): void {
127131
if (!statusMapping[applicationStatus]) {
128132
statusMapping[applicationStatus] = httpStatus;
129133
}
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { EntryPointHandler } from "../Base.controller";
1+
import { RequestHandler } from "../Base.controller";
22
import { HttpMethodEnum } from "./HttpMethod.enum";
33

44
export interface IRouter {
55
(): IRouter;
6-
[HttpMethodEnum.GET](path: string, ...handlers: EntryPointHandler[]): IRouter;
7-
[HttpMethodEnum.POST](path: string, ...handlers: EntryPointHandler[]): IRouter;
8-
[HttpMethodEnum.PUT](path: string, ...handlers: EntryPointHandler[]): IRouter;
9-
[HttpMethodEnum.DELETE](path: string, ...handlers: EntryPointHandler[]): IRouter;
10-
[HttpMethodEnum.PATCH](path: string, ...handlers: EntryPointHandler[]): IRouter;
11-
[HttpMethodEnum.OPTIONS](path: string, ...handlers: EntryPointHandler[]): IRouter;
12-
[HttpMethodEnum.HEAD](path: string, ...handlers: EntryPointHandler[]): IRouter;
6+
[HttpMethodEnum.GET](path: string, ...handlers: RequestHandler[]): IRouter;
7+
[HttpMethodEnum.POST](path: string, ...handlers: RequestHandler[]): IRouter;
8+
[HttpMethodEnum.PUT](path: string, ...handlers: RequestHandler[]): IRouter;
9+
[HttpMethodEnum.DELETE](path: string, ...handlers: RequestHandler[]): IRouter;
10+
[HttpMethodEnum.PATCH](path: string, ...handlers: RequestHandler[]): IRouter;
11+
[HttpMethodEnum.OPTIONS](path: string, ...handlers: RequestHandler[]): IRouter;
12+
[HttpMethodEnum.HEAD](path: string, ...handlers: RequestHandler[]): IRouter;
1313
}

src/adapters/controllers/base/context/apiDoc/IApiDocGenerator.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { EntryPointHandler, HttpStatusEnum } from "../../Base.controller";
1+
import { RequestHandler, HttpStatusEnum } from "../../Base.controller";
22
import { HttpContentTypeEnum } from "../HttpContentType.enum";
33
import { HttpMethodEnum } from "../HttpMethod.enum";
44
import {
@@ -46,7 +46,7 @@ export type ApiDoc = {
4646
export type RouteType = {
4747
method: HttpMethodEnum;
4848
path: string;
49-
handlers: EntryPointHandler[];
49+
handlers: RequestHandler[];
5050
produces: {
5151
applicationStatus: string;
5252
httpStatus: HttpStatusEnum;
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1-
import applicationStatus from "../../../../application/shared/status/applicationStatus";
1+
import { ApplicationStatus } from "../../../../application/shared/status/applicationStatus";
22
import { HttpStatusEnum } from "./HttpStatusEnum";
33

4-
const statusMapping: Record<string, number> & { default: number } = {
5-
default: HttpStatusEnum.CONTINUE,
4+
const statusMapping: Record<string, number> & { DEFAULT: number } = {
5+
DEFAULT: HttpStatusEnum.CONTINUE,
66
};
77

88
/*
99
You don't need to add mapping for all applicationStatus,
1010
because if you use the produce property when you are setting the routes in the controller,
11-
it does the mapping for you according to the applicationStatus and HttpStatus that you will set.
11+
it does the mapping for you according to the ApplicationStatus and HttpStatus that you will set.
1212
Here only map the applicationStatus that you will not use the produce property.
1313
*/
14-
statusMapping[applicationStatus.SUCCESS] = HttpStatusEnum.SUCCESS;
15-
statusMapping[applicationStatus.CREATED] = HttpStatusEnum.CREATED;
16-
statusMapping[applicationStatus.NOT_CONTENT] = HttpStatusEnum.NOT_CONTENT;
17-
statusMapping[applicationStatus.INVALID_INPUT] = HttpStatusEnum.BAD_REQUEST;
18-
statusMapping[applicationStatus.UNAUTHORIZED] = HttpStatusEnum.UNAUTHORIZED;
19-
statusMapping[applicationStatus.NOT_FOUND] = HttpStatusEnum.NOT_FOUND;
20-
statusMapping[applicationStatus.INTERNAL_ERROR] = HttpStatusEnum.INTERNAL_SERVER_ERROR;
21-
statusMapping[applicationStatus.NOT_IMPLEMENTED] = HttpStatusEnum.NOT_IMPLEMENTED;
22-
statusMapping[applicationStatus.WORKER_ERROR] = HttpStatusEnum.INTERNAL_SERVER_ERROR;
14+
statusMapping[ApplicationStatus.SUCCESS] = HttpStatusEnum.SUCCESS;
15+
statusMapping[ApplicationStatus.CREATED] = HttpStatusEnum.CREATED;
16+
statusMapping[ApplicationStatus.NOT_CONTENT] = HttpStatusEnum.NOT_CONTENT;
17+
statusMapping[ApplicationStatus.INVALID_INPUT] = HttpStatusEnum.BAD_REQUEST;
18+
statusMapping[ApplicationStatus.UNAUTHORIZED] = HttpStatusEnum.UNAUTHORIZED;
19+
statusMapping[ApplicationStatus.NOT_FOUND] = HttpStatusEnum.NOT_FOUND;
20+
statusMapping[ApplicationStatus.INTERNAL_ERROR] = HttpStatusEnum.INTERNAL_SERVER_ERROR;
21+
statusMapping[ApplicationStatus.NOT_IMPLEMENTED] = HttpStatusEnum.NOT_IMPLEMENTED;
22+
statusMapping[ApplicationStatus.WORKER_ERROR] = HttpStatusEnum.INTERNAL_SERVER_ERROR;
2323

2424
export default statusMapping;
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { DefaultValue } from "../../../../domain/shared/utils/DefaultValue";
2+
import { ApplicationStatus } from "../Base.controller";
23
import { HttpStatusEnum } from "./HttpStatusEnum";
34
import statusMapping from "./AppStatusMapping";
45

56
export class HttpStatusResolver {
6-
static getCode(applicationStatusCode: string): HttpStatusEnum {
7-
return DefaultValue.evaluateAndGet(statusMapping[applicationStatusCode], statusMapping.default);
7+
static getCode(applicationStatusCode: ApplicationStatus): HttpStatusEnum {
8+
return DefaultValue.evaluateAndGet(statusMapping[applicationStatusCode], statusMapping.DEFAULT);
89
}
910
}

0 commit comments

Comments
 (0)