axe-api 0.31.4 → 1.0.0-rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/build/dev-kit.d.ts +1 -0
  2. package/build/dev-kit.js +16 -0
  3. package/build/index.d.ts +2 -2
  4. package/build/index.js +4 -1
  5. package/build/src/Builders/RouterBuilder.d.ts +0 -4
  6. package/build/src/Builders/RouterBuilder.js +13 -107
  7. package/build/src/Handlers/DocsHTMLHandler.d.ts +3 -2
  8. package/build/src/Handlers/Helpers.d.ts +7 -7
  9. package/build/src/Handlers/MetadataHandler.d.ts +3 -2
  10. package/build/src/Handlers/RequestHandler.d.ts +3 -0
  11. package/build/src/Handlers/RequestHandler.js +89 -0
  12. package/build/src/Handlers/RoutesHandler.d.ts +3 -2
  13. package/build/src/Helpers.d.ts +1 -2
  14. package/build/src/Helpers.js +3 -15
  15. package/build/src/Interfaces.d.ts +30 -29
  16. package/build/src/Model.d.ts +3 -3
  17. package/build/src/Phases/All/FetchPhase.d.ts +3 -0
  18. package/build/src/Phases/All/FetchPhase.js +16 -0
  19. package/build/src/Phases/All/PreparePhase.d.ts +3 -0
  20. package/build/src/Phases/All/PreparePhase.js +30 -0
  21. package/build/src/Phases/All/index.d.ts +4 -0
  22. package/build/src/{Middlewares → Phases/All}/index.js +4 -3
  23. package/build/src/Phases/Delete/ActionPhase.d.ts +3 -0
  24. package/build/src/Phases/Delete/ActionPhase.js +24 -0
  25. package/build/src/Phases/Delete/PreparePhase.d.ts +3 -0
  26. package/build/src/Phases/Delete/PreparePhase.js +25 -0
  27. package/build/src/Phases/Delete/QueryPhase.d.ts +3 -0
  28. package/build/src/Phases/Delete/QueryPhase.js +20 -0
  29. package/build/src/Phases/Delete/ResponsePhase.d.ts +3 -0
  30. package/build/src/Phases/Delete/ResponsePhase.js +14 -0
  31. package/build/src/Phases/Delete/index.d.ts +7 -0
  32. package/build/src/Phases/Delete/index.js +15 -0
  33. package/build/src/Phases/ForceDelete/ActionPhase.d.ts +3 -0
  34. package/build/src/Phases/ForceDelete/ActionPhase.js +16 -0
  35. package/build/src/Phases/ForceDelete/PreparePhase.d.ts +3 -0
  36. package/build/src/Phases/ForceDelete/PreparePhase.js +28 -0
  37. package/build/src/Phases/ForceDelete/QueryPhase.d.ts +3 -0
  38. package/build/src/Phases/ForceDelete/QueryPhase.js +20 -0
  39. package/build/src/Phases/ForceDelete/index.d.ts +6 -0
  40. package/build/src/Phases/ForceDelete/index.js +13 -0
  41. package/build/src/Phases/List/RelationalPhase.d.ts +3 -0
  42. package/build/src/Phases/List/RelationalPhase.js +17 -0
  43. package/build/src/Phases/List/ResultPhase.d.ts +3 -0
  44. package/build/src/Phases/List/ResultPhase.js +14 -0
  45. package/build/src/Phases/List/SerializePhase.d.ts +3 -0
  46. package/build/src/Phases/List/SerializePhase.js +19 -0
  47. package/build/src/Phases/List/index.d.ts +6 -0
  48. package/build/src/Phases/List/index.js +13 -0
  49. package/build/src/Phases/Paginate/FetchPhase.d.ts +3 -0
  50. package/build/src/Phases/Paginate/FetchPhase.js +19 -0
  51. package/build/src/Phases/Paginate/PreparePhase.d.ts +3 -0
  52. package/build/src/Phases/Paginate/PreparePhase.js +30 -0
  53. package/build/src/Phases/Paginate/index.d.ts +5 -0
  54. package/build/src/Phases/Paginate/index.js +11 -0
  55. package/build/src/Phases/Patch/PrepareActionPhase.d.ts +3 -0
  56. package/build/src/Phases/Patch/PrepareActionPhase.js +37 -0
  57. package/build/src/Phases/Patch/index.d.ts +4 -0
  58. package/build/src/Phases/Patch/index.js +9 -0
  59. package/build/src/Phases/Show/FetchPhase.d.ts +3 -0
  60. package/build/src/Phases/Show/FetchPhase.js +23 -0
  61. package/build/src/Phases/Show/PreparePhase.d.ts +3 -0
  62. package/build/src/Phases/Show/PreparePhase.js +31 -0
  63. package/build/src/Phases/Show/index.d.ts +5 -0
  64. package/build/src/Phases/Show/index.js +11 -0
  65. package/build/src/Phases/Single/GetPhase.d.ts +3 -0
  66. package/build/src/{Middlewares/acceptLanguageMiddleware.js → Phases/Single/GetPhase.js} +15 -10
  67. package/build/src/Phases/Single/PrepareGetPhase.d.ts +3 -0
  68. package/build/src/Phases/Single/PrepareGetPhase.js +19 -0
  69. package/build/src/Phases/Single/RelationalPhase.d.ts +3 -0
  70. package/build/src/Phases/Single/RelationalPhase.js +17 -0
  71. package/build/src/Phases/Single/ResultPhase.d.ts +3 -0
  72. package/build/src/Phases/Single/ResultPhase.js +14 -0
  73. package/build/src/Phases/Single/SerializePhase.d.ts +3 -0
  74. package/build/src/Phases/Single/SerializePhase.js +18 -0
  75. package/build/src/Phases/Single/index.d.ts +8 -0
  76. package/build/src/Phases/Single/index.js +17 -0
  77. package/build/src/Phases/Store/ActionPhase.d.ts +3 -0
  78. package/build/src/Phases/Store/ActionPhase.js +29 -0
  79. package/build/src/Phases/Store/PreparePhase.d.ts +3 -0
  80. package/build/src/Phases/Store/PreparePhase.js +46 -0
  81. package/build/src/Phases/Store/index.d.ts +5 -0
  82. package/build/src/Phases/Store/index.js +11 -0
  83. package/build/src/Phases/Update/ActionPhase.d.ts +3 -0
  84. package/build/src/Phases/Update/ActionPhase.js +22 -0
  85. package/build/src/Phases/Update/PrepareActionPhase.d.ts +3 -0
  86. package/build/src/Phases/Update/PrepareActionPhase.js +37 -0
  87. package/build/src/Phases/Update/index.d.ts +5 -0
  88. package/build/src/Phases/Update/index.js +11 -0
  89. package/build/src/Server.d.ts +0 -1
  90. package/build/src/Server.js +13 -16
  91. package/build/src/Services/App.d.ts +14 -0
  92. package/build/src/Services/App.js +37 -0
  93. package/build/src/Services/AxeRequest.d.ts +24 -0
  94. package/build/src/Services/AxeRequest.js +59 -0
  95. package/build/src/Services/AxeResponse.d.ts +17 -0
  96. package/build/src/Services/AxeResponse.js +38 -0
  97. package/build/src/Services/LogService.js +4 -5
  98. package/build/src/Services/ModelService.d.ts +4 -4
  99. package/build/src/Services/QueryService.d.ts +1 -1
  100. package/build/src/Services/QueryService.js +14 -11
  101. package/build/src/Services/URLService.d.ts +29 -0
  102. package/build/src/Services/URLService.js +116 -0
  103. package/build/src/Services/index.d.ts +4 -1
  104. package/build/src/Services/index.js +7 -1
  105. package/build/src/Types.d.ts +7 -6
  106. package/build/src/constants.d.ts +9 -2
  107. package/build/src/constants.js +162 -1
  108. package/package.json +6 -1
  109. package/build/src/Handlers/AllHandler.d.ts +0 -3
  110. package/build/src/Handlers/AllHandler.js +0 -45
  111. package/build/src/Handlers/DestroyHandler.d.ts +0 -3
  112. package/build/src/Handlers/DestroyHandler.js +0 -51
  113. package/build/src/Handlers/ForceDestroyHandler.d.ts +0 -3
  114. package/build/src/Handlers/ForceDestroyHandler.js +0 -45
  115. package/build/src/Handlers/HandlerFactory.d.ts +0 -6
  116. package/build/src/Handlers/HandlerFactory.js +0 -39
  117. package/build/src/Handlers/PaginateHandler.d.ts +0 -3
  118. package/build/src/Handlers/PaginateHandler.js +0 -49
  119. package/build/src/Handlers/PatchHandler.d.ts +0 -3
  120. package/build/src/Handlers/PatchHandler.js +0 -69
  121. package/build/src/Handlers/ShowHandler.d.ts +0 -3
  122. package/build/src/Handlers/ShowHandler.js +0 -55
  123. package/build/src/Handlers/StoreHandler.d.ts +0 -3
  124. package/build/src/Handlers/StoreHandler.js +0 -65
  125. package/build/src/Handlers/UpdateHandler.d.ts +0 -3
  126. package/build/src/Handlers/UpdateHandler.js +0 -69
  127. package/build/src/Middlewares/acceptLanguageMiddleware.d.ts +0 -3
  128. package/build/src/Middlewares/index.d.ts +0 -2
