axe-api 1.0.0-rc9 → 1.0.0
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/index.d.ts +1 -0
- package/build/index.js +1 -0
- package/build/src/Builders/IndexBuilder.d.ts +7 -0
- package/build/src/Builders/IndexBuilder.js +35 -0
- package/build/src/Builders/ModelTreeBuilder.js +2 -1
- package/build/src/Builders/RouterBuilder.js +22 -11
- package/build/src/Builders/SwaggerBuilder.d.ts +2 -0
- package/build/src/Builders/SwaggerBuilder.js +609 -0
- package/build/src/Enums.d.ts +6 -1
- package/build/src/Enums.js +7 -1
- package/build/src/Handlers/DocsHandler.js +41 -0
- package/build/src/Handlers/ErrorHandler.d.ts +6 -0
- package/build/src/Handlers/ErrorHandler.js +12 -0
- package/build/src/Handlers/Helpers.d.ts +16 -4
- package/build/src/Handlers/Helpers.js +202 -5
- package/build/src/Handlers/RequestHandler.d.ts +4 -1
- package/build/src/Handlers/RequestHandler.js +36 -40
- package/build/src/Handlers/{DocsHTMLHandler.js → SwaggerHandler.js} +8 -7
- package/build/src/Interfaces.d.ts +103 -35
- package/build/src/Middlewares/RateLimit/AdaptorFactory.d.ts +3 -3
- package/build/src/Middlewares/RateLimit/MemoryAdaptor.d.ts +2 -2
- package/build/src/Middlewares/RateLimit/RedisAdaptor.d.ts +12 -4
- package/build/src/Middlewares/RateLimit/RedisAdaptor.js +24 -0
- package/build/src/Middlewares/RateLimit/index.d.ts +22 -3
- package/build/src/Middlewares/RateLimit/index.js +23 -3
- package/build/src/Model.d.ts +256 -10
- package/build/src/Model.js +322 -30
- package/build/src/Phases/All/FetchPhase.d.ts +2 -2
- package/build/src/Phases/All/PreparePhase.d.ts +2 -2
- package/build/src/Phases/All/index.d.ts +1 -1
- package/build/src/Phases/CacheTagCleanPhase.d.ts +3 -0
- package/build/src/{Handlers/MetadataHandler.js → Phases/CacheTagCleanPhase.js} +6 -10
- package/build/src/Phases/Delete/ActionPhase.d.ts +2 -2
- package/build/src/Phases/Delete/ActionPhase.js +21 -2
- package/build/src/Phases/Delete/PreparePhase.d.ts +2 -2
- package/build/src/Phases/Delete/QueryPhase.d.ts +2 -2
- package/build/src/Phases/Delete/ResponsePhase.d.ts +2 -2
- package/build/src/Phases/Delete/ResponsePhase.js +2 -1
- package/build/src/Phases/Delete/index.d.ts +4 -4
- package/build/src/Phases/ForceDelete/ActionPhase.d.ts +2 -2
- package/build/src/Phases/ForceDelete/ActionPhase.js +7 -0
- package/build/src/Phases/ForceDelete/PreparePhase.d.ts +2 -2
- package/build/src/Phases/ForceDelete/QueryPhase.d.ts +2 -2
- package/build/src/Phases/ForceDelete/index.d.ts +3 -3
- package/build/src/Phases/GetCachePhase.d.ts +3 -0
- package/build/src/Phases/GetCachePhase.js +39 -0
- package/build/src/Phases/List/RelationalPhase.d.ts +2 -2
- package/build/src/Phases/List/ResultPhase.d.ts +2 -2
- package/build/src/Phases/List/ResultPhase.js +9 -1
- package/build/src/Phases/List/SerializePhase.d.ts +2 -2
- package/build/src/Phases/List/index.d.ts +3 -3
- package/build/src/Phases/Paginate/FetchPhase.d.ts +2 -2
- package/build/src/Phases/Paginate/PreparePhase.d.ts +2 -2
- package/build/src/Phases/Paginate/index.d.ts +2 -2
- package/build/src/Phases/Patch/PrepareActionPhase.d.ts +2 -2
- package/build/src/Phases/Patch/PrepareActionPhase.js +13 -10
- package/build/src/Phases/Patch/index.d.ts +1 -1
- package/build/src/Phases/Search/FetchPhase.d.ts +3 -0
- package/build/src/Phases/Search/FetchPhase.js +66 -0
- package/build/src/Phases/Search/PreparePhase.d.ts +3 -0
- package/build/src/Phases/Search/PreparePhase.js +19 -0
- package/build/src/Phases/Search/index.d.ts +5 -0
- package/build/src/Phases/Search/index.js +11 -0
- package/build/src/Phases/Show/FetchPhase.d.ts +2 -2
- package/build/src/Phases/Show/FetchPhase.js +11 -1
- package/build/src/Phases/Show/PreparePhase.d.ts +2 -2
- package/build/src/Phases/Show/PreparePhase.js +5 -13
- package/build/src/Phases/Show/index.d.ts +2 -2
- package/build/src/Phases/Single/GetPhase.d.ts +2 -2
- package/build/src/Phases/Single/PrepareGetPhase.d.ts +2 -2
- package/build/src/Phases/Single/RelationalPhase.d.ts +2 -2
- package/build/src/Phases/Single/ResultPhase.d.ts +2 -2
- package/build/src/Phases/Single/ResultPhase.js +9 -1
- package/build/src/Phases/Single/SerializePhase.d.ts +2 -2
- package/build/src/Phases/Single/index.d.ts +5 -5
- package/build/src/Phases/Store/ActionPhase.d.ts +2 -2
- package/build/src/Phases/Store/ActionPhase.js +18 -7
- package/build/src/Phases/Store/PreparePhase.d.ts +2 -2
- package/build/src/Phases/Store/PreparePhase.js +14 -9
- package/build/src/Phases/Store/ResultPhase.d.ts +3 -0
- package/build/src/Phases/Store/ResultPhase.js +23 -0
- package/build/src/Phases/Store/index.d.ts +3 -2
- package/build/src/Phases/Store/index.js +2 -0
- package/build/src/Phases/URLSearchParamPhase.d.ts +3 -0
- package/build/src/Phases/URLSearchParamPhase.js +37 -0
- package/build/src/Phases/Update/ActionPhase.d.ts +2 -2
- package/build/src/Phases/Update/ActionPhase.js +14 -3
- package/build/src/Phases/Update/PrepareActionPhase.d.ts +2 -2
- package/build/src/Phases/Update/PrepareActionPhase.js +13 -10
- package/build/src/Phases/Update/index.d.ts +2 -2
- package/build/src/Resolvers/ModelResolver.d.ts +1 -0
- package/build/src/Resolvers/ModelResolver.js +21 -2
- package/build/src/Resolvers/TransactionResolver.js +3 -15
- package/build/src/Resolvers/VersionConfigResolver.js +6 -1
- package/build/src/Resolvers/VersionResolver.js +1 -0
- package/build/src/Server.d.ts +5 -0
- package/build/src/Server.js +44 -11
- package/build/src/Services/APIService.d.ts +3 -3
- package/build/src/Services/APIService.js +3 -16
- package/build/src/Services/App.d.ts +94 -8
- package/build/src/Services/App.js +94 -29
- package/build/src/Services/AxeRequest.d.ts +51 -2
- package/build/src/Services/AxeRequest.js +51 -4
- package/build/src/Services/AxeResponse.d.ts +28 -1
- package/build/src/Services/AxeResponse.js +28 -0
- package/build/src/Services/ConverterService.d.ts +5 -3
- package/build/src/Services/DocumentationService.d.ts +5 -2
- package/build/src/Services/DocumentationService.js +13 -1
- package/build/src/Services/ElasticService.d.ts +14 -0
- package/build/src/Services/ElasticService.js +74 -0
- package/build/src/Services/IoCService.d.ts +29 -2
- package/build/src/Services/IoCService.js +33 -6
- package/build/src/Services/LimitService.d.ts +18 -0
- package/build/src/Services/LimitService.js +18 -0
- package/build/src/Services/ModelService.d.ts +9 -5
- package/build/src/Services/ModelService.js +11 -0
- package/build/src/Services/QueryService.d.ts +3 -3
- package/build/src/Services/QueryService.js +6 -0
- package/build/src/Services/SchemaValidatorService.d.ts +1 -0
- package/build/src/Services/SchemaValidatorService.js +4 -0
- package/build/src/Services/URLService.d.ts +6 -14
- package/build/src/Services/URLService.js +10 -8
- package/build/src/Steps/Event.d.ts +11 -0
- package/build/src/Steps/Event.js +17 -0
- package/build/src/Steps/Hook.d.ts +11 -0
- package/build/src/Steps/Hook.js +17 -0
- package/build/src/Steps/Phase.d.ts +11 -0
- package/build/src/Steps/Phase.js +18 -0
- package/build/src/Types.d.ts +12 -10
- package/build/src/constants.d.ts +8 -9
- package/build/src/constants.js +215 -152
- package/package.json +46 -36
- package/build/src/Middlewares/RateLimit/IAdaptor.d.ts +0 -6
- package/build/src/Middlewares/RateLimit/IAdaptor.js +0 -2
- /package/build/src/Handlers/{DocsHTMLHandler.d.ts → DocsHandler.d.ts} +0 -0
- /package/build/src/Handlers/{MetadataHandler.d.ts → SwaggerHandler.d.ts} +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -9,14 +9,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const
|
|
13
|
-
exports.default = (
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
versions: api.versions.map((version) => {
|
|
19
|
-
return Object.assign(Object.assign({}, version), { config: Object.assign(Object.assign({}, version.config), { transaction: undefined }), folders: undefined, modelList: undefined, models: version.modelList.get() });
|
|
20
|
-
}),
|
|
21
|
-
});
|
|
12
|
+
const Helpers_1 = require("../Handlers/Helpers");
|
|
13
|
+
exports.default = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
14
|
+
const { item, model, handlerType } = context;
|
|
15
|
+
const { primaryKey } = model.instance;
|
|
16
|
+
const config = model.getCacheConfiguration(handlerType);
|
|
17
|
+
(0, Helpers_1.clearCacheTags)((0, Helpers_1.toCacheTagKey)(model, item[primaryKey], config));
|
|
22
18
|
});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -9,16 +9,35 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const Services_1 = require("../../Services");
|
|
13
|
+
const Helpers_1 = require("../../Handlers/Helpers");
|
|
12
14
|
exports.default = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
|
+
const { model, req } = context;
|
|
13
16
|
if (context.query) {
|
|
14
17
|
// If there is a deletedAtColumn, it means that this table support soft-delete
|
|
15
|
-
if (
|
|
18
|
+
if (model.instance.deletedAtColumn) {
|
|
16
19
|
yield context.query.update({
|
|
17
|
-
[
|
|
20
|
+
[model.instance.deletedAtColumn]: new Date(),
|
|
18
21
|
});
|
|
22
|
+
// Fetching the latest version of the item
|
|
23
|
+
const item = yield context
|
|
24
|
+
.database(model.instance.table)
|
|
25
|
+
.where(model.instance.primaryKey, req.params[model.instance.primaryKey])
|
|
26
|
+
.first();
|
|
27
|
+
// Updat the index values
|
|
28
|
+
if (model.instance.search) {
|
|
29
|
+
const elastic = yield Services_1.IoCService.use("Elastic");
|
|
30
|
+
const body = (0, Helpers_1.getSearchData)(model, item);
|
|
31
|
+
yield elastic.update(model.name, context.item[model.instance.primaryKey], body);
|
|
32
|
+
}
|
|
19
33
|
}
|
|
20
34
|
else {
|
|
21
35
|
yield context.query.delete();
|
|
36
|
+
// Updat the index values
|
|
37
|
+
if (model.instance.search) {
|
|
38
|
+
const elastic = yield Services_1.IoCService.use("Elastic");
|
|
39
|
+
yield elastic.delete(model.name, context.item[model.instance.primaryKey]);
|
|
40
|
+
}
|
|
22
41
|
}
|
|
23
42
|
}
|
|
24
43
|
});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -10,5 +10,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.default = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13
|
-
context
|
|
13
|
+
const { res } = context;
|
|
14
|
+
res.noContent();
|
|
14
15
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
|
-
ActionPhase: (context: import("../../Interfaces").
|
|
3
|
-
PreparePhase: (context: import("../../Interfaces").
|
|
4
|
-
QueryPhase: (context: import("../../Interfaces").
|
|
5
|
-
ResponsePhase: (context: import("../../Interfaces").
|
|
2
|
+
ActionPhase: (context: import("../../Interfaces").IContext) => Promise<void>;
|
|
3
|
+
PreparePhase: (context: import("../../Interfaces").IContext) => Promise<void>;
|
|
4
|
+
QueryPhase: (context: import("../../Interfaces").IContext) => Promise<void>;
|
|
5
|
+
ResponsePhase: (context: import("../../Interfaces").IContext) => Promise<void>;
|
|
6
6
|
};
|
|
7
7
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -9,8 +9,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const Services_1 = require("../../Services");
|
|
12
13
|
exports.default = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
14
|
+
const { model } = context;
|
|
13
15
|
if (context.query) {
|
|
14
16
|
yield context.query.delete();
|
|
17
|
+
// Updat the index values
|
|
18
|
+
if (model.instance.search) {
|
|
19
|
+
const elastic = yield Services_1.IoCService.use("Elastic");
|
|
20
|
+
yield elastic.delete(model.name, context.item[model.instance.primaryKey]);
|
|
21
|
+
}
|
|
15
22
|
}
|
|
16
23
|
});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
|
-
ActionPhase: (context: import("../../Interfaces").
|
|
3
|
-
PreparePhase: (context: import("../../Interfaces").
|
|
4
|
-
QueryPhase: (context: import("../../Interfaces").
|
|
2
|
+
ActionPhase: (context: import("../../Interfaces").IContext) => Promise<void>;
|
|
3
|
+
PreparePhase: (context: import("../../Interfaces").IContext) => Promise<void>;
|
|
4
|
+
QueryPhase: (context: import("../../Interfaces").IContext) => Promise<void>;
|
|
5
5
|
};
|
|
6
6
|
export default _default;
|
|
@@ -0,0 +1,39 @@
|
|
|
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 Services_1 = require("../Services");
|
|
13
|
+
const Helpers_1 = require("../Handlers/Helpers");
|
|
14
|
+
exports.default = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
|
+
// Getting the correct configuration
|
|
16
|
+
const { model, handlerType } = context;
|
|
17
|
+
const config = model.getCacheConfiguration(handlerType);
|
|
18
|
+
// Check if the cache enable for this handler
|
|
19
|
+
if (config === null || config === void 0 ? void 0 : config.enable) {
|
|
20
|
+
// Getting the redis service
|
|
21
|
+
const redis = yield Services_1.IoCService.use("Redis");
|
|
22
|
+
// Generating the cache key
|
|
23
|
+
const key = (0, Helpers_1.toCacheKey)(context);
|
|
24
|
+
// Try to fetch the value via Redis
|
|
25
|
+
const value = yield redis.get(key);
|
|
26
|
+
// Check if there is a value
|
|
27
|
+
if (value) {
|
|
28
|
+
// Parse and respond the value
|
|
29
|
+
const result = JSON.parse(value);
|
|
30
|
+
const { res } = context;
|
|
31
|
+
if (config.responseHeader) {
|
|
32
|
+
res.header(config.responseHeader, "Hit");
|
|
33
|
+
}
|
|
34
|
+
res.json(result);
|
|
35
|
+
// Logging
|
|
36
|
+
Services_1.LogService.debug(`\t🔄 redis.get(${key})`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -9,6 +9,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const Helpers_1 = require("../../Handlers/Helpers");
|
|
12
13
|
exports.default = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13
|
-
|
|
14
|
+
const { result, res, model, handlerType } = context;
|
|
15
|
+
// Adding cache tags
|
|
16
|
+
const { primaryKey } = model.instance;
|
|
17
|
+
const config = model.getCacheConfiguration(handlerType);
|
|
18
|
+
context.req.original.tags.push(...result.data.map((i) => (0, Helpers_1.toCacheTagKey)(model, i[primaryKey], config)));
|
|
19
|
+
// Caching the results
|
|
20
|
+
yield (0, Helpers_1.putCache)(context, result);
|
|
21
|
+
res.json(result);
|
|
14
22
|
});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
|
-
RelationalPhase: (context: import("../../Interfaces").
|
|
3
|
-
ResultPhase: (context: import("../../Interfaces").
|
|
4
|
-
SerializePhase: (context: import("../../Interfaces").
|
|
2
|
+
RelationalPhase: (context: import("../../Interfaces").IContext) => Promise<void>;
|
|
3
|
+
ResultPhase: (context: import("../../Interfaces").IContext) => Promise<void>;
|
|
4
|
+
SerializePhase: (context: import("../../Interfaces").IContext) => Promise<void>;
|
|
5
5
|
};
|
|
6
6
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
|
-
PreparePhase: (context: import("../../Interfaces").
|
|
3
|
-
FetchPhase: (context: import("../../Interfaces").
|
|
2
|
+
PreparePhase: (context: import("../../Interfaces").IContext) => Promise<void>;
|
|
3
|
+
FetchPhase: (context: import("../../Interfaces").IContext) => Promise<void>;
|
|
4
4
|
};
|
|
5
5
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -16,22 +16,25 @@ const validatorjs_1 = __importDefault(require("validatorjs"));
|
|
|
16
16
|
const Enums_1 = require("../../Enums");
|
|
17
17
|
const Helpers_1 = require("../../Handlers/Helpers");
|
|
18
18
|
exports.default = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
const fillables =
|
|
22
|
-
context.formData = Object.assign(Object.assign({}, context.item), (0, Helpers_1.getMergedFormData)(
|
|
23
|
-
const validationRules =
|
|
19
|
+
const { req, res, model } = context;
|
|
20
|
+
const requestMethod = req.method;
|
|
21
|
+
const fillables = model.instance.getFillableFields(requestMethod);
|
|
22
|
+
context.formData = Object.assign(Object.assign({}, context.item), (0, Helpers_1.getMergedFormData)(req, fillables));
|
|
23
|
+
const validationRules = model.instance.getValidationRules(requestMethod);
|
|
24
24
|
if (validationRules) {
|
|
25
25
|
// The validation language should be set
|
|
26
|
-
validatorjs_1.default.useLang(
|
|
26
|
+
validatorjs_1.default.useLang(req.currentLanguage.language);
|
|
27
27
|
// Validate the data
|
|
28
28
|
const validation = new validatorjs_1.default(context.formData, validationRules);
|
|
29
29
|
if (validation.fails()) {
|
|
30
|
-
return
|
|
30
|
+
return res.status(Enums_1.StatusCodes.BAD_REQUEST).json(validation.errors);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
+
// Checking the foreign key values if there is any
|
|
34
|
+
const errors = yield (0, Helpers_1.getForeignKeyValueErrors)(context);
|
|
35
|
+
if (errors.length > 0) {
|
|
36
|
+
return res.status(Enums_1.StatusCodes.BAD_REQUEST).json({ errors });
|
|
37
|
+
}
|
|
33
38
|
// We should bind the timestamp values
|
|
34
|
-
(0, Helpers_1.bindTimestampValues)(context.formData,
|
|
35
|
-
Enums_1.TimestampColumns.UPDATED_AT,
|
|
36
|
-
]);
|
|
39
|
+
(0, Helpers_1.bindTimestampValues)(context.formData, model, [Enums_1.TimestampColumns.UPDATED_AT]);
|
|
37
40
|
});
|
|
@@ -0,0 +1,66 @@
|
|
|
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 Services_1 = require("../../Services");
|
|
13
|
+
const Enums_1 = require("../../Enums");
|
|
14
|
+
exports.default = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
|
+
var _a;
|
|
16
|
+
const { req, res, model, database, relation, parentModel } = context;
|
|
17
|
+
if (!context.query || !context.queryParser || !context.conditions) {
|
|
18
|
+
return res.status(500).json({ error: "Query is not parsed!" });
|
|
19
|
+
}
|
|
20
|
+
const { page, per_page, text } = context.conditions;
|
|
21
|
+
// The text parameter is required
|
|
22
|
+
if (!text || text.trim().length === 0) {
|
|
23
|
+
return res
|
|
24
|
+
.status(Enums_1.StatusCodes.BAD_REQUEST)
|
|
25
|
+
.json({ error: "`text` parameter is required" });
|
|
26
|
+
}
|
|
27
|
+
const elastic = yield Services_1.IoCService.use("Elastic");
|
|
28
|
+
// We are using the default query prepare strategy. But developers are able to
|
|
29
|
+
// create their own custom logic if they want.
|
|
30
|
+
const esQuery = model.instance.getSearchQuery({
|
|
31
|
+
req,
|
|
32
|
+
model,
|
|
33
|
+
relation,
|
|
34
|
+
parentModel,
|
|
35
|
+
text: text || "",
|
|
36
|
+
});
|
|
37
|
+
// Getting the data from Elastic Search
|
|
38
|
+
const result = yield elastic.search(model.name, page, per_page, esQuery);
|
|
39
|
+
const ids = result.hits.hits.map((item) => item._id);
|
|
40
|
+
// Preparing the query to fetch the items via database
|
|
41
|
+
context.query = database
|
|
42
|
+
.from(context.model.instance.table)
|
|
43
|
+
.whereIn(model.instance.primaryKey, ids);
|
|
44
|
+
// Users should be able to select some fields to show.
|
|
45
|
+
context.queryParser.applyFields(context.query, context.conditions.fields);
|
|
46
|
+
// Fetching the data
|
|
47
|
+
const data = yield context.query;
|
|
48
|
+
// Calculating the pagination values
|
|
49
|
+
const from = (page - 1) * per_page;
|
|
50
|
+
const to = from + per_page;
|
|
51
|
+
const total = result.hits.total
|
|
52
|
+
? (_a = result.hits.total) === null || _a === void 0 ? void 0 : _a.value
|
|
53
|
+
: 1;
|
|
54
|
+
// Creates the reesponses
|
|
55
|
+
context.result = {
|
|
56
|
+
data,
|
|
57
|
+
pagination: {
|
|
58
|
+
total,
|
|
59
|
+
lastPage: Math.ceil(total / per_page),
|
|
60
|
+
per_page,
|
|
61
|
+
currentPage: page,
|
|
62
|
+
from,
|
|
63
|
+
to,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
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 Services_1 = require("../../Services");
|
|
13
|
+
exports.default = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
14
|
+
context.queryParser = new Services_1.QueryService(context.model, context.version.modelList.get(), context.version.config);
|
|
15
|
+
// We should parse URL query string to use as condition in Lucid query
|
|
16
|
+
context.conditions = context.queryParser.get(context.req.query);
|
|
17
|
+
// Creating a new database query
|
|
18
|
+
context.query = context.database.from(context.model.instance.table);
|
|
19
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
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 PreparePhase_1 = __importDefault(require("./PreparePhase"));
|
|
7
|
+
const FetchPhase_1 = __importDefault(require("./FetchPhase"));
|
|
8
|
+
exports.default = {
|
|
9
|
+
PreparePhase: PreparePhase_1.default,
|
|
10
|
+
FetchPhase: FetchPhase_1.default,
|
|
11
|
+
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -10,11 +10,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const Enums_1 = require("../../Enums");
|
|
13
|
+
const Helpers_1 = require("../../Handlers/Helpers");
|
|
13
14
|
exports.default = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
14
15
|
var _a;
|
|
15
|
-
if (context.queryParser && context.query) {
|
|
16
|
+
if (context.queryParser && context.query && context.conditions) {
|
|
16
17
|
// Users should be able to filter records
|
|
17
18
|
context.queryParser.applyWheres(context.query, ((_a = context.conditions) === null || _a === void 0 ? void 0 : _a.q) || []);
|
|
19
|
+
// Users should be able to select some fields to show.
|
|
20
|
+
context.queryParser.applyFields(context.query, context.conditions.fields);
|
|
21
|
+
// If there is a relation, we should bind it
|
|
22
|
+
(0, Helpers_1.addForeignKeyQuery)(context.req, context.query, context.relation, context.parentModel);
|
|
23
|
+
// We should check the parameter type
|
|
24
|
+
const value = context.params[context.model.instance.primaryKey];
|
|
25
|
+
(0, Helpers_1.checkPrimaryKeyValueType)(context.model, value);
|
|
26
|
+
// Adding the main query
|
|
27
|
+
context.query.where(context.model.instance.primaryKey, value);
|
|
18
28
|
context.item = yield context.query.first();
|
|
19
29
|
if (!context.item) {
|
|
20
30
|
context.res
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -12,20 +12,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
const Services_1 = require("../../Services");
|
|
13
13
|
const Helpers_1 = require("../../Handlers/Helpers");
|
|
14
14
|
exports.default = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
|
-
|
|
15
|
+
const { req, model, version, database } = context;
|
|
16
|
+
context.queryParser = new Services_1.QueryService(model, version.modelList.get(), version.config);
|
|
16
17
|
// We should parse URL query string to use as condition in Lucid query
|
|
17
|
-
context.conditions = context.queryParser.get(
|
|
18
|
+
context.conditions = context.queryParser.get(req.query);
|
|
18
19
|
// Fetching item
|
|
19
|
-
context.query =
|
|
20
|
+
context.query = database.from(model.instance.table);
|
|
20
21
|
// If there is a deletedAtColumn, it means that this table support soft-delete
|
|
21
|
-
(0, Helpers_1.addSoftDeleteQuery)(
|
|
22
|
-
// Users should be able to select some fields to show.
|
|
23
|
-
context.queryParser.applyFields(context.query, context.conditions.fields);
|
|
24
|
-
// If there is a relation, we should bind it
|
|
25
|
-
(0, Helpers_1.addForeignKeyQuery)(context.req, context.query, context.relation, context.parentModel);
|
|
26
|
-
// We should check the parameter type
|
|
27
|
-
const value = context.params[context.model.instance.primaryKey];
|
|
28
|
-
(0, Helpers_1.checkPrimaryKeyValueType)(context.model, value);
|
|
29
|
-
// Adding the main query
|
|
30
|
-
context.query.where(context.model.instance.primaryKey, value);
|
|
22
|
+
(0, Helpers_1.addSoftDeleteQuery)(model, context.conditions, context.query);
|
|
31
23
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
|
-
PreparePhase: (context: import("../../Interfaces").
|
|
3
|
-
FetchPhase: (context: import("../../Interfaces").
|
|
2
|
+
PreparePhase: (context: import("../../Interfaces").IContext) => Promise<void>;
|
|
3
|
+
FetchPhase: (context: import("../../Interfaces").IContext) => Promise<void>;
|
|
4
4
|
};
|
|
5
5
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|
|
@@ -9,6 +9,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const Helpers_1 = require("../../Handlers/Helpers");
|
|
12
13
|
exports.default = (context) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13
|
-
|
|
14
|
+
const { item, res, model, handlerType } = context;
|
|
15
|
+
// Adding cache tags
|
|
16
|
+
const { primaryKey } = model.instance;
|
|
17
|
+
const config = model.getCacheConfiguration(handlerType);
|
|
18
|
+
context.req.original.tags.push((0, Helpers_1.toCacheTagKey)(model, item[primaryKey], config));
|
|
19
|
+
// Caching the results
|
|
20
|
+
yield (0, Helpers_1.putCache)(context, item);
|
|
21
|
+
res.json(item);
|
|
14
22
|
});
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const _default: (context:
|
|
1
|
+
import { IContext } from "../../Interfaces";
|
|
2
|
+
declare const _default: (context: IContext) => Promise<void>;
|
|
3
3
|
export default _default;
|