axe-api 0.31.4 → 1.0.0-rc10
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.
- package/build/dev-kit.d.ts +1 -0
- package/build/dev-kit.js +16 -0
- package/build/index.d.ts +3 -2
- package/build/index.js +6 -1
- package/build/src/Builders/ModelTreeBuilder.js +1 -2
- package/build/src/Builders/RouterBuilder.d.ts +1 -5
- package/build/src/Builders/RouterBuilder.js +17 -112
- package/build/src/Enums.d.ts +0 -7
- package/build/src/Enums.js +14 -22
- package/build/src/Handlers/DocsHTMLHandler.d.ts +3 -2
- package/build/src/Handlers/Helpers.d.ts +7 -7
- package/build/src/Handlers/MetadataHandler.d.ts +3 -2
- package/build/src/Handlers/RequestHandler.d.ts +3 -0
- package/build/src/Handlers/RequestHandler.js +99 -0
- package/build/src/Handlers/RoutesHandler.d.ts +3 -2
- package/build/src/Helpers.d.ts +1 -3
- package/build/src/Helpers.js +4 -68
- package/build/src/Interfaces.d.ts +74 -35
- package/build/src/Middlewares/RateLimit/AdaptorFactory.d.ts +6 -0
- package/build/src/Middlewares/RateLimit/AdaptorFactory.js +17 -0
- package/build/src/Middlewares/RateLimit/IAdaptor.d.ts +6 -0
- package/build/src/Middlewares/RateLimit/IAdaptor.js +2 -0
- package/build/src/Middlewares/RateLimit/MemoryAdaptor.d.ts +10 -0
- package/build/src/Middlewares/RateLimit/MemoryAdaptor.js +41 -0
- package/build/src/Middlewares/RateLimit/RedisAdaptor.d.ts +11 -0
- package/build/src/Middlewares/RateLimit/RedisAdaptor.js +35 -0
- package/build/src/Middlewares/RateLimit/index.d.ts +6 -0
- package/build/src/Middlewares/RateLimit/index.js +118 -0
- package/build/src/Model.d.ts +4 -4
- package/build/src/Phases/All/FetchPhase.d.ts +3 -0
- package/build/src/{Middlewares/acceptLanguageMiddleware.js → Phases/All/FetchPhase.js} +4 -10
- package/build/src/Phases/All/PreparePhase.d.ts +3 -0
- package/build/src/Phases/All/PreparePhase.js +30 -0
- package/build/src/Phases/All/index.d.ts +4 -0
- package/build/src/{Middlewares → Phases/All}/index.js +4 -3
- package/build/src/Phases/Delete/ActionPhase.d.ts +3 -0
- package/build/src/Phases/Delete/ActionPhase.js +24 -0
- package/build/src/Phases/Delete/PreparePhase.d.ts +3 -0
- package/build/src/Phases/Delete/PreparePhase.js +25 -0
- package/build/src/Phases/Delete/QueryPhase.d.ts +3 -0
- package/build/src/Phases/Delete/QueryPhase.js +22 -0
- package/build/src/Phases/Delete/ResponsePhase.d.ts +3 -0
- package/build/src/Phases/Delete/ResponsePhase.js +14 -0
- package/build/src/Phases/Delete/index.d.ts +7 -0
- package/build/src/Phases/Delete/index.js +15 -0
- package/build/src/Phases/ForceDelete/ActionPhase.d.ts +3 -0
- package/build/src/Phases/ForceDelete/ActionPhase.js +16 -0
- package/build/src/Phases/ForceDelete/PreparePhase.d.ts +3 -0
- package/build/src/Phases/ForceDelete/PreparePhase.js +30 -0
- package/build/src/Phases/ForceDelete/QueryPhase.d.ts +3 -0
- package/build/src/Phases/ForceDelete/QueryPhase.js +22 -0
- package/build/src/Phases/ForceDelete/index.d.ts +6 -0
- package/build/src/Phases/ForceDelete/index.js +13 -0
- package/build/src/Phases/List/RelationalPhase.d.ts +3 -0
- package/build/src/Phases/List/RelationalPhase.js +17 -0
- package/build/src/Phases/List/ResultPhase.d.ts +3 -0
- package/build/src/Phases/List/ResultPhase.js +14 -0
- package/build/src/Phases/List/SerializePhase.d.ts +3 -0
- package/build/src/Phases/List/SerializePhase.js +19 -0
- package/build/src/Phases/List/index.d.ts +6 -0
- package/build/src/Phases/List/index.js +13 -0
- package/build/src/Phases/Paginate/FetchPhase.d.ts +3 -0
- package/build/src/Phases/Paginate/FetchPhase.js +30 -0
- package/build/src/Phases/Paginate/PreparePhase.d.ts +3 -0
- package/build/src/Phases/Paginate/PreparePhase.js +22 -0
- package/build/src/Phases/Paginate/index.d.ts +5 -0
- package/build/src/Phases/Paginate/index.js +11 -0
- package/build/src/Phases/Patch/PrepareActionPhase.d.ts +3 -0
- package/build/src/Phases/Patch/PrepareActionPhase.js +37 -0
- package/build/src/Phases/Patch/index.d.ts +4 -0
- package/build/src/Phases/Patch/index.js +9 -0
- package/build/src/Phases/Show/FetchPhase.d.ts +3 -0
- package/build/src/Phases/Show/FetchPhase.js +35 -0
- package/build/src/Phases/Show/PreparePhase.d.ts +3 -0
- package/build/src/Phases/Show/PreparePhase.js +22 -0
- package/build/src/Phases/Show/index.d.ts +5 -0
- package/build/src/Phases/Show/index.js +11 -0
- package/build/src/Phases/Single/GetPhase.d.ts +3 -0
- package/build/src/Phases/Single/GetPhase.js +29 -0
- package/build/src/Phases/Single/PrepareGetPhase.d.ts +3 -0
- package/build/src/Phases/Single/PrepareGetPhase.js +19 -0
- package/build/src/Phases/Single/RelationalPhase.d.ts +3 -0
- package/build/src/Phases/Single/RelationalPhase.js +17 -0
- package/build/src/Phases/Single/ResultPhase.d.ts +3 -0
- package/build/src/Phases/Single/ResultPhase.js +14 -0
- package/build/src/Phases/Single/SerializePhase.d.ts +3 -0
- package/build/src/Phases/Single/SerializePhase.js +18 -0
- package/build/src/Phases/Single/index.d.ts +8 -0
- package/build/src/Phases/Single/index.js +17 -0
- package/build/src/Phases/Store/ActionPhase.d.ts +3 -0
- package/build/src/Phases/Store/ActionPhase.js +29 -0
- package/build/src/Phases/Store/PreparePhase.d.ts +3 -0
- package/build/src/Phases/Store/PreparePhase.js +46 -0
- package/build/src/Phases/Store/index.d.ts +5 -0
- package/build/src/Phases/Store/index.js +11 -0
- package/build/src/Phases/Update/ActionPhase.d.ts +3 -0
- package/build/src/Phases/Update/ActionPhase.js +22 -0
- package/build/src/Phases/Update/PrepareActionPhase.d.ts +3 -0
- package/build/src/Phases/Update/PrepareActionPhase.js +37 -0
- package/build/src/Phases/Update/index.d.ts +5 -0
- package/build/src/Phases/Update/index.js +11 -0
- package/build/src/Resolvers/ModelResolver.js +9 -4
- package/build/src/Resolvers/VersionConfigResolver.js +6 -1
- package/build/src/Resolvers/VersionResolver.js +1 -2
- package/build/src/Server.d.ts +0 -1
- package/build/src/Server.js +29 -24
- package/build/src/Services/APIService.d.ts +3 -3
- package/build/src/Services/APIService.js +3 -8
- package/build/src/Services/App.d.ts +14 -0
- package/build/src/Services/App.js +80 -0
- package/build/src/Services/AxeRequest.d.ts +26 -0
- package/build/src/Services/AxeRequest.js +85 -0
- package/build/src/Services/AxeResponse.d.ts +18 -0
- package/build/src/Services/AxeResponse.js +41 -0
- package/build/src/Services/ConverterService.d.ts +9 -0
- package/build/src/Services/ConverterService.js +49 -0
- package/build/src/Services/LogService.d.ts +8 -12
- package/build/src/Services/LogService.js +16 -34
- package/build/src/Services/ModelService.d.ts +4 -4
- package/build/src/Services/QueryService.d.ts +4 -4
- package/build/src/Services/QueryService.js +14 -11
- package/build/src/Services/SchemaValidatorService.js +1 -2
- package/build/src/Services/URLService.d.ts +29 -0
- package/build/src/Services/URLService.js +144 -0
- package/build/src/Services/index.d.ts +4 -1
- package/build/src/Services/index.js +7 -1
- package/build/src/Types.d.ts +18 -6
- package/build/src/constants.d.ts +12 -14
- package/build/src/constants.js +200 -13
- package/package.json +29 -20
- package/build/src/Handlers/AllHandler.d.ts +0 -3
- package/build/src/Handlers/AllHandler.js +0 -45
- package/build/src/Handlers/DestroyHandler.d.ts +0 -3
- package/build/src/Handlers/DestroyHandler.js +0 -51
- package/build/src/Handlers/ForceDestroyHandler.d.ts +0 -3
- package/build/src/Handlers/ForceDestroyHandler.js +0 -45
- package/build/src/Handlers/HandlerFactory.d.ts +0 -6
- package/build/src/Handlers/HandlerFactory.js +0 -39
- package/build/src/Handlers/PaginateHandler.d.ts +0 -3
- package/build/src/Handlers/PaginateHandler.js +0 -49
- package/build/src/Handlers/PatchHandler.d.ts +0 -3
- package/build/src/Handlers/PatchHandler.js +0 -69
- package/build/src/Handlers/ShowHandler.d.ts +0 -3
- package/build/src/Handlers/ShowHandler.js +0 -55
- package/build/src/Handlers/StoreHandler.d.ts +0 -3
- package/build/src/Handlers/StoreHandler.js +0 -65
- package/build/src/Handlers/UpdateHandler.d.ts +0 -3
- package/build/src/Handlers/UpdateHandler.js +0 -69
- package/build/src/Middlewares/acceptLanguageMiddleware.d.ts +0 -3
- package/build/src/Middlewares/index.d.ts +0 -2
|
@@ -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,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,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,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
|
-
});
|