@elsikora/nestjs-crud-automator 1.18.0-dev.1 → 1.19.0-dev.1
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/dist/cjs/class/index.d.ts +1 -0
- package/dist/cjs/class/utility/dto/exception/details/foreign-key-violation.class.d.ts +11 -0
- package/dist/cjs/class/utility/dto/exception/details/foreign-key-violation.class.js +142 -0
- package/dist/cjs/class/utility/dto/exception/details/foreign-key-violation.class.js.map +1 -0
- package/dist/cjs/class/utility/dto/exception/details/index.d.ts +2 -0
- package/dist/cjs/class/utility/dto/exception/details/unique-violation.class.d.ts +9 -0
- package/dist/cjs/class/utility/dto/exception/details/unique-violation.class.js +114 -0
- package/dist/cjs/class/utility/dto/exception/details/unique-violation.class.js.map +1 -0
- package/dist/cjs/class/utility/dto/exception/index.d.ts +1 -0
- package/dist/cjs/decorator/api/function/create.decorator.js +28 -2
- package/dist/cjs/decorator/api/function/create.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/function/delete.decorator.js +20 -2
- package/dist/cjs/decorator/api/function/delete.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/function/get-list.decorator.js +11 -2
- package/dist/cjs/decorator/api/function/get-list.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/function/get-many.decorator.js +11 -2
- package/dist/cjs/decorator/api/function/get-many.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/function/get.decorator.js +11 -2
- package/dist/cjs/decorator/api/function/get.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/function/update.decorator.js +28 -2
- package/dist/cjs/decorator/api/function/update.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/method.decorator.js +6 -0
- package/dist/cjs/decorator/api/method.decorator.js.map +1 -1
- package/dist/cjs/decorator/api/service.decorator.js +2 -0
- package/dist/cjs/decorator/api/service.decorator.js.map +1 -1
- package/dist/cjs/enum/utility/exception-details/index.d.ts +1 -0
- package/dist/cjs/enum/utility/exception-details/type.enum.d.ts +4 -0
- package/dist/cjs/enum/utility/exception-details/type.enum.js +8 -0
- package/dist/cjs/enum/utility/exception-details/type.enum.js.map +1 -0
- package/dist/cjs/factory/api/controller.factory.js +4 -8
- package/dist/cjs/factory/api/controller.factory.js.map +1 -1
- package/dist/cjs/index.js +18 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interceptor/correlation-id-response-body.interceptor.js +42 -10
- package/dist/cjs/interceptor/correlation-id-response-body.interceptor.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/utility/api/controller/apply-decorators.utility.js +3 -3
- package/dist/cjs/utility/api/controller/apply-decorators.utility.js.map +1 -1
- package/dist/cjs/utility/api/controller/apply-metadata.utility.js +4 -1
- package/dist/cjs/utility/api/controller/apply-metadata.utility.js.map +1 -1
- package/dist/cjs/utility/api/controller/get-list/transform-filter.utility.js +1 -1
- package/dist/cjs/utility/api/controller/get-list/transform-filter.utility.js.map +1 -1
- package/dist/cjs/utility/api/controller/write-dto-swagger.utility.js +4 -1
- package/dist/cjs/utility/api/controller/write-dto-swagger.utility.js.map +1 -1
- package/dist/cjs/utility/api/filter-order-by-from-entity.utility.js +1 -1
- package/dist/cjs/utility/api/filter-order-by-from-entity.utility.js.map +1 -1
- package/dist/cjs/utility/database/index.d.ts +1 -0
- package/dist/cjs/utility/database/typeorm/get/foreign-key-violation-details.utility.d.ts +16 -0
- package/dist/cjs/utility/database/typeorm/get/foreign-key-violation-details.utility.js +105 -0
- package/dist/cjs/utility/database/typeorm/get/foreign-key-violation-details.utility.js.map +1 -0
- package/dist/cjs/utility/database/typeorm/get/index.d.ts +2 -0
- package/dist/cjs/utility/database/typeorm/get/unique-violation-details.utility.d.ts +14 -0
- package/dist/cjs/utility/database/typeorm/get/unique-violation-details.utility.js +90 -0
- package/dist/cjs/utility/database/typeorm/get/unique-violation-details.utility.js.map +1 -0
- package/dist/cjs/utility/database/typeorm/index.d.ts +6 -0
- package/dist/cjs/utility/database/typeorm/is/entity/index.d.ts +2 -0
- package/dist/cjs/utility/database/typeorm/is/entity/metadata-not-found.utility.d.ts +7 -0
- package/dist/cjs/utility/database/typeorm/is/entity/metadata-not-found.utility.js +27 -0
- package/dist/cjs/utility/database/typeorm/is/entity/metadata-not-found.utility.js.map +1 -0
- package/dist/cjs/utility/database/typeorm/is/entity/not-found.utility.d.ts +6 -0
- package/dist/cjs/utility/database/typeorm/is/entity/not-found.utility.js +26 -0
- package/dist/cjs/utility/database/typeorm/is/entity/not-found.utility.js.map +1 -0
- package/dist/cjs/utility/database/typeorm/is/foreign-key-violation.utility.d.ts +7 -0
- package/dist/cjs/utility/database/typeorm/is/foreign-key-violation.utility.js +91 -0
- package/dist/cjs/utility/database/typeorm/is/foreign-key-violation.utility.js.map +1 -0
- package/dist/cjs/utility/database/typeorm/is/index.d.ts +3 -0
- package/dist/cjs/utility/database/typeorm/is/unique-violation.utility.d.ts +7 -0
- package/dist/cjs/utility/database/typeorm/is/unique-violation.utility.js +81 -0
- package/dist/cjs/utility/database/typeorm/is/unique-violation.utility.js.map +1 -0
- package/dist/cjs/utility/dto/generate-exception.utility.js +33 -10
- package/dist/cjs/utility/dto/generate-exception.utility.js.map +1 -1
- package/dist/cjs/utility/format-unknown-for-log.utility.d.ts +6 -0
- package/dist/cjs/utility/format-unknown-for-log.utility.js +31 -0
- package/dist/cjs/utility/format-unknown-for-log.utility.js.map +1 -0
- package/dist/cjs/utility/index.d.ts +2 -0
- package/dist/cjs/utility/logger.utility.js +1 -1
- package/dist/cjs/utility/logger.utility.js.map +1 -1
- package/dist/esm/class/index.d.ts +1 -0
- package/dist/esm/class/utility/dto/exception/details/foreign-key-violation.class.d.ts +11 -0
- package/dist/esm/class/utility/dto/exception/details/foreign-key-violation.class.js +140 -0
- package/dist/esm/class/utility/dto/exception/details/foreign-key-violation.class.js.map +1 -0
- package/dist/esm/class/utility/dto/exception/details/index.d.ts +2 -0
- package/dist/esm/class/utility/dto/exception/details/unique-violation.class.d.ts +9 -0
- package/dist/esm/class/utility/dto/exception/details/unique-violation.class.js +112 -0
- package/dist/esm/class/utility/dto/exception/details/unique-violation.class.js.map +1 -0
- package/dist/esm/class/utility/dto/exception/index.d.ts +1 -0
- package/dist/esm/decorator/api/function/create.decorator.js +29 -3
- package/dist/esm/decorator/api/function/create.decorator.js.map +1 -1
- package/dist/esm/decorator/api/function/delete.decorator.js +21 -3
- package/dist/esm/decorator/api/function/delete.decorator.js.map +1 -1
- package/dist/esm/decorator/api/function/get-list.decorator.js +12 -3
- package/dist/esm/decorator/api/function/get-list.decorator.js.map +1 -1
- package/dist/esm/decorator/api/function/get-many.decorator.js +12 -3
- package/dist/esm/decorator/api/function/get-many.decorator.js.map +1 -1
- package/dist/esm/decorator/api/function/get.decorator.js +12 -3
- package/dist/esm/decorator/api/function/get.decorator.js.map +1 -1
- package/dist/esm/decorator/api/function/update.decorator.js +29 -3
- package/dist/esm/decorator/api/function/update.decorator.js.map +1 -1
- package/dist/esm/decorator/api/method.decorator.js +7 -1
- package/dist/esm/decorator/api/method.decorator.js.map +1 -1
- package/dist/esm/decorator/api/property/boolean.decorator.js +1 -1
- package/dist/esm/decorator/api/property/date.decorator.js +1 -1
- package/dist/esm/decorator/api/property/number.decorator.js +2 -2
- package/dist/esm/decorator/api/property/object.decorator.js +1 -1
- package/dist/esm/decorator/api/property/uuid.decorator.js +1 -1
- package/dist/esm/decorator/api/service.decorator.js +2 -0
- package/dist/esm/decorator/api/service.decorator.js.map +1 -1
- package/dist/esm/enum/utility/exception-details/index.d.ts +1 -0
- package/dist/esm/enum/utility/exception-details/type.enum.d.ts +4 -0
- package/dist/esm/enum/utility/exception-details/type.enum.js +8 -0
- package/dist/esm/enum/utility/exception-details/type.enum.js.map +1 -0
- package/dist/esm/factory/api/controller.factory.js +4 -8
- package/dist/esm/factory/api/controller.factory.js.map +1 -1
- package/dist/esm/index.js +9 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interceptor/correlation-id-response-body.interceptor.js +42 -10
- package/dist/esm/interceptor/correlation-id-response-body.interceptor.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/utility/api/controller/apply-decorators.utility.js +3 -3
- package/dist/esm/utility/api/controller/apply-decorators.utility.js.map +1 -1
- package/dist/esm/utility/api/controller/apply-metadata.utility.js +4 -1
- package/dist/esm/utility/api/controller/apply-metadata.utility.js.map +1 -1
- package/dist/esm/utility/api/controller/get-list/transform-filter.utility.js +1 -1
- package/dist/esm/utility/api/controller/get-list/transform-filter.utility.js.map +1 -1
- package/dist/esm/utility/api/controller/write-dto-swagger.utility.js +4 -1
- package/dist/esm/utility/api/controller/write-dto-swagger.utility.js.map +1 -1
- package/dist/esm/utility/api/filter-order-by-from-entity.utility.js +1 -1
- package/dist/esm/utility/api/filter-order-by-from-entity.utility.js.map +1 -1
- package/dist/esm/utility/database/index.d.ts +1 -0
- package/dist/esm/utility/database/typeorm/get/foreign-key-violation-details.utility.d.ts +16 -0
- package/dist/esm/utility/database/typeorm/get/foreign-key-violation-details.utility.js +103 -0
- package/dist/esm/utility/database/typeorm/get/foreign-key-violation-details.utility.js.map +1 -0
- package/dist/esm/utility/database/typeorm/get/index.d.ts +2 -0
- package/dist/esm/utility/database/typeorm/get/unique-violation-details.utility.d.ts +14 -0
- package/dist/esm/utility/database/typeorm/get/unique-violation-details.utility.js +88 -0
- package/dist/esm/utility/database/typeorm/get/unique-violation-details.utility.js.map +1 -0
- package/dist/esm/utility/database/typeorm/index.d.ts +6 -0
- package/dist/esm/utility/database/typeorm/is/entity/index.d.ts +2 -0
- package/dist/esm/utility/database/typeorm/is/entity/metadata-not-found.utility.d.ts +7 -0
- package/dist/esm/utility/database/typeorm/is/entity/metadata-not-found.utility.js +25 -0
- package/dist/esm/utility/database/typeorm/is/entity/metadata-not-found.utility.js.map +1 -0
- package/dist/esm/utility/database/typeorm/is/entity/not-found.utility.d.ts +6 -0
- package/dist/esm/utility/database/typeorm/is/entity/not-found.utility.js +24 -0
- package/dist/esm/utility/database/typeorm/is/entity/not-found.utility.js.map +1 -0
- package/dist/esm/utility/database/typeorm/is/foreign-key-violation.utility.d.ts +7 -0
- package/dist/esm/utility/database/typeorm/is/foreign-key-violation.utility.js +89 -0
- package/dist/esm/utility/database/typeorm/is/foreign-key-violation.utility.js.map +1 -0
- package/dist/esm/utility/database/typeorm/is/index.d.ts +3 -0
- package/dist/esm/utility/database/typeorm/is/unique-violation.utility.d.ts +7 -0
- package/dist/esm/utility/database/typeorm/is/unique-violation.utility.js +79 -0
- package/dist/esm/utility/database/typeorm/is/unique-violation.utility.js.map +1 -0
- package/dist/esm/utility/dto/generate-exception.utility.js +33 -10
- package/dist/esm/utility/dto/generate-exception.utility.js.map +1 -1
- package/dist/esm/utility/format-unknown-for-log.utility.d.ts +6 -0
- package/dist/esm/utility/format-unknown-for-log.utility.js +29 -0
- package/dist/esm/utility/format-unknown-for-log.utility.js.map +1 -0
- package/dist/esm/utility/index.d.ts +2 -0
- package/dist/esm/utility/logger.utility.js +1 -1
- package/dist/esm/utility/logger.utility.js.map +1 -1
- package/package.json +24 -24
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var typeorm = require('typeorm');
|
|
4
|
+
|
|
5
|
+
const POSTGRES_FOREIGN_KEY_VIOLATION_CODE = "23503";
|
|
6
|
+
const MYSQL_CANNOT_ADD_OR_UPDATE_CHILD_ROW_ERRNO = 1452;
|
|
7
|
+
const MYSQL_CANNOT_DELETE_OR_UPDATE_PARENT_ROW_ERRNO = 1451;
|
|
8
|
+
const MSSQL_FOREIGN_KEY_CONSTRAINT_ERROR_NUMBER = 547;
|
|
9
|
+
/**
|
|
10
|
+
* Detects whether a TypeORM QueryFailedError is caused by a FOREIGN KEY constraint violation.
|
|
11
|
+
* Best-effort across major drivers (Postgres/MySQL/MariaDB/SQLite/MSSQL) + message fallback.
|
|
12
|
+
* @param {unknown} error - Error thrown by TypeORM
|
|
13
|
+
* @returns {boolean} True if it looks like a FOREIGN KEY constraint violation
|
|
14
|
+
*/
|
|
15
|
+
function DatabaseTypeOrmIsForeignKeyViolation(error) {
|
|
16
|
+
const isQueryFailedError = error instanceof typeorm.QueryFailedError || (error != null && typeof error === "object" && error.name === "QueryFailedError");
|
|
17
|
+
if (!isQueryFailedError) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
const driverErrorUnknown = error != null && typeof error === "object" ? error.driverError : undefined;
|
|
21
|
+
const driverError = driverErrorUnknown != null && typeof driverErrorUnknown === "object" ? driverErrorUnknown : undefined;
|
|
22
|
+
const code = driverError?.code;
|
|
23
|
+
const errno = driverError?.errno;
|
|
24
|
+
const number = driverError?.number;
|
|
25
|
+
// PostgreSQL (SQLSTATE): foreign_key_violation
|
|
26
|
+
if (code === POSTGRES_FOREIGN_KEY_VIOLATION_CODE) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
// MySQL / MariaDB
|
|
30
|
+
if (code === "ER_NO_REFERENCED_ROW_2" || code === "ER_ROW_IS_REFERENCED_2") {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
if (errno === MYSQL_CANNOT_ADD_OR_UPDATE_CHILD_ROW_ERRNO || errno === String(MYSQL_CANNOT_ADD_OR_UPDATE_CHILD_ROW_ERRNO)) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
if (errno === MYSQL_CANNOT_DELETE_OR_UPDATE_PARENT_ROW_ERRNO || errno === String(MYSQL_CANNOT_DELETE_OR_UPDATE_PARENT_ROW_ERRNO)) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
// SQLite
|
|
40
|
+
if (typeof code === "string" && code.startsWith("SQLITE_CONSTRAINT_FOREIGNKEY")) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
// MSSQL
|
|
44
|
+
if (number === MSSQL_FOREIGN_KEY_CONSTRAINT_ERROR_NUMBER) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
const driverMessage = driverError?.message;
|
|
48
|
+
let message = "";
|
|
49
|
+
if (typeof driverMessage === "string") {
|
|
50
|
+
message = driverMessage;
|
|
51
|
+
}
|
|
52
|
+
else if (error instanceof Error) {
|
|
53
|
+
message = error.message;
|
|
54
|
+
}
|
|
55
|
+
else if (error != null && typeof error === "object" && "message" in error) {
|
|
56
|
+
const objectMessage = error.message;
|
|
57
|
+
if (typeof objectMessage === "string") {
|
|
58
|
+
message = objectMessage;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const messageLower = message.toLowerCase();
|
|
62
|
+
if (!messageLower) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
// Postgres
|
|
66
|
+
if (messageLower.includes("violates foreign key constraint")) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
// MySQL
|
|
70
|
+
if (messageLower.includes("a foreign key constraint fails")) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
if (messageLower.includes("cannot add or update a child row")) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
if (messageLower.includes("cannot delete or update a parent row")) {
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
// SQLite
|
|
80
|
+
if (messageLower.includes("foreign key constraint failed")) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
// MSSQL
|
|
84
|
+
if (messageLower.includes("conflicted with the foreign key constraint")) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
exports.DatabaseTypeOrmIsForeignKeyViolation = DatabaseTypeOrmIsForeignKeyViolation;
|
|
91
|
+
//# sourceMappingURL=foreign-key-violation.utility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foreign-key-violation.utility.js","sources":["../../../../../../../src/utility/database/typeorm/is/foreign-key-violation.utility.ts"],"sourcesContent":[null],"names":["QueryFailedError"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects whether a TypeORM QueryFailedError is caused by a UNIQUE constraint violation.
|
|
3
|
+
* Best-effort across major drivers (Postgres/MySQL/MariaDB/SQLite/MSSQL) + message fallback.
|
|
4
|
+
* @param {unknown} error - Error thrown by TypeORM
|
|
5
|
+
* @returns {boolean} True if it looks like a UNIQUE constraint violation
|
|
6
|
+
*/
|
|
7
|
+
export declare function DatabaseTypeOrmIsUniqueViolation(error: unknown): boolean;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var typeorm = require('typeorm');
|
|
4
|
+
|
|
5
|
+
const MYSQL_MARIADB_DUPLICATE_ENTRY_ERRNO = 1062;
|
|
6
|
+
const MSSQL_DUPLICATE_KEY_ERROR_NUMBER_1 = 2601;
|
|
7
|
+
const MSSQL_DUPLICATE_KEY_ERROR_NUMBER_2 = 2627;
|
|
8
|
+
/**
|
|
9
|
+
* Detects whether a TypeORM QueryFailedError is caused by a UNIQUE constraint violation.
|
|
10
|
+
* Best-effort across major drivers (Postgres/MySQL/MariaDB/SQLite/MSSQL) + message fallback.
|
|
11
|
+
* @param {unknown} error - Error thrown by TypeORM
|
|
12
|
+
* @returns {boolean} True if it looks like a UNIQUE constraint violation
|
|
13
|
+
*/
|
|
14
|
+
function DatabaseTypeOrmIsUniqueViolation(error) {
|
|
15
|
+
const isQueryFailedError = error instanceof typeorm.QueryFailedError || (error != null && typeof error === "object" && error.name === "QueryFailedError");
|
|
16
|
+
if (!isQueryFailedError) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
const driverErrorUnknown = error != null && typeof error === "object" ? error.driverError : undefined;
|
|
20
|
+
const driverError = driverErrorUnknown != null && typeof driverErrorUnknown === "object" ? driverErrorUnknown : undefined;
|
|
21
|
+
const code = driverError?.code;
|
|
22
|
+
const errno = driverError?.errno;
|
|
23
|
+
const number = driverError?.number;
|
|
24
|
+
// PostgreSQL (SQLSTATE): unique_violation
|
|
25
|
+
if (code === "23505") {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
// MySQL / MariaDB
|
|
29
|
+
if (code === "ER_DUP_ENTRY") {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
if (errno === MYSQL_MARIADB_DUPLICATE_ENTRY_ERRNO || errno === String(MYSQL_MARIADB_DUPLICATE_ENTRY_ERRNO)) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
// SQLite
|
|
36
|
+
if (typeof code === "string" && code.startsWith("SQLITE_CONSTRAINT")) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
// MSSQL
|
|
40
|
+
if (number === MSSQL_DUPLICATE_KEY_ERROR_NUMBER_1 || number === MSSQL_DUPLICATE_KEY_ERROR_NUMBER_2) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
const driverMessage = driverError?.message;
|
|
44
|
+
let message = "";
|
|
45
|
+
if (typeof driverMessage === "string") {
|
|
46
|
+
message = driverMessage;
|
|
47
|
+
}
|
|
48
|
+
else if (error instanceof Error) {
|
|
49
|
+
message = error.message;
|
|
50
|
+
}
|
|
51
|
+
else if (error != null && typeof error === "object" && "message" in error) {
|
|
52
|
+
const objectMessage = error.message;
|
|
53
|
+
if (typeof objectMessage === "string") {
|
|
54
|
+
message = objectMessage;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const messageLower = message.toLowerCase();
|
|
58
|
+
if (!messageLower) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
// Postgres
|
|
62
|
+
if (messageLower.includes("duplicate key value violates unique constraint")) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
// MySQL
|
|
66
|
+
if (messageLower.includes("duplicate entry")) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
// SQLite
|
|
70
|
+
if (messageLower.includes("unique constraint failed")) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
// MSSQL
|
|
74
|
+
if (messageLower.includes("cannot insert duplicate key")) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
exports.DatabaseTypeOrmIsUniqueViolation = DatabaseTypeOrmIsUniqueViolation;
|
|
81
|
+
//# sourceMappingURL=unique-violation.utility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unique-violation.utility.js","sources":["../../../../../../../src/utility/database/typeorm/is/unique-violation.utility.ts"],"sourcesContent":[null],"names":["QueryFailedError"],"mappings":";;;;AAEA,MAAM,mCAAmC,GAAW,IAAI;AACxD,MAAM,kCAAkC,GAAW,IAAI;AACvD,MAAM,kCAAkC,GAAW,IAAI;AAEvD;;;;;AAKG;AACG,SAAU,gCAAgC,CAAC,KAAc,EAAA;IAC9D,MAAM,kBAAkB,GAAY,KAAK,YAAYA,wBAAgB,KAAK,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAA4B,CAAC,IAAI,KAAK,kBAAkB,CAAC;IAElL,IAAI,CAAC,kBAAkB,EAAE;AACxB,QAAA,OAAO,KAAK;IACb;IAEA,MAAM,kBAAkB,GAAY,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,GAAI,KAAmC,CAAC,WAAW,GAAG,SAAS;AAC7I,IAAA,MAAM,WAAW,GAAwC,kBAAkB,IAAI,IAAI,IAAI,OAAO,kBAAkB,KAAK,QAAQ,GAAI,kBAA8C,GAAG,SAAS;AAE3L,IAAA,MAAM,IAAI,GAAY,WAAW,EAAE,IAAI;AACvC,IAAA,MAAM,KAAK,GAAY,WAAW,EAAE,KAAK;AACzC,IAAA,MAAM,MAAM,GAAY,WAAW,EAAE,MAAM;;AAG3C,IAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AACrB,QAAA,OAAO,IAAI;IACZ;;AAGA,IAAA,IAAI,IAAI,KAAK,cAAc,EAAE;AAC5B,QAAA,OAAO,IAAI;IACZ;IAEA,IAAI,KAAK,KAAK,mCAAmC,IAAI,KAAK,KAAK,MAAM,CAAC,mCAAmC,CAAC,EAAE;AAC3G,QAAA,OAAO,IAAI;IACZ;;AAGA,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE;AACrE,QAAA,OAAO,IAAI;IACZ;;IAGA,IAAI,MAAM,KAAK,kCAAkC,IAAI,MAAM,KAAK,kCAAkC,EAAE;AACnG,QAAA,OAAO,IAAI;IACZ;AAEA,IAAA,MAAM,aAAa,GAAY,WAAW,EAAE,OAAO;IACnD,IAAI,OAAO,GAAW,EAAE;AAExB,IAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;QACtC,OAAO,GAAG,aAAa;IACxB;AAAO,SAAA,IAAI,KAAK,YAAY,KAAK,EAAE;AAClC,QAAA,OAAO,GAAG,KAAK,CAAC,OAAO;IACxB;AAAO,SAAA,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE;AAC5E,QAAA,MAAM,aAAa,GAAa,KAA+B,CAAC,OAAO;AAEvE,QAAA,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;YACtC,OAAO,GAAG,aAAa;QACxB;IACD;AAEA,IAAA,MAAM,YAAY,GAAW,OAAO,CAAC,WAAW,EAAE;IAElD,IAAI,CAAC,YAAY,EAAE;AAClB,QAAA,OAAO,KAAK;IACb;;AAGA,IAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,gDAAgD,CAAC,EAAE;AAC5E,QAAA,OAAO,IAAI;IACZ;;AAGA,IAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC7C,QAAA,OAAO,IAAI;IACZ;;AAGA,IAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE;AACtD,QAAA,OAAO,IAAI;IACZ;;AAGA,IAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE;AACzD,QAAA,OAAO,IAAI;IACZ;AAEA,IAAA,OAAO,KAAK;AACb;;;;"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var tslib_es6 = require('../../external/tslib/tslib.es6.js');
|
|
4
|
+
var foreignKeyViolation_class = require('../../class/utility/dto/exception/details/foreign-key-violation.class.js');
|
|
5
|
+
var uniqueViolation_class = require('../../class/utility/dto/exception/details/unique-violation.class.js');
|
|
4
6
|
var date_constant = require('../../constant/date.constant.js');
|
|
5
7
|
var exception_constant = require('../../constant/dto/exception.constant.js');
|
|
6
8
|
var number_constant = require('../../constant/number.constant.js');
|
|
7
9
|
var enum_decorator = require('../../decorator/api/property/enum.decorator.js');
|
|
8
10
|
var number_decorator = require('../../decorator/api/property/number.decorator.js');
|
|
11
|
+
var object_decorator = require('../../decorator/api/property/object.decorator.js');
|
|
9
12
|
var string_decorator = require('../../decorator/api/property/string.decorator.js');
|
|
10
13
|
var uuid_decorator = require('../../decorator/api/property/uuid.decorator.js');
|
|
11
14
|
require('../../enum/decorator/api/action.enum.js');
|
|
@@ -22,7 +25,9 @@ require('../../enum/decorator/api/property/desribe-type.enum.js');
|
|
|
22
25
|
var numberType_enum = require('../../enum/decorator/api/property/number-type.enum.js');
|
|
23
26
|
var stringType_enum = require('../../enum/decorator/api/property/string-type.enum.js');
|
|
24
27
|
require('../../enum/decorator/api/route-type.enum.js');
|
|
28
|
+
var type_enum = require('../../enum/utility/exception-details/type.enum.js');
|
|
25
29
|
var common = require('@nestjs/common');
|
|
30
|
+
var swagger = require('@nestjs/swagger');
|
|
26
31
|
var camelCaseString_utility = require('../camel-case-string.utility.js');
|
|
27
32
|
|
|
28
33
|
const exceptionDtoCache = new Map();
|
|
@@ -41,7 +46,18 @@ function DtoGenerateException(httpStatus) {
|
|
|
41
46
|
const errorName = common.HttpStatus[httpStatus];
|
|
42
47
|
class GeneratedErrorDTO {
|
|
43
48
|
correlationID;
|
|
44
|
-
|
|
49
|
+
/* @ApiPropertyString({
|
|
50
|
+
description: "name",
|
|
51
|
+
entity: { name: "Error" },
|
|
52
|
+
exampleValue: CamelCaseString(errorName),
|
|
53
|
+
format: EApiPropertyStringType.STRING,
|
|
54
|
+
isResponse: true,
|
|
55
|
+
maxLength: EXCEPTION_DTO_CONSTANT.MAXIMUM_ERROR_LENGTH,
|
|
56
|
+
minLength: EXCEPTION_DTO_CONSTANT.MINIMUM_ERROR_LENGTH,
|
|
57
|
+
pattern: "/^[a-zA-Z_ ]{3,64}$/",
|
|
58
|
+
})
|
|
59
|
+
error: string = CamelCaseString(errorName); */
|
|
60
|
+
details;
|
|
45
61
|
message = "Error message";
|
|
46
62
|
statusCode = httpStatus;
|
|
47
63
|
timestamp;
|
|
@@ -51,18 +67,23 @@ function DtoGenerateException(httpStatus) {
|
|
|
51
67
|
tslib_es6.__metadata("design:type", String)
|
|
52
68
|
], GeneratedErrorDTO.prototype, "correlationID", void 0);
|
|
53
69
|
tslib_es6.__decorate([
|
|
54
|
-
|
|
55
|
-
description: "
|
|
70
|
+
object_decorator.ApiPropertyObject({
|
|
71
|
+
description: "details",
|
|
72
|
+
discriminator: {
|
|
73
|
+
mapping: {
|
|
74
|
+
[type_enum.EApiExceptionDetailsType.FOREIGN_KEY_VIOLATION]: foreignKeyViolation_class.ExceptionDetailsForeignKeyViolationDTO,
|
|
75
|
+
[type_enum.EApiExceptionDetailsType.UNIQUE_VIOLATION]: uniqueViolation_class.ExceptionDetailsUniqueViolationDTO,
|
|
76
|
+
},
|
|
77
|
+
propertyName: "type",
|
|
78
|
+
shouldKeepDiscriminatorProperty: true,
|
|
79
|
+
},
|
|
56
80
|
entity: { name: "Error" },
|
|
57
|
-
|
|
58
|
-
format: stringType_enum.EApiPropertyStringType.STRING,
|
|
81
|
+
isRequired: false,
|
|
59
82
|
isResponse: true,
|
|
60
|
-
|
|
61
|
-
minLength: exception_constant.EXCEPTION_DTO_CONSTANT.MINIMUM_ERROR_LENGTH,
|
|
62
|
-
pattern: "/^[a-zA-Z_ ]{3,64}$/",
|
|
83
|
+
type: [foreignKeyViolation_class.ExceptionDetailsForeignKeyViolationDTO, uniqueViolation_class.ExceptionDetailsUniqueViolationDTO],
|
|
63
84
|
}),
|
|
64
|
-
tslib_es6.__metadata("design:type",
|
|
65
|
-
], GeneratedErrorDTO.prototype, "
|
|
85
|
+
tslib_es6.__metadata("design:type", Object)
|
|
86
|
+
], GeneratedErrorDTO.prototype, "details", void 0);
|
|
66
87
|
tslib_es6.__decorate([
|
|
67
88
|
string_decorator.ApiPropertyString({
|
|
68
89
|
description: "message",
|
|
@@ -100,6 +121,8 @@ function DtoGenerateException(httpStatus) {
|
|
|
100
121
|
}),
|
|
101
122
|
tslib_es6.__metadata("design:type", Number)
|
|
102
123
|
], GeneratedErrorDTO.prototype, "timestamp", void 0);
|
|
124
|
+
// Register discriminator DTOs so Swagger includes their schemas in components.schemas
|
|
125
|
+
swagger.ApiExtraModels(foreignKeyViolation_class.ExceptionDetailsForeignKeyViolationDTO, uniqueViolation_class.ExceptionDetailsUniqueViolationDTO)(GeneratedErrorDTO);
|
|
103
126
|
Object.defineProperty(GeneratedErrorDTO, "name", { value: `Exception${camelCaseString_utility.CamelCaseString(errorName)}DTO` });
|
|
104
127
|
exceptionDtoCache.set(httpStatus, GeneratedErrorDTO);
|
|
105
128
|
return GeneratedErrorDTO;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-exception.utility.js","sources":["../../../../../src/utility/dto/generate-exception.utility.ts"],"sourcesContent":[null],"names":["HttpStatus","
|
|
1
|
+
{"version":3,"file":"generate-exception.utility.js","sources":["../../../../../src/utility/dto/generate-exception.utility.ts"],"sourcesContent":[null],"names":["HttpStatus","__decorate","ApiPropertyUUID","ApiPropertyObject","EApiExceptionDetailsType","ExceptionDetailsForeignKeyViolationDTO","ExceptionDetailsUniqueViolationDTO","ApiPropertyString","EApiPropertyStringType","EXCEPTION_DTO_CONSTANT","ApiPropertyEnum","ApiPropertyNumber","EApiPropertyNumberType","DATE_CONSTANT","NUMBER_CONSTANT","ApiExtraModels","CamelCaseString"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formats unknown values safely for logs (avoids "[object Object]" and circular JSON issues).
|
|
3
|
+
* @param {unknown} value - Value to format
|
|
4
|
+
* @returns {string} String representation suitable for logs
|
|
5
|
+
*/
|
|
6
|
+
export declare function FormatUnknownForLog(value: unknown): string;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Formats unknown values safely for logs (avoids "[object Object]" and circular JSON issues).
|
|
5
|
+
* @param {unknown} value - Value to format
|
|
6
|
+
* @returns {string} String representation suitable for logs
|
|
7
|
+
*/
|
|
8
|
+
function FormatUnknownForLog(value) {
|
|
9
|
+
if (typeof value === "string") {
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
|
|
13
|
+
return String(value);
|
|
14
|
+
}
|
|
15
|
+
if (value === null) {
|
|
16
|
+
return "null";
|
|
17
|
+
}
|
|
18
|
+
if (value === undefined) {
|
|
19
|
+
return "undefined";
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
const json = JSON.stringify(value);
|
|
23
|
+
return json ?? Object.prototype.toString.call(value);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return Object.prototype.toString.call(value);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
exports.FormatUnknownForLog = FormatUnknownForLog;
|
|
31
|
+
//# sourceMappingURL=format-unknown-for-log.utility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-unknown-for-log.utility.js","sources":["../../../../src/utility/format-unknown-for-log.utility.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;AAIG;AACG,SAAU,mBAAmB,CAAC,KAAc,EAAA;AACjD,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC9B,QAAA,OAAO,KAAK;IACb;AAEA,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACzF,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;IACrB;AAEA,IAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AACnB,QAAA,OAAO,MAAM;IACd;AAEA,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACxB,QAAA,OAAO,WAAW;IACnB;AAEA,IAAA,IAAI;QACH,MAAM,IAAI,GAAuB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAEtD,QAAA,OAAO,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IACrD;AAAE,IAAA,MAAM;QACP,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7C;AACD;;;;"}
|
|
@@ -2,10 +2,12 @@ export * from './api/index';
|
|
|
2
2
|
export * from './authorization/index';
|
|
3
3
|
export { CamelCaseString } from './camel-case-string.utility';
|
|
4
4
|
export { CapitalizeString } from './capitalize-string.utility';
|
|
5
|
+
export * from './database/index';
|
|
5
6
|
export { DeferPropertyDecoratorExecution } from './defer-property-decorator-execution.utility';
|
|
6
7
|
export * from './dto/index';
|
|
7
8
|
export { ErrorException } from './error-exception.utility';
|
|
8
9
|
export { ErrorString } from './error-string.utility';
|
|
10
|
+
export { FormatUnknownForLog } from './format-unknown-for-log.utility';
|
|
9
11
|
export { GenerateEntityInformation } from './generate-entity-information.utility';
|
|
10
12
|
export { GetAutoDtoContext } from './get-auto-dto-context.utility';
|
|
11
13
|
export { GetEntityColumns } from './get-entity-columns.utility';
|
|
@@ -31,7 +31,7 @@ exports.LoggerUtility = class LoggerUtility extends common.ConsoleLogger {
|
|
|
31
31
|
* @private
|
|
32
32
|
*/
|
|
33
33
|
static getLogLevelsFromEnv() {
|
|
34
|
-
const logLevel = process.env[this.ENV_LOG_LEVEL_KEY]
|
|
34
|
+
const logLevel = process.env[this.ENV_LOG_LEVEL_KEY];
|
|
35
35
|
if (!logLevel) {
|
|
36
36
|
// Default log levels if not specified in env
|
|
37
37
|
return ["error", "warn", "log"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.utility.js","sources":["../../../../src/utility/logger.utility.ts"],"sourcesContent":[null],"names":["config","LoggerUtility","ConsoleLogger","__decorate","Injectable"],"mappings":";;;;;;;AAKAA,aAAM,EAAE;AAER;;AAEG;AAEUC,qBAAa,GAAnB,MAAM,aAAc,SAAQC,oBAAa,CAAA;;AACvC,IAAA,OAAgB,iBAAiB,GAAW,eAAe;AAEnE,IAAA,WAAA,CAAY,OAAgB,EAAA;AAC3B,QAAA,KAAK,CAAC,OAAO,IAAI,gBAAgB,EAAE;AAClC,YAAA,SAAS,EAAE,eAAa,CAAC,mBAAmB,EAAE;AAC9C,SAAA,CAAC;IACH;AAEA;;;;AAIG;IACI,OAAO,SAAS,CAAC,OAAgB,EAAA;QACvC,OAAO,IAAI,eAAa,CAAC,CAAA,sBAAA,EAAyB,OAAO,IAAI,MAAM,CAAA,CAAE,CAAC;IACvE;AAEA;;;;AAIG;AACK,IAAA,OAAO,mBAAmB,GAAA;
|
|
1
|
+
{"version":3,"file":"logger.utility.js","sources":["../../../../src/utility/logger.utility.ts"],"sourcesContent":[null],"names":["config","LoggerUtility","ConsoleLogger","__decorate","Injectable"],"mappings":";;;;;;;AAKAA,aAAM,EAAE;AAER;;AAEG;AAEUC,qBAAa,GAAnB,MAAM,aAAc,SAAQC,oBAAa,CAAA;;AACvC,IAAA,OAAgB,iBAAiB,GAAW,eAAe;AAEnE,IAAA,WAAA,CAAY,OAAgB,EAAA;AAC3B,QAAA,KAAK,CAAC,OAAO,IAAI,gBAAgB,EAAE;AAClC,YAAA,SAAS,EAAE,eAAa,CAAC,mBAAmB,EAAE;AAC9C,SAAA,CAAC;IACH;AAEA;;;;AAIG;IACI,OAAO,SAAS,CAAC,OAAgB,EAAA;QACvC,OAAO,IAAI,eAAa,CAAC,CAAA,sBAAA,EAAyB,OAAO,IAAI,MAAM,CAAA,CAAE,CAAC;IACvE;AAEA;;;;AAIG;AACK,IAAA,OAAO,mBAAmB,GAAA;QACjC,MAAM,QAAQ,GAAuB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAExE,IAAI,CAAC,QAAQ,EAAE;;AAEd,YAAA,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;QAChC;AAEA,QAAA,QAAQ,QAAQ,CAAC,WAAW,EAAE;YAC7B,KAAK,OAAO,EAAE;gBACb,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;YACzC;YAEA,KAAK,OAAO,EAAE;gBACb,OAAO,CAAC,OAAO,CAAC;YACjB;YAEA,KAAK,KAAK,EAAE;AACX,gBAAA,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;YAChC;YAEA,KAAK,MAAM,EAAE;AACZ,gBAAA,OAAO,EAAE;YACV;YAEA,KAAK,SAAS,EAAE;gBACf,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;YACpD;YAEA,KAAK,MAAM,EAAE;AACZ,gBAAA,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;YACzB;YAEA,SAAS;AACR,gBAAA,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;YAChC;;IAEF;;AA5DYD,qBAAa,GAAA,eAAA,GAAAE,oBAAA,CAAA;AADzB,IAAAC,iBAAU,EAAE;;AACA,CAAA,EAAAH,qBAAa,CA6DzB;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './api/index';
|
|
2
2
|
export * from './api/authorization/index';
|
|
3
3
|
export { MetadataStorage } from './metadata-storage.class';
|
|
4
|
+
export * from './utility/dto/exception/index';
|
|
4
5
|
export * from './utility/dto/property/factory/index';
|
|
5
6
|
export * from './utility/dto/strategy/index';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EApiExceptionDetailsType } from '../../../../../enum/utility/exception-details/index';
|
|
2
|
+
export declare class ExceptionDetailsForeignKeyViolationDTO {
|
|
3
|
+
constraint?: string;
|
|
4
|
+
detail?: string;
|
|
5
|
+
field?: string;
|
|
6
|
+
referencedField?: string;
|
|
7
|
+
referencedTable?: string;
|
|
8
|
+
table?: string;
|
|
9
|
+
type: EApiExceptionDetailsType;
|
|
10
|
+
value?: string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
|
|
2
|
+
import { ApiPropertyEnum } from '../../../../../decorator/api/property/enum.decorator.js';
|
|
3
|
+
import { ApiPropertyString } from '../../../../../decorator/api/property/string.decorator.js';
|
|
4
|
+
import '../../../../../enum/decorator/api/action.enum.js';
|
|
5
|
+
import '../../../../../enum/decorator/api/authentication-type.enum.js';
|
|
6
|
+
import '../../../../../enum/decorator/api/controller/load-relations-strategy.enum.js';
|
|
7
|
+
import '../../../../../enum/decorator/api/controller/request-transformer-type.enum.js';
|
|
8
|
+
import '../../../../../enum/decorator/api/dto-type.enum.js';
|
|
9
|
+
import '../../../../../enum/decorator/api/function/type.enum.js';
|
|
10
|
+
import '../../../../../enum/decorator/api/on-type.enum.js';
|
|
11
|
+
import '../../../../../enum/decorator/api/property/data-type.enum.js';
|
|
12
|
+
import '../../../../../enum/decorator/api/property/date/identifier.enum.js';
|
|
13
|
+
import '../../../../../enum/decorator/api/property/date/type.enum.js';
|
|
14
|
+
import '../../../../../enum/decorator/api/property/desribe-type.enum.js';
|
|
15
|
+
import '../../../../../enum/decorator/api/property/number-type.enum.js';
|
|
16
|
+
import { EApiPropertyStringType } from '../../../../../enum/decorator/api/property/string-type.enum.js';
|
|
17
|
+
import '../../../../../enum/decorator/api/route-type.enum.js';
|
|
18
|
+
import { EApiExceptionDetailsType } from '../../../../../enum/utility/exception-details/type.enum.js';
|
|
19
|
+
|
|
20
|
+
const DETAILS_ENTITY = { name: "ErrorDetails" };
|
|
21
|
+
const DETAILS_MIN_LENGTH = 0;
|
|
22
|
+
const DETAILS_MAX_LENGTH_IDENTIFIER = 128;
|
|
23
|
+
const DETAILS_MAX_LENGTH_DETAIL = 1024;
|
|
24
|
+
const DETAILS_PATTERN_IDENTIFIER = String.raw `/^[\s\S]{0,128}$/`;
|
|
25
|
+
const DETAILS_PATTERN_DETAIL = String.raw `/^[\s\S]{0,1024}$/`;
|
|
26
|
+
class ExceptionDetailsForeignKeyViolationDTO {
|
|
27
|
+
constraint;
|
|
28
|
+
detail;
|
|
29
|
+
field;
|
|
30
|
+
referencedField;
|
|
31
|
+
referencedTable;
|
|
32
|
+
table;
|
|
33
|
+
type = EApiExceptionDetailsType.FOREIGN_KEY_VIOLATION;
|
|
34
|
+
value;
|
|
35
|
+
}
|
|
36
|
+
__decorate([
|
|
37
|
+
ApiPropertyString({
|
|
38
|
+
entity: DETAILS_ENTITY,
|
|
39
|
+
exampleValue: "FK_5bc39ec0540f37ff97f5aba36e1",
|
|
40
|
+
format: EApiPropertyStringType.STRING,
|
|
41
|
+
isRequired: false,
|
|
42
|
+
isResponse: true,
|
|
43
|
+
maxLength: DETAILS_MAX_LENGTH_IDENTIFIER,
|
|
44
|
+
minLength: DETAILS_MIN_LENGTH,
|
|
45
|
+
pattern: DETAILS_PATTERN_IDENTIFIER,
|
|
46
|
+
}),
|
|
47
|
+
__metadata("design:type", String)
|
|
48
|
+
], ExceptionDetailsForeignKeyViolationDTO.prototype, "constraint", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
ApiPropertyString({
|
|
51
|
+
entity: DETAILS_ENTITY,
|
|
52
|
+
exampleValue: 'Key (user_id)=(123) is not present in table "user".',
|
|
53
|
+
format: EApiPropertyStringType.STRING,
|
|
54
|
+
isRequired: false,
|
|
55
|
+
isResponse: true,
|
|
56
|
+
maxLength: DETAILS_MAX_LENGTH_DETAIL,
|
|
57
|
+
minLength: DETAILS_MIN_LENGTH,
|
|
58
|
+
pattern: DETAILS_PATTERN_DETAIL,
|
|
59
|
+
}),
|
|
60
|
+
__metadata("design:type", String)
|
|
61
|
+
], ExceptionDetailsForeignKeyViolationDTO.prototype, "detail", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
ApiPropertyString({
|
|
64
|
+
entity: DETAILS_ENTITY,
|
|
65
|
+
exampleValue: "user_id",
|
|
66
|
+
format: EApiPropertyStringType.STRING,
|
|
67
|
+
isRequired: false,
|
|
68
|
+
isResponse: true,
|
|
69
|
+
maxLength: DETAILS_MAX_LENGTH_IDENTIFIER,
|
|
70
|
+
minLength: DETAILS_MIN_LENGTH,
|
|
71
|
+
pattern: DETAILS_PATTERN_IDENTIFIER,
|
|
72
|
+
}),
|
|
73
|
+
__metadata("design:type", String)
|
|
74
|
+
], ExceptionDetailsForeignKeyViolationDTO.prototype, "field", void 0);
|
|
75
|
+
__decorate([
|
|
76
|
+
ApiPropertyString({
|
|
77
|
+
entity: DETAILS_ENTITY,
|
|
78
|
+
exampleValue: "id",
|
|
79
|
+
format: EApiPropertyStringType.STRING,
|
|
80
|
+
isRequired: false,
|
|
81
|
+
isResponse: true,
|
|
82
|
+
maxLength: DETAILS_MAX_LENGTH_IDENTIFIER,
|
|
83
|
+
minLength: DETAILS_MIN_LENGTH,
|
|
84
|
+
pattern: DETAILS_PATTERN_IDENTIFIER,
|
|
85
|
+
}),
|
|
86
|
+
__metadata("design:type", String)
|
|
87
|
+
], ExceptionDetailsForeignKeyViolationDTO.prototype, "referencedField", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
ApiPropertyString({
|
|
90
|
+
entity: DETAILS_ENTITY,
|
|
91
|
+
exampleValue: "user",
|
|
92
|
+
format: EApiPropertyStringType.STRING,
|
|
93
|
+
isRequired: false,
|
|
94
|
+
isResponse: true,
|
|
95
|
+
maxLength: DETAILS_MAX_LENGTH_IDENTIFIER,
|
|
96
|
+
minLength: DETAILS_MIN_LENGTH,
|
|
97
|
+
pattern: DETAILS_PATTERN_IDENTIFIER,
|
|
98
|
+
}),
|
|
99
|
+
__metadata("design:type", String)
|
|
100
|
+
], ExceptionDetailsForeignKeyViolationDTO.prototype, "referencedTable", void 0);
|
|
101
|
+
__decorate([
|
|
102
|
+
ApiPropertyString({
|
|
103
|
+
entity: DETAILS_ENTITY,
|
|
104
|
+
exampleValue: "user_balance",
|
|
105
|
+
format: EApiPropertyStringType.STRING,
|
|
106
|
+
isRequired: false,
|
|
107
|
+
isResponse: true,
|
|
108
|
+
maxLength: DETAILS_MAX_LENGTH_IDENTIFIER,
|
|
109
|
+
minLength: DETAILS_MIN_LENGTH,
|
|
110
|
+
pattern: DETAILS_PATTERN_IDENTIFIER,
|
|
111
|
+
}),
|
|
112
|
+
__metadata("design:type", String)
|
|
113
|
+
], ExceptionDetailsForeignKeyViolationDTO.prototype, "table", void 0);
|
|
114
|
+
__decorate([
|
|
115
|
+
ApiPropertyEnum({
|
|
116
|
+
entity: DETAILS_ENTITY,
|
|
117
|
+
enum: EApiExceptionDetailsType,
|
|
118
|
+
enumName: "EApiExceptionDetailsType",
|
|
119
|
+
exampleValue: EApiExceptionDetailsType.FOREIGN_KEY_VIOLATION,
|
|
120
|
+
isRequired: true,
|
|
121
|
+
isResponse: true,
|
|
122
|
+
}),
|
|
123
|
+
__metadata("design:type", String)
|
|
124
|
+
], ExceptionDetailsForeignKeyViolationDTO.prototype, "type", void 0);
|
|
125
|
+
__decorate([
|
|
126
|
+
ApiPropertyString({
|
|
127
|
+
entity: DETAILS_ENTITY,
|
|
128
|
+
exampleValue: "123",
|
|
129
|
+
format: EApiPropertyStringType.STRING,
|
|
130
|
+
isRequired: false,
|
|
131
|
+
isResponse: true,
|
|
132
|
+
maxLength: DETAILS_MAX_LENGTH_DETAIL,
|
|
133
|
+
minLength: DETAILS_MIN_LENGTH,
|
|
134
|
+
pattern: DETAILS_PATTERN_DETAIL,
|
|
135
|
+
}),
|
|
136
|
+
__metadata("design:type", String)
|
|
137
|
+
], ExceptionDetailsForeignKeyViolationDTO.prototype, "value", void 0);
|
|
138
|
+
|
|
139
|
+
export { ExceptionDetailsForeignKeyViolationDTO };
|
|
140
|
+
//# sourceMappingURL=foreign-key-violation.class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foreign-key-violation.class.js","sources":["../../../../../../../../src/class/utility/dto/exception/details/foreign-key-violation.class.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { EApiExceptionDetailsType } from '../../../../../enum/utility/exception-details/index';
|
|
2
|
+
export declare class ExceptionDetailsUniqueViolationDTO {
|
|
3
|
+
constraint?: string;
|
|
4
|
+
detail?: string;
|
|
5
|
+
field?: string;
|
|
6
|
+
table?: string;
|
|
7
|
+
type: EApiExceptionDetailsType;
|
|
8
|
+
value?: string;
|
|
9
|
+
}
|