@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.
Files changed (160) hide show
  1. package/dist/cjs/class/index.d.ts +1 -0
  2. package/dist/cjs/class/utility/dto/exception/details/foreign-key-violation.class.d.ts +11 -0
  3. package/dist/cjs/class/utility/dto/exception/details/foreign-key-violation.class.js +142 -0
  4. package/dist/cjs/class/utility/dto/exception/details/foreign-key-violation.class.js.map +1 -0
  5. package/dist/cjs/class/utility/dto/exception/details/index.d.ts +2 -0
  6. package/dist/cjs/class/utility/dto/exception/details/unique-violation.class.d.ts +9 -0
  7. package/dist/cjs/class/utility/dto/exception/details/unique-violation.class.js +114 -0
  8. package/dist/cjs/class/utility/dto/exception/details/unique-violation.class.js.map +1 -0
  9. package/dist/cjs/class/utility/dto/exception/index.d.ts +1 -0
  10. package/dist/cjs/decorator/api/function/create.decorator.js +28 -2
  11. package/dist/cjs/decorator/api/function/create.decorator.js.map +1 -1
  12. package/dist/cjs/decorator/api/function/delete.decorator.js +20 -2
  13. package/dist/cjs/decorator/api/function/delete.decorator.js.map +1 -1
  14. package/dist/cjs/decorator/api/function/get-list.decorator.js +11 -2
  15. package/dist/cjs/decorator/api/function/get-list.decorator.js.map +1 -1
  16. package/dist/cjs/decorator/api/function/get-many.decorator.js +11 -2
  17. package/dist/cjs/decorator/api/function/get-many.decorator.js.map +1 -1
  18. package/dist/cjs/decorator/api/function/get.decorator.js +11 -2
  19. package/dist/cjs/decorator/api/function/get.decorator.js.map +1 -1
  20. package/dist/cjs/decorator/api/function/update.decorator.js +28 -2
  21. package/dist/cjs/decorator/api/function/update.decorator.js.map +1 -1
  22. package/dist/cjs/decorator/api/method.decorator.js +6 -0
  23. package/dist/cjs/decorator/api/method.decorator.js.map +1 -1
  24. package/dist/cjs/decorator/api/service.decorator.js +2 -0
  25. package/dist/cjs/decorator/api/service.decorator.js.map +1 -1
  26. package/dist/cjs/enum/utility/exception-details/index.d.ts +1 -0
  27. package/dist/cjs/enum/utility/exception-details/type.enum.d.ts +4 -0
  28. package/dist/cjs/enum/utility/exception-details/type.enum.js +8 -0
  29. package/dist/cjs/enum/utility/exception-details/type.enum.js.map +1 -0
  30. package/dist/cjs/factory/api/controller.factory.js +4 -8
  31. package/dist/cjs/factory/api/controller.factory.js.map +1 -1
  32. package/dist/cjs/index.js +18 -0
  33. package/dist/cjs/index.js.map +1 -1
  34. package/dist/cjs/interceptor/correlation-id-response-body.interceptor.js +42 -10
  35. package/dist/cjs/interceptor/correlation-id-response-body.interceptor.js.map +1 -1
  36. package/dist/cjs/package.json +1 -1
  37. package/dist/cjs/utility/api/controller/apply-decorators.utility.js +3 -3
  38. package/dist/cjs/utility/api/controller/apply-decorators.utility.js.map +1 -1
  39. package/dist/cjs/utility/api/controller/apply-metadata.utility.js +4 -1
  40. package/dist/cjs/utility/api/controller/apply-metadata.utility.js.map +1 -1
  41. package/dist/cjs/utility/api/controller/get-list/transform-filter.utility.js +1 -1
  42. package/dist/cjs/utility/api/controller/get-list/transform-filter.utility.js.map +1 -1
  43. package/dist/cjs/utility/api/controller/write-dto-swagger.utility.js +4 -1
  44. package/dist/cjs/utility/api/controller/write-dto-swagger.utility.js.map +1 -1
  45. package/dist/cjs/utility/api/filter-order-by-from-entity.utility.js +1 -1
  46. package/dist/cjs/utility/api/filter-order-by-from-entity.utility.js.map +1 -1
  47. package/dist/cjs/utility/database/index.d.ts +1 -0
  48. package/dist/cjs/utility/database/typeorm/get/foreign-key-violation-details.utility.d.ts +16 -0
  49. package/dist/cjs/utility/database/typeorm/get/foreign-key-violation-details.utility.js +105 -0
  50. package/dist/cjs/utility/database/typeorm/get/foreign-key-violation-details.utility.js.map +1 -0
  51. package/dist/cjs/utility/database/typeorm/get/index.d.ts +2 -0
  52. package/dist/cjs/utility/database/typeorm/get/unique-violation-details.utility.d.ts +14 -0
  53. package/dist/cjs/utility/database/typeorm/get/unique-violation-details.utility.js +90 -0
  54. package/dist/cjs/utility/database/typeorm/get/unique-violation-details.utility.js.map +1 -0
  55. package/dist/cjs/utility/database/typeorm/index.d.ts +6 -0
  56. package/dist/cjs/utility/database/typeorm/is/entity/index.d.ts +2 -0
  57. package/dist/cjs/utility/database/typeorm/is/entity/metadata-not-found.utility.d.ts +7 -0
  58. package/dist/cjs/utility/database/typeorm/is/entity/metadata-not-found.utility.js +27 -0
  59. package/dist/cjs/utility/database/typeorm/is/entity/metadata-not-found.utility.js.map +1 -0
  60. package/dist/cjs/utility/database/typeorm/is/entity/not-found.utility.d.ts +6 -0
  61. package/dist/cjs/utility/database/typeorm/is/entity/not-found.utility.js +26 -0
  62. package/dist/cjs/utility/database/typeorm/is/entity/not-found.utility.js.map +1 -0
  63. package/dist/cjs/utility/database/typeorm/is/foreign-key-violation.utility.d.ts +7 -0
  64. package/dist/cjs/utility/database/typeorm/is/foreign-key-violation.utility.js +91 -0
  65. package/dist/cjs/utility/database/typeorm/is/foreign-key-violation.utility.js.map +1 -0
  66. package/dist/cjs/utility/database/typeorm/is/index.d.ts +3 -0
  67. package/dist/cjs/utility/database/typeorm/is/unique-violation.utility.d.ts +7 -0
  68. package/dist/cjs/utility/database/typeorm/is/unique-violation.utility.js +81 -0
  69. package/dist/cjs/utility/database/typeorm/is/unique-violation.utility.js.map +1 -0
  70. package/dist/cjs/utility/dto/generate-exception.utility.js +33 -10
  71. package/dist/cjs/utility/dto/generate-exception.utility.js.map +1 -1
  72. package/dist/cjs/utility/format-unknown-for-log.utility.d.ts +6 -0
  73. package/dist/cjs/utility/format-unknown-for-log.utility.js +31 -0
  74. package/dist/cjs/utility/format-unknown-for-log.utility.js.map +1 -0
  75. package/dist/cjs/utility/index.d.ts +2 -0
  76. package/dist/cjs/utility/logger.utility.js +1 -1
  77. package/dist/cjs/utility/logger.utility.js.map +1 -1
  78. package/dist/esm/class/index.d.ts +1 -0
  79. package/dist/esm/class/utility/dto/exception/details/foreign-key-violation.class.d.ts +11 -0
  80. package/dist/esm/class/utility/dto/exception/details/foreign-key-violation.class.js +140 -0
  81. package/dist/esm/class/utility/dto/exception/details/foreign-key-violation.class.js.map +1 -0
  82. package/dist/esm/class/utility/dto/exception/details/index.d.ts +2 -0
  83. package/dist/esm/class/utility/dto/exception/details/unique-violation.class.d.ts +9 -0
  84. package/dist/esm/class/utility/dto/exception/details/unique-violation.class.js +112 -0
  85. package/dist/esm/class/utility/dto/exception/details/unique-violation.class.js.map +1 -0
  86. package/dist/esm/class/utility/dto/exception/index.d.ts +1 -0
  87. package/dist/esm/decorator/api/function/create.decorator.js +29 -3
  88. package/dist/esm/decorator/api/function/create.decorator.js.map +1 -1
  89. package/dist/esm/decorator/api/function/delete.decorator.js +21 -3
  90. package/dist/esm/decorator/api/function/delete.decorator.js.map +1 -1
  91. package/dist/esm/decorator/api/function/get-list.decorator.js +12 -3
  92. package/dist/esm/decorator/api/function/get-list.decorator.js.map +1 -1
  93. package/dist/esm/decorator/api/function/get-many.decorator.js +12 -3
  94. package/dist/esm/decorator/api/function/get-many.decorator.js.map +1 -1
  95. package/dist/esm/decorator/api/function/get.decorator.js +12 -3
  96. package/dist/esm/decorator/api/function/get.decorator.js.map +1 -1
  97. package/dist/esm/decorator/api/function/update.decorator.js +29 -3
  98. package/dist/esm/decorator/api/function/update.decorator.js.map +1 -1
  99. package/dist/esm/decorator/api/method.decorator.js +7 -1
  100. package/dist/esm/decorator/api/method.decorator.js.map +1 -1
  101. package/dist/esm/decorator/api/property/boolean.decorator.js +1 -1
  102. package/dist/esm/decorator/api/property/date.decorator.js +1 -1
  103. package/dist/esm/decorator/api/property/number.decorator.js +2 -2
  104. package/dist/esm/decorator/api/property/object.decorator.js +1 -1
  105. package/dist/esm/decorator/api/property/uuid.decorator.js +1 -1
  106. package/dist/esm/decorator/api/service.decorator.js +2 -0
  107. package/dist/esm/decorator/api/service.decorator.js.map +1 -1
  108. package/dist/esm/enum/utility/exception-details/index.d.ts +1 -0
  109. package/dist/esm/enum/utility/exception-details/type.enum.d.ts +4 -0
  110. package/dist/esm/enum/utility/exception-details/type.enum.js +8 -0
  111. package/dist/esm/enum/utility/exception-details/type.enum.js.map +1 -0
  112. package/dist/esm/factory/api/controller.factory.js +4 -8
  113. package/dist/esm/factory/api/controller.factory.js.map +1 -1
  114. package/dist/esm/index.js +9 -0
  115. package/dist/esm/index.js.map +1 -1
  116. package/dist/esm/interceptor/correlation-id-response-body.interceptor.js +42 -10
  117. package/dist/esm/interceptor/correlation-id-response-body.interceptor.js.map +1 -1
  118. package/dist/esm/package.json +1 -1
  119. package/dist/esm/utility/api/controller/apply-decorators.utility.js +3 -3
  120. package/dist/esm/utility/api/controller/apply-decorators.utility.js.map +1 -1
  121. package/dist/esm/utility/api/controller/apply-metadata.utility.js +4 -1
  122. package/dist/esm/utility/api/controller/apply-metadata.utility.js.map +1 -1
  123. package/dist/esm/utility/api/controller/get-list/transform-filter.utility.js +1 -1
  124. package/dist/esm/utility/api/controller/get-list/transform-filter.utility.js.map +1 -1
  125. package/dist/esm/utility/api/controller/write-dto-swagger.utility.js +4 -1
  126. package/dist/esm/utility/api/controller/write-dto-swagger.utility.js.map +1 -1
  127. package/dist/esm/utility/api/filter-order-by-from-entity.utility.js +1 -1
  128. package/dist/esm/utility/api/filter-order-by-from-entity.utility.js.map +1 -1
  129. package/dist/esm/utility/database/index.d.ts +1 -0
  130. package/dist/esm/utility/database/typeorm/get/foreign-key-violation-details.utility.d.ts +16 -0
  131. package/dist/esm/utility/database/typeorm/get/foreign-key-violation-details.utility.js +103 -0
  132. package/dist/esm/utility/database/typeorm/get/foreign-key-violation-details.utility.js.map +1 -0
  133. package/dist/esm/utility/database/typeorm/get/index.d.ts +2 -0
  134. package/dist/esm/utility/database/typeorm/get/unique-violation-details.utility.d.ts +14 -0
  135. package/dist/esm/utility/database/typeorm/get/unique-violation-details.utility.js +88 -0
  136. package/dist/esm/utility/database/typeorm/get/unique-violation-details.utility.js.map +1 -0
  137. package/dist/esm/utility/database/typeorm/index.d.ts +6 -0
  138. package/dist/esm/utility/database/typeorm/is/entity/index.d.ts +2 -0
  139. package/dist/esm/utility/database/typeorm/is/entity/metadata-not-found.utility.d.ts +7 -0
  140. package/dist/esm/utility/database/typeorm/is/entity/metadata-not-found.utility.js +25 -0
  141. package/dist/esm/utility/database/typeorm/is/entity/metadata-not-found.utility.js.map +1 -0
  142. package/dist/esm/utility/database/typeorm/is/entity/not-found.utility.d.ts +6 -0
  143. package/dist/esm/utility/database/typeorm/is/entity/not-found.utility.js +24 -0
  144. package/dist/esm/utility/database/typeorm/is/entity/not-found.utility.js.map +1 -0
  145. package/dist/esm/utility/database/typeorm/is/foreign-key-violation.utility.d.ts +7 -0
  146. package/dist/esm/utility/database/typeorm/is/foreign-key-violation.utility.js +89 -0
  147. package/dist/esm/utility/database/typeorm/is/foreign-key-violation.utility.js.map +1 -0
  148. package/dist/esm/utility/database/typeorm/is/index.d.ts +3 -0
  149. package/dist/esm/utility/database/typeorm/is/unique-violation.utility.d.ts +7 -0
  150. package/dist/esm/utility/database/typeorm/is/unique-violation.utility.js +79 -0
  151. package/dist/esm/utility/database/typeorm/is/unique-violation.utility.js.map +1 -0
  152. package/dist/esm/utility/dto/generate-exception.utility.js +33 -10
  153. package/dist/esm/utility/dto/generate-exception.utility.js.map +1 -1
  154. package/dist/esm/utility/format-unknown-for-log.utility.d.ts +6 -0
  155. package/dist/esm/utility/format-unknown-for-log.utility.js +29 -0
  156. package/dist/esm/utility/format-unknown-for-log.utility.js.map +1 -0
  157. package/dist/esm/utility/index.d.ts +2 -0
  158. package/dist/esm/utility/logger.utility.js +1 -1
  159. package/dist/esm/utility/logger.utility.js.map +1 -1
  160. 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,3 @@