@@ -1,45 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const Helpers_1 = require("./Helpers");
16
- const Enums_1 = require("../Enums");
17
- const ApiError_1 = __importDefault(require("../Exceptions/ApiError"));
18
- exports.default = (pack) => __awaiter(void 0, void 0, void 0, function* () {
19
- const { model, req, res, database, relation, parentModel } = pack;
20
- // We should check the parameter type
21
- const value = req.params[model.instance.primaryKey];
22
- (0, Helpers_1.checkPrimaryKeyValueType)(model, value);
23
- // Adding the main query
24
- const query = database
25
- .from(model.instance.table)
26
- .where(model.instance.primaryKey, value);
27
- // If there is a deletedAtColumn, it means that this table support soft-delete
28
- if (model.instance.deletedAtColumn === null) {
29
- throw new ApiError_1.default("You can use force delete only soft-delete supported models.", Enums_1.StatusCodes.NOT_FOUND);
30
- }
31
- // If there is a relation, we should bind it
32
- (0, Helpers_1.addForeignKeyQuery)(req, query, relation, parentModel);
33
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforeForceDeleteQuery, Object.assign(Object.assign({}, pack), { query }));
34
- const item = yield query.first();
35
- if (!item) {
36
- throw new ApiError_1.default(`The item is not found on ${model.name}.`);
37
- }
38
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterForceDeleteQuery, Object.assign(Object.assign({}, pack), { query,
39
- item }));
40
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforeForceDelete, Object.assign(Object.assign({}, pack), { query,
41
- item }));
42
- yield query.delete();
43
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterForceDelete, Object.assign(Object.assign({}, pack), { item }));
44
- return res.status(204).json();
45
- });
@@ -1,6 +0,0 @@
1
- import { HandlerTypes } from "../Enums";
2
- import { HandlerFunction } from "../Types";
3
- declare class HandlerFactory {
4
- static get(handleType: HandlerTypes): HandlerFunction;
5
- }
6
- export default HandlerFactory;
@@ -1,39 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const AllHandler_1 = __importDefault(require("./AllHandler"));
7
- const DestroyHandler_1 = __importDefault(require("./DestroyHandler"));
8
- const ForceDestroyHandler_1 = __importDefault(require("./ForceDestroyHandler"));
9
- const PaginateHandler_1 = __importDefault(require("./PaginateHandler"));
10
- const PatchHandler_1 = __importDefault(require("./PatchHandler"));
11
- const UpdateHandler_1 = __importDefault(require("./UpdateHandler"));
12
- const ShowHandler_1 = __importDefault(require("./ShowHandler"));
13
- const StoreHandler_1 = __importDefault(require("./StoreHandler"));
14
- const Enums_1 = require("../Enums");
15
- class HandlerFactory {
16
- static get(handleType) {
17
- switch (handleType) {
18
- case Enums_1.HandlerTypes.ALL:
19
- return AllHandler_1.default;
20
- case Enums_1.HandlerTypes.DELETE:
21
- return DestroyHandler_1.default;
22
- case Enums_1.HandlerTypes.FORCE_DELETE:
23
- return ForceDestroyHandler_1.default;
24
- case Enums_1.HandlerTypes.INSERT:
25
- return StoreHandler_1.default;
26
- case Enums_1.HandlerTypes.PAGINATE:
27
- return PaginateHandler_1.default;
28
- case Enums_1.HandlerTypes.PATCH:
29
- return PatchHandler_1.default;
30
- case Enums_1.HandlerTypes.SHOW:
31
- return ShowHandler_1.default;
32
- case Enums_1.HandlerTypes.UPDATE:
33
- return UpdateHandler_1.default;
34
- default:
35
- throw new Error("Handler type is not defined");
36
- }
37
- }
38
- }
39
- exports.default = HandlerFactory;
@@ -1,3 +0,0 @@
1
- import { IRequestPack } from "../Interfaces";
2
- declare const _default: (pack: IRequestPack) => Promise<import("express").Response<any, Record<string, any>>>;
3
- export default _default;
@@ -1,49 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const Helpers_1 = require("./Helpers");
13
- const Enums_1 = require("../Enums");
14
- const Services_1 = require("../Services");
15
- exports.default = (pack) => __awaiter(void 0, void 0, void 0, function* () {
16
- const { version, model, req, database, relation, parentModel } = pack;
17
- const queryParser = new Services_1.QueryService(model, version.modelList.get(), version.config);
18
- // We should parse URL query string to use as condition in Lucid query
19
- const conditions = queryParser.get(req.query);
20
- // Creating a new database query
21
- const query = database.from(model.instance.table);
22
- // If there is a deletedAtColumn, it means that this table support soft-delete
23
- (0, Helpers_1.addSoftDeleteQuery)(model, conditions, query);
24
- // Users should be able to select some fields to show.
25
- queryParser.applyFields(query, conditions.fields);
26
- // Binding parent id if there is.
27
- (0, Helpers_1.addForeignKeyQuery)(req, query, relation, parentModel);
28
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforePaginate, Object.assign(Object.assign({}, pack), { conditions,
29
- query }));
30
- // Users should be able to filter records
31
- queryParser.applyWheres(query, conditions.q);
32
- // User should be able to select sorting fields and types
33
- queryParser.applySorting(query, conditions.sort);
34
- const result = yield query.paginate({
35
- perPage: conditions.per_page,
36
- currentPage: conditions.page,
37
- isLengthAware: true,
38
- });
39
- // We should try to get related data if there is any
40
- yield (0, Helpers_1.getRelatedData)(version, result.data, conditions.with, model, version.modelList, database, Enums_1.HandlerTypes.PAGINATE, req);
41
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterPaginate, Object.assign(Object.assign({}, pack), { conditions,
42
- result,
43
- query }));
44
- // Serializing the data by the model's serialize method
45
- result.data = yield (0, Helpers_1.serializeData)(version, result.data, model.serialize, Enums_1.HandlerTypes.PAGINATE, req);
46
- // Filtering hidden fields from the response data.
47
- (0, Helpers_1.filterHiddenFields)(result.data, model.instance.hiddens);
48
- return pack.res.json(result);
49
- });
@@ -1,3 +0,0 @@
1
- import { IRequestPack } from "../Interfaces";
2
- declare const _default: (pack: IRequestPack) => Promise<import("express").Response<any, Record<string, any>>>;
3
- export default _default;
@@ -1,69 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const validatorjs_1 = __importDefault(require("validatorjs"));
16
- const Helpers_1 = require("./Helpers");
17
- const Enums_1 = require("../Enums");
18
- const ApiError_1 = __importDefault(require("../Exceptions/ApiError"));
19
- exports.default = (pack) => __awaiter(void 0, void 0, void 0, function* () {
20
- const { version, model, req, res, database, relation, parentModel } = pack;
21
- const query = database.from(model.instance.table);
22
- // If there is a relation, we should bind it
23
- (0, Helpers_1.addForeignKeyQuery)(req, query, relation, parentModel);
24
- // If there is a deletedAtColumn, it means that this table support soft-delete
25
- (0, Helpers_1.addSoftDeleteQuery)(model, null, query);
26
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforeUpdateQuery, Object.assign(Object.assign({}, pack), { query }));
27
- // We should check the parameter type
28
- const value = req.params[model.instance.primaryKey];
29
- (0, Helpers_1.checkPrimaryKeyValueType)(model, value);
30
- // Adding the main query
31
- let item = yield query.where(model.instance.primaryKey, value).first();
32
- if (!item) {
33
- throw new ApiError_1.default(`The item is not found on ${model.name}.`, Enums_1.StatusCodes.NOT_FOUND);
34
- }
35
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterUpdateQuery, Object.assign(Object.assign({}, pack), { item,
36
- query }));
37
- const requestMethod = req.method;
38
- const fillables = model.instance.getFillableFields(requestMethod);
39
- const formData = Object.assign(Object.assign({}, item), (0, Helpers_1.getMergedFormData)(req, fillables));
40
- const validationRules = model.instance.getValidationRules(requestMethod);
41
- if (validationRules) {
42
- // The validation language should be set
43
- validatorjs_1.default.useLang(req.currentLanguage.language);
44
- // Validate the data
45
- const validation = new validatorjs_1.default(formData, validationRules);
46
- if (validation.fails()) {
47
- return res.status(400).json(validation.errors);
48
- }
49
- }
50
- // We should bind the timestamp values
51
- (0, Helpers_1.bindTimestampValues)(formData, model, [Enums_1.TimestampColumns.UPDATED_AT]);
52
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforeUpdate, Object.assign(Object.assign({}, pack), { item,
53
- formData,
54
- query }));
55
- yield query
56
- .where(model.instance.primaryKey, item[model.instance.primaryKey])
57
- .update(formData);
58
- item = yield database(model.instance.table)
59
- .where(model.instance.primaryKey, item[model.instance.primaryKey])
60
- .first();
61
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterUpdate, Object.assign(Object.assign({}, pack), { item,
62
- formData,
63
- query }));
64
- // Serializing the data by the model's serialize method
65
- item = yield (0, Helpers_1.serializeData)(version, item, model.serialize, Enums_1.HandlerTypes.PATCH, req);
66
- // Filtering hidden fields from the response data.
67
- (0, Helpers_1.filterHiddenFields)([item], model.instance.hiddens);
68
- return res.json(item);
69
- });
@@ -1,3 +0,0 @@
1
- import { IRequestPack } from "../Interfaces";
2
- declare const _default: (pack: IRequestPack) => Promise<import("express").Response<any, Record<string, any>>>;
3
- export default _default;
@@ -1,55 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const Helpers_1 = require("./Helpers");
16
- const Enums_1 = require("../Enums");
17
- const ApiError_1 = __importDefault(require("../Exceptions/ApiError"));
18
- const Services_1 = require("../Services");
19
- exports.default = (pack) => __awaiter(void 0, void 0, void 0, function* () {
20
- const { version, model, req, res, database, relation, parentModel } = pack;
21
- const queryParser = new Services_1.QueryService(model, version.modelList.get(), version.config);
22
- // We should parse URL query string to use as condition in Lucid query
23
- const conditions = queryParser.get(req.query);
24
- // Fetching item
25
- const query = database.from(model.instance.table);
26
- // If there is a deletedAtColumn, it means that this table support soft-delete
27
- (0, Helpers_1.addSoftDeleteQuery)(model, conditions, query);
28
- // Users should be able to select some fields to show.
29
- queryParser.applyFields(query, conditions.fields);
30
- // If there is a relation, we should bind it
31
- (0, Helpers_1.addForeignKeyQuery)(req, query, relation, parentModel);
32
- // We should check the parameter type
33
- const value = req.params[model.instance.primaryKey];
34
- (0, Helpers_1.checkPrimaryKeyValueType)(model, value);
35
- // Adding the main query
36
- query.where(model.instance.primaryKey, value);
37
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforeShow, Object.assign(Object.assign({}, pack), { query,
38
- conditions }));
39
- // Users should be able to filter records
40
- queryParser.applyWheres(query, conditions.q);
41
- let item = yield query.first();
42
- if (!item) {
43
- throw new ApiError_1.default(`The item is not found on ${model.name}.`, Enums_1.StatusCodes.NOT_FOUND);
44
- }
45
- // We should try to get related data if there is any
46
- yield (0, Helpers_1.getRelatedData)(version, [item], conditions.with, model, version.modelList, database, Enums_1.HandlerTypes.ALL, req);
47
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterShow, Object.assign(Object.assign({}, pack), { query,
48
- conditions,
49
- item }));
50
- // Serializing the data by the model's serialize method
51
- item = yield (0, Helpers_1.serializeData)(version, item, model.serialize, Enums_1.HandlerTypes.SHOW, req);
52
- // Filtering hidden fields from the response data.
53
- (0, Helpers_1.filterHiddenFields)([item], model.instance.hiddens);
54
- return res.json(item);
55
- });
@@ -1,3 +0,0 @@
1
- import { IRequestPack } from "../Interfaces";
2
- declare const _default: (pack: IRequestPack) => Promise<import("express").Response<any, Record<string, any>>>;
3
- export default _default;
@@ -1,65 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const validatorjs_1 = __importDefault(require("validatorjs"));
16
- const Helpers_1 = require("./Helpers");
17
- const Enums_1 = require("../Enums");
18
- exports.default = (pack) => __awaiter(void 0, void 0, void 0, function* () {
19
- const { version, model, req, res, database, relation, parentModel } = pack;
20
- const requestMethod = req.method;
21
- const fillables = model.instance.getFillableFields(requestMethod);
22
- const formData = (0, Helpers_1.getMergedFormData)(req, fillables);
23
- const validationRules = model.instance.getValidationRules(requestMethod);
24
- if (validationRules) {
25
- // The validation language should be set
26
- validatorjs_1.default.useLang(req.currentLanguage.language);
27
- // Validate the data
28
- const validation = new validatorjs_1.default(formData, validationRules);
29
- if (validation.fails()) {
30
- return res.status(400).json(validation.errors);
31
- }
32
- }
33
- if (relation && parentModel) {
34
- const parentColumn = (0, Helpers_1.getParentColumn)(relation);
35
- if (parentColumn) {
36
- formData[relation.foreignKey] = req.params[parentColumn];
37
- }
38
- }
39
- // We should bind the timestamp values
40
- (0, Helpers_1.bindTimestampValues)(formData, model, [
41
- Enums_1.TimestampColumns.CREATED_AT,
42
- Enums_1.TimestampColumns.UPDATED_AT,
43
- ]);
44
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforeInsert, Object.assign(Object.assign({}, pack), { formData }));
45
- const [returningResult] = yield database(model.instance.table)
46
- .insert(formData)
47
- .returning(model.instance.primaryKey);
48
- let insertedPrimaryKeyValue = typeof returningResult === "number"
49
- ? returningResult
50
- : returningResult[model.instance.primaryKey];
51
- // If the user use a special primary key value, we should use that value
52
- if (insertedPrimaryKeyValue === 0) {
53
- insertedPrimaryKeyValue = formData[model.instance.primaryKey];
54
- }
55
- let item = yield database(model.instance.table)
56
- .where(model.instance.primaryKey, insertedPrimaryKeyValue)
57
- .first();
58
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterInsert, Object.assign(Object.assign({}, pack), { formData,
59
- item }));
60
- // Serializing the data by the model's serialize method
61
- item = yield (0, Helpers_1.serializeData)(version, item, model.serialize, Enums_1.HandlerTypes.INSERT, req);
62
- // Filtering hidden fields from the response data.
63
- (0, Helpers_1.filterHiddenFields)([item], model.instance.hiddens);
64
- return res.json(item);
65
- });
@@ -1,3 +0,0 @@
1
- import { IRequestPack } from "../Interfaces";
2
- declare const _default: (pack: IRequestPack) => Promise<import("express").Response<any, Record<string, any>>>;
3
- export default _default;
@@ -1,69 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const validatorjs_1 = __importDefault(require("validatorjs"));
16
- const Helpers_1 = require("./Helpers");
17
- const Enums_1 = require("../Enums");
18
- const ApiError_1 = __importDefault(require("../Exceptions/ApiError"));
19
- exports.default = (pack) => __awaiter(void 0, void 0, void 0, function* () {
20
- const { version, model, req, res, database, relation, parentModel } = pack;
21
- const query = database.from(model.instance.table);
22
- // If there is a relation, we should bind it
23
- (0, Helpers_1.addForeignKeyQuery)(req, query, relation, parentModel);
24
- // If there is a deletedAtColumn, it means that this table support soft-delete
25
- (0, Helpers_1.addSoftDeleteQuery)(model, null, query);
26
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforeUpdateQuery, Object.assign(Object.assign({}, pack), { query }));
27
- // We should check the parameter type
28
- const value = req.params[model.instance.primaryKey];
29
- (0, Helpers_1.checkPrimaryKeyValueType)(model, value);
30
- // Adding the main query
31
- let item = yield query.where(model.instance.primaryKey, value).first();
32
- if (!item) {
33
- throw new ApiError_1.default(`The item is not found on ${model.name}.`, Enums_1.StatusCodes.NOT_FOUND);
34
- }
35
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterUpdateQuery, Object.assign(Object.assign({}, pack), { item,
36
- query }));
37
- const requestMethod = req.method;
38
- const fillables = model.instance.getFillableFields(requestMethod);
39
- const formData = (0, Helpers_1.getMergedFormData)(req, fillables);
40
- const validationRules = model.instance.getValidationRules(requestMethod);
41
- if (validationRules) {
42
- // The validation language should be set
43
- validatorjs_1.default.useLang(req.currentLanguage.language);
44
- // Validate the data
45
- const validation = new validatorjs_1.default(formData, validationRules);
46
- if (validation.fails()) {
47
- return res.status(400).json(validation.errors);
48
- }
49
- }
50
- // We should bind the timestamp values
51
- (0, Helpers_1.bindTimestampValues)(formData, model, [Enums_1.TimestampColumns.UPDATED_AT]);
52
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onBeforeUpdate, Object.assign(Object.assign({}, pack), { item,
53
- formData,
54
- query }));
55
- yield query
56
- .where(model.instance.primaryKey, item[model.instance.primaryKey])
57
- .update(formData);
58
- item = yield database(model.instance.table)
59
- .where(model.instance.primaryKey, item[model.instance.primaryKey])
60
- .first();
61
- yield (0, Helpers_1.callHooks)(model, Enums_1.HookFunctionTypes.onAfterUpdate, Object.assign(Object.assign({}, pack), { item,
62
- formData,
63
- query }));
64
- // Serializing the data by the model's serialize method
65
- item = yield (0, Helpers_1.serializeData)(version, item, model.serialize, Enums_1.HandlerTypes.UPDATE, req);
66
- // Filtering hidden fields from the response data.
67
- (0, Helpers_1.filterHiddenFields)([item], model.instance.hiddens);
68
- return res.json(item);
69
- });
@@ -1,3 +0,0 @@
1
- import { Request, Response, NextFunction } from "express";
2
- declare const _default: (req: Request, res: Response, next: NextFunction) => Promise<void>;
3
- export default _default;
@@ -1,2 +0,0 @@
1
- import acceptLanguageMiddleware from "./acceptLanguageMiddleware";
2
- export { acceptLanguageMiddleware };