1
+ export * from './entity/index';
2
+ export { DatabaseTypeOrmIsForeignKeyViolation } from './foreign-key-violation.utility';
3
+ export { DatabaseTypeOrmIsUniqueViolation } from './unique-violation.utility';
@@ -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
- error = camelCaseString_utility.CamelCaseString(errorName);
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
- string_decorator.ApiPropertyString({
55
- description: "name",
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
- exampleValue: camelCaseString_utility.CamelCaseString(errorName),
58
- format: stringType_enum.EApiPropertyStringType.STRING,
81
+ isRequired: false,
59
82
  isResponse: true,
60
- maxLength: exception_constant.EXCEPTION_DTO_CONSTANT.MAXIMUM_ERROR_LENGTH,
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", String)
65
- ], GeneratedErrorDTO.prototype, "error", void 0);
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","CamelCaseString","__decorate","ApiPropertyUUID","ApiPropertyString","EApiPropertyStringType","EXCEPTION_DTO_CONSTANT","ApiPropertyEnum","ApiPropertyNumber","EApiPropertyNumberType","DATE_CONSTANT","NUMBER_CONSTANT"],"mappings":"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"}
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] ?? "none";
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;AACjC,QAAA,MAAM,QAAQ,GAAW,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,MAAM;QAEtE,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
+ {"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":";;;;;;;;;;;;;;;;;;;AAOA,MAAM,cAAc,GAAmB,EAAE,IAAI,EAAE,cAAc,EAAE;AAE/D,MAAM,kBAAkB,GAAW,CAAC;AACpC,MAAM,6BAA6B,GAAW,GAAG;AACjD,MAAM,yBAAyB,GAAW,IAAI;AAE9C,MAAM,0BAA0B,GAAW,MAAM,CAAC,GAAG,CAAA,mBAAmB;AACxE,MAAM,sBAAsB,GAAW,MAAM,CAAC,GAAG,CAAA,oBAAoB;MAExD,sCAAsC,CAAA;AAWlD,IAAA,UAAU;AAYV,IAAA,MAAM;AAYN,IAAA,KAAK;AAYL,IAAA,eAAe;AAYf,IAAA,eAAe;AAYf,IAAA,KAAK;AAUL,IAAA,IAAI,GAA6B,wBAAwB,CAAC,qBAAqB;AAY/E,IAAA,KAAK;AACL;AAnFA,UAAA,CAAA;AAVC,IAAA,iBAAiB,CAAC;AAClB,QAAA,MAAM,EAAE,cAAc;AACtB,QAAA,YAAY,EAAE,gCAAgC;QAC9C,MAAM,EAAE,sBAAsB,CAAC,MAAM;AACrC,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,SAAS,EAAE,6BAA6B;AACxC,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,OAAO,EAAE,0BAA0B;KACnC,CAAC;;AACkB,CAAA,EAAA,sCAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,CAAA;AAYpB,UAAA,CAAA;AAVC,IAAA,iBAAiB,CAAC;AAClB,QAAA,MAAM,EAAE,cAAc;AACtB,QAAA,YAAY,EAAE,qDAAqD;QACnE,MAAM,EAAE,sBAAsB,CAAC,MAAM;AACrC,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,SAAS,EAAE,yBAAyB;AACpC,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,OAAO,EAAE,sBAAsB;KAC/B,CAAC;;AACc,CAAA,EAAA,sCAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AAYhB,UAAA,CAAA;AAVC,IAAA,iBAAiB,CAAC;AAClB,QAAA,MAAM,EAAE,cAAc;AACtB,QAAA,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE,sBAAsB,CAAC,MAAM;AACrC,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,SAAS,EAAE,6BAA6B;AACxC,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,OAAO,EAAE,0BAA0B;KACnC,CAAC;;AACa,CAAA,EAAA,sCAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAYf,UAAA,CAAA;AAVC,IAAA,iBAAiB,CAAC;AAClB,QAAA,MAAM,EAAE,cAAc;AACtB,QAAA,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,sBAAsB,CAAC,MAAM;AACrC,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,SAAS,EAAE,6BAA6B;AACxC,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,OAAO,EAAE,0BAA0B;KACnC,CAAC;;AACuB,CAAA,EAAA,sCAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,MAAA,CAAA;AAYzB,UAAA,CAAA;AAVC,IAAA,iBAAiB,CAAC;AAClB,QAAA,MAAM,EAAE,cAAc;AACtB,QAAA,YAAY,EAAE,MAAM;QACpB,MAAM,EAAE,sBAAsB,CAAC,MAAM;AACrC,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,SAAS,EAAE,6BAA6B;AACxC,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,OAAO,EAAE,0BAA0B;KACnC,CAAC;;AACuB,CAAA,EAAA,sCAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,MAAA,CAAA;AAYzB,UAAA,CAAA;AAVC,IAAA,iBAAiB,CAAC;AAClB,QAAA,MAAM,EAAE,cAAc;AACtB,QAAA,YAAY,EAAE,cAAc;QAC5B,MAAM,EAAE,sBAAsB,CAAC,MAAM;AACrC,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,SAAS,EAAE,6BAA6B;AACxC,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,OAAO,EAAE,0BAA0B;KACnC,CAAC;;AACa,CAAA,EAAA,sCAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAUf,UAAA,CAAA;AARC,IAAA,eAAe,CAAC;AAChB,QAAA,MAAM,EAAE,cAAc;AACtB,QAAA,IAAI,EAAE,wBAAwB;AAC9B,QAAA,QAAQ,EAAE,0BAA0B;QACpC,YAAY,EAAE,wBAAwB,CAAC,qBAAqB;AAC5D,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,UAAU,EAAE,IAAI;KAChB,CAAC;;AAC8E,CAAA,EAAA,sCAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAYhF,UAAA,CAAA;AAVC,IAAA,iBAAiB,CAAC;AAClB,QAAA,MAAM,EAAE,cAAc;AACtB,QAAA,YAAY,EAAE,KAAK;QACnB,MAAM,EAAE,sBAAsB,CAAC,MAAM;AACrC,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,SAAS,EAAE,yBAAyB;AACpC,QAAA,SAAS,EAAE,kBAAkB;AAC7B,QAAA,OAAO,EAAE,sBAAsB;KAC/B,CAAC;;AACa,CAAA,EAAA,sCAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;;;;"}
@@ -0,0 +1,2 @@
1
+ export { ExceptionDetailsForeignKeyViolationDTO } from './foreign-key-violation.class';
2
+ export { ExceptionDetailsUniqueViolationDTO } from './unique-violation.class';
@@ -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
+ }