@rvoh/dream 1.3.0 → 1.3.2

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 (196) hide show
  1. package/dist/cjs/src/Dream.js +2 -2
  2. package/dist/cjs/src/db/errors.js +16 -6
  3. package/dist/cjs/src/dream/QueryDriver/Kysely.js +14 -2
  4. package/dist/cjs/src/errors/db/CheckConstraintViolation.js +15 -0
  5. package/dist/cjs/src/errors/db/DataTypeColumnTypeMismatch.js +1 -5
  6. package/dist/cjs/src/errors/db/NotNullViolation.js +15 -0
  7. package/dist/cjs/src/index.js +6 -2
  8. package/dist/esm/src/Dream.js +3 -3
  9. package/dist/esm/src/db/errors.js +14 -4
  10. package/dist/esm/src/dream/QueryDriver/Kysely.js +15 -3
  11. package/dist/esm/src/errors/db/CheckConstraintViolation.js +12 -0
  12. package/dist/esm/src/errors/db/DataTypeColumnTypeMismatch.js +1 -5
  13. package/dist/esm/src/errors/db/NotNullViolation.js +12 -0
  14. package/dist/esm/src/index.js +2 -0
  15. package/dist/types/src/db/errors.d.ts +14 -2
  16. package/dist/types/src/errors/db/CheckConstraintViolation.d.ts +10 -0
  17. package/dist/types/src/errors/db/NotNullViolation.d.ts +10 -0
  18. package/dist/types/src/index.d.ts +2 -0
  19. package/docs/assets/navigation.js +1 -1
  20. package/docs/assets/search.js +1 -1
  21. package/docs/classes/Benchmark.html +2 -2
  22. package/docs/classes/CalendarDate.html +2 -2
  23. package/docs/classes/CheckConstraintViolation.html +14 -0
  24. package/docs/classes/CliFileWriter.html +2 -2
  25. package/docs/classes/CreateOrFindByFailedToCreateAndFind.html +3 -3
  26. package/docs/classes/DataTypeColumnTypeMismatch.html +3 -3
  27. package/docs/classes/Decorators.html +19 -19
  28. package/docs/classes/Dream.html +114 -114
  29. package/docs/classes/DreamApp.html +4 -4
  30. package/docs/classes/DreamBin.html +2 -2
  31. package/docs/classes/DreamCLI.html +4 -4
  32. package/docs/classes/DreamImporter.html +2 -2
  33. package/docs/classes/DreamLogos.html +2 -2
  34. package/docs/classes/DreamMigrationHelpers.html +7 -7
  35. package/docs/classes/DreamSerializerBuilder.html +8 -8
  36. package/docs/classes/DreamTransaction.html +2 -2
  37. package/docs/classes/Encrypt.html +2 -2
  38. package/docs/classes/Env.html +2 -2
  39. package/docs/classes/GlobalNameNotSet.html +3 -3
  40. package/docs/classes/NonLoadedAssociation.html +3 -3
  41. package/docs/classes/NotNullViolation.html +14 -0
  42. package/docs/classes/ObjectSerializerBuilder.html +8 -8
  43. package/docs/classes/Query.html +60 -60
  44. package/docs/classes/Range.html +2 -2
  45. package/docs/classes/RecordNotFound.html +3 -3
  46. package/docs/classes/ValidationError.html +3 -3
  47. package/docs/functions/DreamSerializer.html +1 -1
  48. package/docs/functions/ObjectSerializer.html +1 -1
  49. package/docs/functions/ReplicaSafe.html +1 -1
  50. package/docs/functions/STI.html +1 -1
  51. package/docs/functions/SoftDelete.html +1 -1
  52. package/docs/functions/camelize.html +1 -1
  53. package/docs/functions/capitalize.html +1 -1
  54. package/docs/functions/cloneDeepSafe.html +1 -1
  55. package/docs/functions/closeAllDbConnections.html +1 -1
  56. package/docs/functions/compact.html +1 -1
  57. package/docs/functions/dreamDbConnections.html +1 -1
  58. package/docs/functions/dreamPath.html +1 -1
  59. package/docs/functions/expandStiClasses.html +1 -1
  60. package/docs/functions/generateDream.html +1 -1
  61. package/docs/functions/globalClassNameFromFullyQualifiedModelName.html +1 -1
  62. package/docs/functions/groupBy.html +1 -1
  63. package/docs/functions/hyphenize.html +1 -1
  64. package/docs/functions/inferSerializerFromDreamOrViewModel.html +1 -1
  65. package/docs/functions/inferSerializersFromDreamClassOrViewModelClass.html +1 -1
  66. package/docs/functions/intersection.html +1 -1
  67. package/docs/functions/isDreamSerializer.html +1 -1
  68. package/docs/functions/isEmpty.html +1 -1
  69. package/docs/functions/loadRepl.html +1 -1
  70. package/docs/functions/lookupClassByGlobalName.html +1 -1
  71. package/docs/functions/normalizeUnicode.html +1 -1
  72. package/docs/functions/pascalize.html +1 -1
  73. package/docs/functions/pgErrorType.html +1 -1
  74. package/docs/functions/range-1.html +1 -1
  75. package/docs/functions/relativeDreamPath.html +1 -1
  76. package/docs/functions/round.html +1 -1
  77. package/docs/functions/serializerNameFromFullyQualifiedModelName.html +1 -1
  78. package/docs/functions/sharedPathPrefix.html +1 -1
  79. package/docs/functions/snakeify.html +1 -1
  80. package/docs/functions/sort.html +1 -1
  81. package/docs/functions/sortBy.html +1 -1
  82. package/docs/functions/sortObjectByKey.html +1 -1
  83. package/docs/functions/sortObjectByValue.html +1 -1
  84. package/docs/functions/standardizeFullyQualifiedModelName.html +1 -1
  85. package/docs/functions/uncapitalize.html +1 -1
  86. package/docs/functions/uniq.html +1 -1
  87. package/docs/functions/untypedDb.html +1 -1
  88. package/docs/functions/validateColumn.html +1 -1
  89. package/docs/functions/validateTable.html +1 -1
  90. package/docs/interfaces/BelongsToStatement.html +2 -2
  91. package/docs/interfaces/DecoratorContext.html +2 -2
  92. package/docs/interfaces/DreamAppInitOptions.html +2 -2
  93. package/docs/interfaces/DreamAppOpts.html +2 -2
  94. package/docs/interfaces/EncryptOptions.html +2 -2
  95. package/docs/interfaces/InternalAnyTypedSerializerRendersMany.html +2 -2
  96. package/docs/interfaces/InternalAnyTypedSerializerRendersOne.html +2 -2
  97. package/docs/interfaces/OpenapiDescription.html +2 -2
  98. package/docs/interfaces/OpenapiSchemaProperties.html +1 -1
  99. package/docs/interfaces/OpenapiSchemaPropertiesShorthand.html +1 -1
  100. package/docs/interfaces/OpenapiTypeFieldObject.html +1 -1
  101. package/docs/interfaces/SerializerRendererOpts.html +2 -2
  102. package/docs/modules.html +2 -0
  103. package/docs/types/Camelized.html +1 -1
  104. package/docs/types/CommonOpenapiSchemaObjectFields.html +1 -1
  105. package/docs/types/DateTime.html +1 -1
  106. package/docs/types/DbConnectionType.html +1 -1
  107. package/docs/types/DbTypes.html +1 -1
  108. package/docs/types/DreamAppAllowedPackageManagersEnum.html +1 -1
  109. package/docs/types/DreamAssociationMetadata.html +1 -1
  110. package/docs/types/DreamAttributes.html +1 -1
  111. package/docs/types/DreamClassAssociationAndStatement.html +1 -1
  112. package/docs/types/DreamClassColumn.html +1 -1
  113. package/docs/types/DreamColumn.html +1 -1
  114. package/docs/types/DreamColumnNames.html +1 -1
  115. package/docs/types/DreamLogLevel.html +1 -1
  116. package/docs/types/DreamLogger.html +1 -1
  117. package/docs/types/DreamModelSerializerType.html +1 -1
  118. package/docs/types/DreamOrViewModelClassSerializerKey.html +1 -1
  119. package/docs/types/DreamOrViewModelSerializerKey.html +1 -1
  120. package/docs/types/DreamParamSafeAttributes.html +1 -1
  121. package/docs/types/DreamParamSafeColumnNames.html +1 -1
  122. package/docs/types/DreamSerializable.html +1 -1
  123. package/docs/types/DreamSerializableArray.html +1 -1
  124. package/docs/types/DreamSerializerKey.html +1 -1
  125. package/docs/types/DreamSerializers.html +1 -1
  126. package/docs/types/DreamTableSchema.html +1 -1
  127. package/docs/types/DreamVirtualColumns.html +1 -1
  128. package/docs/types/EncryptAlgorithm.html +1 -1
  129. package/docs/types/HasManyStatement.html +1 -1
  130. package/docs/types/HasOneStatement.html +1 -1
  131. package/docs/types/Hyphenized.html +1 -1
  132. package/docs/types/IdType.html +1 -1
  133. package/docs/types/OpenapiAllTypes.html +1 -1
  134. package/docs/types/OpenapiFormats.html +1 -1
  135. package/docs/types/OpenapiNumberFormats.html +1 -1
  136. package/docs/types/OpenapiPrimitiveBaseTypes.html +1 -1
  137. package/docs/types/OpenapiPrimitiveTypes.html +1 -1
  138. package/docs/types/OpenapiSchemaArray.html +1 -1
  139. package/docs/types/OpenapiSchemaArrayShorthand.html +1 -1
  140. package/docs/types/OpenapiSchemaBase.html +1 -1
  141. package/docs/types/OpenapiSchemaBody.html +1 -1
  142. package/docs/types/OpenapiSchemaBodyShorthand.html +1 -1
  143. package/docs/types/OpenapiSchemaCommonFields.html +1 -1
  144. package/docs/types/OpenapiSchemaExpressionAllOf.html +1 -1
  145. package/docs/types/OpenapiSchemaExpressionAnyOf.html +1 -1
  146. package/docs/types/OpenapiSchemaExpressionOneOf.html +1 -1
  147. package/docs/types/OpenapiSchemaExpressionRef.html +1 -1
  148. package/docs/types/OpenapiSchemaExpressionRefSchemaShorthand.html +1 -1
  149. package/docs/types/OpenapiSchemaInteger.html +1 -1
  150. package/docs/types/OpenapiSchemaNull.html +1 -1
  151. package/docs/types/OpenapiSchemaNumber.html +1 -1
  152. package/docs/types/OpenapiSchemaObject.html +1 -1
  153. package/docs/types/OpenapiSchemaObjectAllOf.html +1 -1
  154. package/docs/types/OpenapiSchemaObjectAllOfShorthand.html +1 -1
  155. package/docs/types/OpenapiSchemaObjectAnyOf.html +1 -1
  156. package/docs/types/OpenapiSchemaObjectAnyOfShorthand.html +1 -1
  157. package/docs/types/OpenapiSchemaObjectBase.html +1 -1
  158. package/docs/types/OpenapiSchemaObjectBaseShorthand.html +1 -1
  159. package/docs/types/OpenapiSchemaObjectOneOf.html +1 -1
  160. package/docs/types/OpenapiSchemaObjectOneOfShorthand.html +1 -1
  161. package/docs/types/OpenapiSchemaObjectShorthand.html +1 -1
  162. package/docs/types/OpenapiSchemaPrimitiveGeneric.html +1 -1
  163. package/docs/types/OpenapiSchemaShorthandExpressionAllOf.html +1 -1
  164. package/docs/types/OpenapiSchemaShorthandExpressionAnyOf.html +1 -1
  165. package/docs/types/OpenapiSchemaShorthandExpressionOneOf.html +1 -1
  166. package/docs/types/OpenapiSchemaShorthandExpressionSerializableRef.html +1 -1
  167. package/docs/types/OpenapiSchemaShorthandExpressionSerializerRef.html +1 -1
  168. package/docs/types/OpenapiSchemaShorthandPrimitiveGeneric.html +1 -1
  169. package/docs/types/OpenapiSchemaString.html +1 -1
  170. package/docs/types/OpenapiShorthandAllTypes.html +1 -1
  171. package/docs/types/OpenapiShorthandPrimitiveBaseTypes.html +1 -1
  172. package/docs/types/OpenapiShorthandPrimitiveTypes.html +1 -1
  173. package/docs/types/OpenapiTypeField.html +1 -1
  174. package/docs/types/Pascalized.html +1 -1
  175. package/docs/types/PrimaryKeyType.html +1 -1
  176. package/docs/types/RoundingPrecision.html +1 -1
  177. package/docs/types/SerializerCasing.html +1 -1
  178. package/docs/types/SimpleObjectSerializerType.html +1 -1
  179. package/docs/types/Snakeified.html +1 -1
  180. package/docs/types/Timestamp.html +1 -1
  181. package/docs/types/UpdateableAssociationProperties.html +1 -1
  182. package/docs/types/UpdateableProperties.html +1 -1
  183. package/docs/types/ValidationType.html +1 -1
  184. package/docs/types/ViewModel.html +1 -1
  185. package/docs/types/ViewModelClass.html +1 -1
  186. package/docs/types/WhereStatementForDream.html +1 -1
  187. package/docs/types/WhereStatementForDreamClass.html +1 -1
  188. package/docs/variables/DateTime-1.html +1 -1
  189. package/docs/variables/DreamAppAllowedPackageManagersEnumValues.html +1 -1
  190. package/docs/variables/DreamConst.html +1 -1
  191. package/docs/variables/TRIGRAM_OPERATORS.html +1 -1
  192. package/docs/variables/openapiPrimitiveTypes-1.html +1 -1
  193. package/docs/variables/openapiShorthandPrimitiveTypes-1.html +1 -1
  194. package/docs/variables/ops.html +1 -1
  195. package/docs/variables/primaryKeyTypes.html +1 -1
  196. package/package.json +1 -1
@@ -923,7 +923,7 @@ class Dream {
923
923
  return dreamModel;
924
924
  }
925
925
  catch (err) {
926
- if ((0, errors_js_1.pgErrorType)(err) === 'UNIQUE_CONSTRAINT_VIOLATION') {
926
+ if ((0, errors_js_1.pgErrorType)(err) === errors_js_1.UNIQUE_VIOLATION) {
927
927
  const dreamModel = await this.findBy(this.extractAttributesFromUpdateableProperties(attributes));
928
928
  if (!dreamModel)
929
929
  throw new CreateOrFindByFailedToCreateAndFind_js_1.default(this);
@@ -977,7 +977,7 @@ class Dream {
977
977
  }, skipHooks ? { skipHooks } : undefined);
978
978
  }
979
979
  catch (err) {
980
- if ((0, errors_js_1.pgErrorType)(err) === 'UNIQUE_CONSTRAINT_VIOLATION') {
980
+ if ((0, errors_js_1.pgErrorType)(err) === errors_js_1.UNIQUE_VIOLATION) {
981
981
  const existingRecord = await this.findBy(this.extractAttributesFromUpdateableProperties(attributes));
982
982
  if (!existingRecord)
983
983
  throw new CreateOrUpdateByFailedToCreateAndUpdate_js_1.default(this);
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PG_ERRORS = void 0;
3
+ exports.PG_ERRORS = exports.UNIQUE_VIOLATION = exports.RESTRICT_VIOLATION = exports.NOT_NULL_VIOLATION = exports.INVALID_INPUT_SYNTAX = exports.INTEGRITY_CONSTRAINT_VIOLATION = exports.FOREIGN_KEY_VIOLATION = exports.CHECK_VIOLATION = void 0;
4
4
  exports.pgErrorType = pgErrorType;
5
5
  // after building for esm, importing pg using the following:
6
6
  //
@@ -11,12 +11,22 @@ exports.pgErrorType = pgErrorType;
11
11
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
12
12
  // @ts-ignore
13
13
  const pg_1 = require("pg");
14
- const UNIQUE_CONSTRAINT_VIOLATION = 'UNIQUE_CONSTRAINT_VIOLATION';
15
- const INVALID_INPUT_SYNTAX = 'INVALID_INPUT_SYNTAX';
14
+ exports.CHECK_VIOLATION = 'CHECK_VIOLATION';
15
+ exports.FOREIGN_KEY_VIOLATION = 'FOREIGN_KEY_VIOLATION';
16
+ exports.INTEGRITY_CONSTRAINT_VIOLATION = 'INTEGRITY_CONSTRAINT_VIOLATION';
17
+ exports.INVALID_INPUT_SYNTAX = 'INVALID_INPUT_SYNTAX';
18
+ exports.NOT_NULL_VIOLATION = 'NOT_NULL_VIOLATION';
19
+ exports.RESTRICT_VIOLATION = 'RESTRICT_VIOLATION';
20
+ exports.UNIQUE_VIOLATION = 'UNIQUE_VIOLATION';
16
21
  exports.PG_ERRORS = {
17
- '23505': UNIQUE_CONSTRAINT_VIOLATION,
18
- '22P02': INVALID_INPUT_SYNTAX,
19
- '22007': INVALID_INPUT_SYNTAX,
22
+ '23505': exports.UNIQUE_VIOLATION,
23
+ '22007': exports.INVALID_INPUT_SYNTAX,
24
+ '22P02': exports.INVALID_INPUT_SYNTAX,
25
+ '23502': exports.NOT_NULL_VIOLATION,
26
+ '23514': exports.CHECK_VIOLATION,
27
+ '23000': exports.INTEGRITY_CONSTRAINT_VIOLATION,
28
+ '23001': exports.RESTRICT_VIOLATION,
29
+ '23503': exports.FOREIGN_KEY_VIOLATION,
20
30
  };
21
31
  function pgErrorFromCode(code) {
22
32
  return exports.PG_ERRORS[code] || null;
@@ -20,7 +20,9 @@ const MissingThroughAssociationSource_js_1 = require("../../errors/associations/
20
20
  const ThroughAssociationConditionsIncompatibleWithThroughAssociationSource_js_1 = require("../../errors/associations/ThroughAssociationConditionsIncompatibleWithThroughAssociationSource.js");
21
21
  const CannotNegateSimilarityClause_js_1 = require("../../errors/CannotNegateSimilarityClause.js");
22
22
  const CannotPassUndefinedAsAValueToAWhereClause_js_1 = require("../../errors/CannotPassUndefinedAsAValueToAWhereClause.js");
23
+ const CheckConstraintViolation_js_1 = require("../../errors/db/CheckConstraintViolation.js");
23
24
  const DataTypeColumnTypeMismatch_js_1 = require("../../errors/db/DataTypeColumnTypeMismatch.js");
25
+ const NotNullViolation_js_1 = require("../../errors/db/NotNullViolation.js");
24
26
  const UnexpectedUndefined_js_1 = require("../../errors/UnexpectedUndefined.js");
25
27
  const CalendarDate_js_1 = require("../../helpers/CalendarDate.js");
26
28
  const camelize_js_1 = require("../../helpers/camelize.js");
@@ -436,11 +438,21 @@ class KyselyQueryDriver extends Base_js_1.default {
436
438
  }
437
439
  catch (error) {
438
440
  switch ((0, errors_js_1.pgErrorType)(error)) {
439
- case 'INVALID_INPUT_SYNTAX':
441
+ case errors_js_1.INVALID_INPUT_SYNTAX:
440
442
  throw new DataTypeColumnTypeMismatch_js_1.default({
441
443
  dream,
442
444
  error: error instanceof Error ? error : new Error('database column type error'),
443
445
  });
446
+ case errors_js_1.NOT_NULL_VIOLATION:
447
+ throw new NotNullViolation_js_1.default({
448
+ dream,
449
+ error: error instanceof Error ? error : new Error('not null violation'),
450
+ });
451
+ case errors_js_1.CHECK_VIOLATION:
452
+ throw new CheckConstraintViolation_js_1.default({
453
+ dream,
454
+ error: error instanceof Error ? error : new Error('check constraint violation'),
455
+ });
444
456
  }
445
457
  throw error;
446
458
  }
@@ -1781,7 +1793,7 @@ class KyselyQueryDriver extends Base_js_1.default {
1781
1793
  const { name: associationName } = (0, associationStringToNameAndAlias_js_1.default)(associationNameAndMaybeAlias);
1782
1794
  dreams = dreams.filter(dream => dream.hasAssociation(associationName));
1783
1795
  const groupedDreams = (0, groupBy_js_1.default)(dreams, dream => dream.sanitizedConstructorName);
1784
- return (await Promise.all(Object.keys(groupedDreams).map(key => this._applyOnePreload(associationName, groupedDreams[key], onStatement)))).flat();
1796
+ return (await Promise.all(Object.keys(groupedDreams).map(key => this._applyOnePreload(associationNameAndMaybeAlias, groupedDreams[key], onStatement)))).flat();
1785
1797
  }
1786
1798
  async _applyOnePreload(associationName, dreams, onStatement = {}) {
1787
1799
  if (!dreams.length)
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class CheckConstraintViolation extends Error {
4
+ dream;
5
+ error;
6
+ constructor({ dream, error }) {
7
+ super();
8
+ this.dream = dream;
9
+ this.error = error;
10
+ }
11
+ get message() {
12
+ return this.error.message;
13
+ }
14
+ }
15
+ exports.default = CheckConstraintViolation;
@@ -9,11 +9,7 @@ class DataTypeColumnTypeMismatch extends Error {
9
9
  this.error = error;
10
10
  }
11
11
  get message() {
12
- return `\
13
- Failed to save ${this.dream.sanitizedConstructorName}:
14
-
15
- ${this.error.message}
16
- `;
12
+ return this.error.message;
17
13
  }
18
14
  }
19
15
  exports.default = DataTypeColumnTypeMismatch;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class NotNullViolation extends Error {
4
+ dream;
5
+ error;
6
+ constructor({ dream, error }) {
7
+ super();
8
+ this.dream = dream;
9
+ this.error = error;
10
+ }
11
+ get message() {
12
+ return this.error.message;
13
+ }
14
+ }
15
+ exports.default = NotNullViolation;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dreamPath = exports.pascalize = exports.normalizeUnicode = exports.loadRepl = exports.isEmpty = exports.intersection = exports.hyphenize = exports.groupBy = exports.globalClassNameFromFullyQualifiedModelName = exports.Env = exports.DreamLogos = exports.DateTime = exports.compact = exports.cloneDeepSafe = exports.generateDream = exports.capitalize = exports.camelize = exports.CalendarDate = exports.Benchmark = exports.ValidationError = exports.RecordNotFound = exports.GlobalNameNotSet = exports.DataTypeColumnTypeMismatch = exports.CreateOrFindByFailedToCreateAndFind = exports.NonLoadedAssociation = exports.Encrypt = exports.Query = exports.DreamTransaction = exports.openapiShorthandPrimitiveTypes = exports.openapiPrimitiveTypes = exports.DreamConst = exports.Dream = exports.DreamAppAllowedPackageManagersEnumValues = exports.DreamApp = exports.lookupClassByGlobalName = exports.DreamImporter = exports.Decorators = exports.STI = exports.SoftDelete = exports.ReplicaSafe = exports.validateTable = exports.validateColumn = exports.DreamMigrationHelpers = exports.untypedDb = exports.pgErrorType = exports.dreamDbConnections = exports.closeAllDbConnections = exports.DreamCLI = exports.CliFileWriter = exports.DreamBin = void 0;
4
- exports.ObjectSerializerBuilder = exports.DreamSerializerBuilder = exports.ObjectSerializer = exports.DreamSerializer = exports.serializerNameFromFullyQualifiedModelName = exports.isDreamSerializer = exports.inferSerializersFromDreamClassOrViewModelClass = exports.inferSerializerFromDreamOrViewModel = exports.ops = exports.uniq = exports.uncapitalize = exports.expandStiClasses = exports.standardizeFullyQualifiedModelName = exports.sortObjectByValue = exports.sortObjectByKey = exports.sortBy = exports.sort = exports.snakeify = exports.round = exports.range = exports.Range = exports.sharedPathPrefix = exports.relativeDreamPath = void 0;
3
+ exports.normalizeUnicode = exports.loadRepl = exports.isEmpty = exports.intersection = exports.hyphenize = exports.groupBy = exports.globalClassNameFromFullyQualifiedModelName = exports.Env = exports.DreamLogos = exports.DateTime = exports.compact = exports.cloneDeepSafe = exports.generateDream = exports.capitalize = exports.camelize = exports.CalendarDate = exports.Benchmark = exports.ValidationError = exports.RecordNotFound = exports.GlobalNameNotSet = exports.NotNullViolation = exports.DataTypeColumnTypeMismatch = exports.CheckConstraintViolation = exports.CreateOrFindByFailedToCreateAndFind = exports.NonLoadedAssociation = exports.Encrypt = exports.Query = exports.DreamTransaction = exports.openapiShorthandPrimitiveTypes = exports.openapiPrimitiveTypes = exports.DreamConst = exports.Dream = exports.DreamAppAllowedPackageManagersEnumValues = exports.DreamApp = exports.lookupClassByGlobalName = exports.DreamImporter = exports.Decorators = exports.STI = exports.SoftDelete = exports.ReplicaSafe = exports.validateTable = exports.validateColumn = exports.DreamMigrationHelpers = exports.untypedDb = exports.pgErrorType = exports.dreamDbConnections = exports.closeAllDbConnections = exports.DreamCLI = exports.CliFileWriter = exports.DreamBin = void 0;
4
+ exports.ObjectSerializerBuilder = exports.DreamSerializerBuilder = exports.ObjectSerializer = exports.DreamSerializer = exports.serializerNameFromFullyQualifiedModelName = exports.isDreamSerializer = exports.inferSerializersFromDreamClassOrViewModelClass = exports.inferSerializerFromDreamOrViewModel = exports.ops = exports.uniq = exports.uncapitalize = exports.expandStiClasses = exports.standardizeFullyQualifiedModelName = exports.sortObjectByValue = exports.sortObjectByKey = exports.sortBy = exports.sort = exports.snakeify = exports.round = exports.range = exports.Range = exports.sharedPathPrefix = exports.relativeDreamPath = exports.dreamPath = exports.pascalize = void 0;
5
5
  var index_js_1 = require("./bin/index.js");
6
6
  Object.defineProperty(exports, "DreamBin", { enumerable: true, get: function () { return index_js_1.default; } });
7
7
  var CliFileWriter_js_1 = require("./cli/CliFileWriter.js");
@@ -52,8 +52,12 @@ var NonLoadedAssociation_js_1 = require("./errors/associations/NonLoadedAssociat
52
52
  Object.defineProperty(exports, "NonLoadedAssociation", { enumerable: true, get: function () { return NonLoadedAssociation_js_1.default; } });
53
53
  var CreateOrFindByFailedToCreateAndFind_js_1 = require("./errors/CreateOrFindByFailedToCreateAndFind.js");
54
54
  Object.defineProperty(exports, "CreateOrFindByFailedToCreateAndFind", { enumerable: true, get: function () { return CreateOrFindByFailedToCreateAndFind_js_1.default; } });
55
+ var CheckConstraintViolation_js_1 = require("./errors/db/CheckConstraintViolation.js");
56
+ Object.defineProperty(exports, "CheckConstraintViolation", { enumerable: true, get: function () { return CheckConstraintViolation_js_1.default; } });
55
57
  var DataTypeColumnTypeMismatch_js_1 = require("./errors/db/DataTypeColumnTypeMismatch.js");
56
58
  Object.defineProperty(exports, "DataTypeColumnTypeMismatch", { enumerable: true, get: function () { return DataTypeColumnTypeMismatch_js_1.default; } });
59
+ var NotNullViolation_js_1 = require("./errors/db/NotNullViolation.js");
60
+ Object.defineProperty(exports, "NotNullViolation", { enumerable: true, get: function () { return NotNullViolation_js_1.default; } });
57
61
  var GlobalNameNotSet_js_1 = require("./errors/dream-app/GlobalNameNotSet.js");
58
62
  Object.defineProperty(exports, "GlobalNameNotSet", { enumerable: true, get: function () { return GlobalNameNotSet_js_1.default; } });
59
63
  var RecordNotFound_js_1 = require("./errors/RecordNotFound.js");
@@ -1,5 +1,5 @@
1
1
  import yoctocolors from 'yoctocolors';
2
- import { pgErrorType } from './db/errors.js';
2
+ import { pgErrorType, UNIQUE_VIOLATION } from './db/errors.js';
3
3
  import db from './db/index.js';
4
4
  import associationToGetterSetterProp from './decorators/field/association/associationToGetterSetterProp.js';
5
5
  import { blankAssociationsFactory } from './decorators/field/association/shared.js';
@@ -921,7 +921,7 @@ export default class Dream {
921
921
  return dreamModel;
922
922
  }
923
923
  catch (err) {
924
- if (pgErrorType(err) === 'UNIQUE_CONSTRAINT_VIOLATION') {
924
+ if (pgErrorType(err) === UNIQUE_VIOLATION) {
925
925
  const dreamModel = await this.findBy(this.extractAttributesFromUpdateableProperties(attributes));
926
926
  if (!dreamModel)
927
927
  throw new CreateOrFindByFailedToCreateAndFind(this);
@@ -975,7 +975,7 @@ export default class Dream {
975
975
  }, skipHooks ? { skipHooks } : undefined);
976
976
  }
977
977
  catch (err) {
978
- if (pgErrorType(err) === 'UNIQUE_CONSTRAINT_VIOLATION') {
978
+ if (pgErrorType(err) === UNIQUE_VIOLATION) {
979
979
  const existingRecord = await this.findBy(this.extractAttributesFromUpdateableProperties(attributes));
980
980
  if (!existingRecord)
981
981
  throw new CreateOrUpdateByFailedToCreateAndUpdate(this);
@@ -7,12 +7,22 @@
7
7
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
8
8
  // @ts-ignore
9
9
  import pg from 'pg';
10
- const UNIQUE_CONSTRAINT_VIOLATION = 'UNIQUE_CONSTRAINT_VIOLATION';
11
- const INVALID_INPUT_SYNTAX = 'INVALID_INPUT_SYNTAX';
10
+ export const CHECK_VIOLATION = 'CHECK_VIOLATION';
11
+ export const FOREIGN_KEY_VIOLATION = 'FOREIGN_KEY_VIOLATION';
12
+ export const INTEGRITY_CONSTRAINT_VIOLATION = 'INTEGRITY_CONSTRAINT_VIOLATION';
13
+ export const INVALID_INPUT_SYNTAX = 'INVALID_INPUT_SYNTAX';
14
+ export const NOT_NULL_VIOLATION = 'NOT_NULL_VIOLATION';
15
+ export const RESTRICT_VIOLATION = 'RESTRICT_VIOLATION';
16
+ export const UNIQUE_VIOLATION = 'UNIQUE_VIOLATION';
12
17
  export const PG_ERRORS = {
13
- '23505': UNIQUE_CONSTRAINT_VIOLATION,
14
- '22P02': INVALID_INPUT_SYNTAX,
18
+ '23505': UNIQUE_VIOLATION,
15
19
  '22007': INVALID_INPUT_SYNTAX,
20
+ '22P02': INVALID_INPUT_SYNTAX,
21
+ '23502': NOT_NULL_VIOLATION,
22
+ '23514': CHECK_VIOLATION,
23
+ '23000': INTEGRITY_CONSTRAINT_VIOLATION,
24
+ '23001': RESTRICT_VIOLATION,
25
+ '23503': FOREIGN_KEY_VIOLATION,
16
26
  };
17
27
  function pgErrorFromCode(code) {
18
28
  return PG_ERRORS[code] || null;
@@ -3,7 +3,7 @@ import pluralize from 'pluralize-esm';
3
3
  import writeSyncFile from '../../bin/helpers/sync.js';
4
4
  import { CliFileWriter } from '../../cli/CliFileWriter.js';
5
5
  import DreamCLI from '../../cli/index.js';
6
- import { pgErrorType } from '../../db/errors.js';
6
+ import { CHECK_VIOLATION, INVALID_INPUT_SYNTAX, NOT_NULL_VIOLATION, pgErrorType } from '../../db/errors.js';
7
7
  import _db from '../../db/index.js';
8
8
  import associationToGetterSetterProp from '../../decorators/field/association/associationToGetterSetterProp.js';
9
9
  import PackageManager from '../../dream-app/helpers/PackageManager.js';
@@ -18,7 +18,9 @@ import MissingThroughAssociationSource from '../../errors/associations/MissingTh
18
18
  import ThroughAssociationConditionsIncompatibleWithThroughAssociationSource from '../../errors/associations/ThroughAssociationConditionsIncompatibleWithThroughAssociationSource.js';
19
19
  import CannotNegateSimilarityClause from '../../errors/CannotNegateSimilarityClause.js';
20
20
  import CannotPassUndefinedAsAValueToAWhereClause from '../../errors/CannotPassUndefinedAsAValueToAWhereClause.js';
21
+ import CheckConstraintViolation from '../../errors/db/CheckConstraintViolation.js';
21
22
  import DataTypeColumnTypeMismatch from '../../errors/db/DataTypeColumnTypeMismatch.js';
23
+ import NotNullViolation from '../../errors/db/NotNullViolation.js';
22
24
  import UnexpectedUndefined from '../../errors/UnexpectedUndefined.js';
23
25
  import CalendarDate from '../../helpers/CalendarDate.js';
24
26
  import camelize from '../../helpers/camelize.js';
@@ -434,11 +436,21 @@ export default class KyselyQueryDriver extends QueryDriverBase {
434
436
  }
435
437
  catch (error) {
436
438
  switch (pgErrorType(error)) {
437
- case 'INVALID_INPUT_SYNTAX':
439
+ case INVALID_INPUT_SYNTAX:
438
440
  throw new DataTypeColumnTypeMismatch({
439
441
  dream,
440
442
  error: error instanceof Error ? error : new Error('database column type error'),
441
443
  });
444
+ case NOT_NULL_VIOLATION:
445
+ throw new NotNullViolation({
446
+ dream,
447
+ error: error instanceof Error ? error : new Error('not null violation'),
448
+ });
449
+ case CHECK_VIOLATION:
450
+ throw new CheckConstraintViolation({
451
+ dream,
452
+ error: error instanceof Error ? error : new Error('check constraint violation'),
453
+ });
442
454
  }
443
455
  throw error;
444
456
  }
@@ -1779,7 +1791,7 @@ export default class KyselyQueryDriver extends QueryDriverBase {
1779
1791
  const { name: associationName } = associationStringToNameAndAlias(associationNameAndMaybeAlias);
1780
1792
  dreams = dreams.filter(dream => dream.hasAssociation(associationName));
1781
1793
  const groupedDreams = groupBy(dreams, dream => dream.sanitizedConstructorName);
1782
- return (await Promise.all(Object.keys(groupedDreams).map(key => this._applyOnePreload(associationName, groupedDreams[key], onStatement)))).flat();
1794
+ return (await Promise.all(Object.keys(groupedDreams).map(key => this._applyOnePreload(associationNameAndMaybeAlias, groupedDreams[key], onStatement)))).flat();
1783
1795
  }
1784
1796
  async _applyOnePreload(associationName, dreams, onStatement = {}) {
1785
1797
  if (!dreams.length)
@@ -0,0 +1,12 @@
1
+ export default class CheckConstraintViolation extends Error {
2
+ dream;
3
+ error;
4
+ constructor({ dream, error }) {
5
+ super();
6
+ this.dream = dream;
7
+ this.error = error;
8
+ }
9
+ get message() {
10
+ return this.error.message;
11
+ }
12
+ }
@@ -7,10 +7,6 @@ export default class DataTypeColumnTypeMismatch extends Error {
7
7
  this.error = error;
8
8
  }
9
9
  get message() {
10
- return `\
11
- Failed to save ${this.dream.sanitizedConstructorName}:
12
-
13
- ${this.error.message}
14
- `;
10
+ return this.error.message;
15
11
  }
16
12
  }
@@ -0,0 +1,12 @@
1
+ export default class NotNullViolation extends Error {
2
+ dream;
3
+ error;
4
+ constructor({ dream, error }) {
5
+ super();
6
+ this.dream = dream;
7
+ this.error = error;
8
+ }
9
+ get message() {
10
+ return this.error.message;
11
+ }
12
+ }
@@ -21,7 +21,9 @@ export { default as Query } from './dream/Query.js';
21
21
  export { default as Encrypt } from './encrypt/index.js';
22
22
  export { default as NonLoadedAssociation } from './errors/associations/NonLoadedAssociation.js';
23
23
  export { default as CreateOrFindByFailedToCreateAndFind } from './errors/CreateOrFindByFailedToCreateAndFind.js';
24
+ export { default as CheckConstraintViolation } from './errors/db/CheckConstraintViolation.js';
24
25
  export { default as DataTypeColumnTypeMismatch } from './errors/db/DataTypeColumnTypeMismatch.js';
26
+ export { default as NotNullViolation } from './errors/db/NotNullViolation.js';
25
27
  export { default as GlobalNameNotSet } from './errors/dream-app/GlobalNameNotSet.js';
26
28
  export { default as RecordNotFound } from './errors/RecordNotFound.js';
27
29
  export { default as ValidationError } from './errors/ValidationError.js';
@@ -1,7 +1,19 @@
1
+ export declare const CHECK_VIOLATION = "CHECK_VIOLATION";
2
+ export declare const FOREIGN_KEY_VIOLATION = "FOREIGN_KEY_VIOLATION";
3
+ export declare const INTEGRITY_CONSTRAINT_VIOLATION = "INTEGRITY_CONSTRAINT_VIOLATION";
4
+ export declare const INVALID_INPUT_SYNTAX = "INVALID_INPUT_SYNTAX";
5
+ export declare const NOT_NULL_VIOLATION = "NOT_NULL_VIOLATION";
6
+ export declare const RESTRICT_VIOLATION = "RESTRICT_VIOLATION";
7
+ export declare const UNIQUE_VIOLATION = "UNIQUE_VIOLATION";
1
8
  export declare const PG_ERRORS: {
2
- readonly '23505': "UNIQUE_CONSTRAINT_VIOLATION";
3
- readonly '22P02': "INVALID_INPUT_SYNTAX";
9
+ readonly '23505': "UNIQUE_VIOLATION";
4
10
  readonly '22007': "INVALID_INPUT_SYNTAX";
11
+ readonly '22P02': "INVALID_INPUT_SYNTAX";
12
+ readonly '23502': "NOT_NULL_VIOLATION";
13
+ readonly '23514': "CHECK_VIOLATION";
14
+ readonly '23000': "INTEGRITY_CONSTRAINT_VIOLATION";
15
+ readonly '23001': "RESTRICT_VIOLATION";
16
+ readonly '23503': "FOREIGN_KEY_VIOLATION";
5
17
  };
6
18
  type PgErrorType = (typeof PG_ERRORS)[keyof typeof PG_ERRORS];
7
19
  export declare function pgErrorType(error: any): PgErrorType | null;
@@ -0,0 +1,10 @@
1
+ import Dream from '../../Dream.js';
2
+ export default class CheckConstraintViolation extends Error {
3
+ dream: Dream;
4
+ error: Error;
5
+ constructor({ dream, error }: {
6
+ dream: Dream;
7
+ error: Error;
8
+ });
9
+ get message(): string;
10
+ }
@@ -0,0 +1,10 @@
1
+ import Dream from '../../Dream.js';
2
+ export default class NotNullViolation extends Error {
3
+ dream: Dream;
4
+ error: Error;
5
+ constructor({ dream, error }: {
6
+ dream: Dream;
7
+ error: Error;
8
+ });
9
+ get message(): string;
10
+ }
@@ -22,7 +22,9 @@ export { default as Query } from './dream/Query.js';
22
22
  export { default as Encrypt, type EncryptAlgorithm, type EncryptOptions } from './encrypt/index.js';
23
23
  export { default as NonLoadedAssociation } from './errors/associations/NonLoadedAssociation.js';
24
24
  export { default as CreateOrFindByFailedToCreateAndFind } from './errors/CreateOrFindByFailedToCreateAndFind.js';
25
+ export { default as CheckConstraintViolation } from './errors/db/CheckConstraintViolation.js';
25
26
  export { default as DataTypeColumnTypeMismatch } from './errors/db/DataTypeColumnTypeMismatch.js';
27
+ export { default as NotNullViolation } from './errors/db/NotNullViolation.js';
26
28
  export { default as GlobalNameNotSet } from './errors/dream-app/GlobalNameNotSet.js';
27
29
  export { default as RecordNotFound } from './errors/RecordNotFound.js';
28
30
  export { default as ValidationError } from './errors/ValidationError.js';
@@ -1 +1 @@
1
- window.navigationData = "data:application/octet-stream;base64,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"
1
+ window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE62bX3PjNBTFv0uelz+7wAL7lqbNkqFtQhLKA8Mwt/ZtIipLRlbKBobvzshOYlu+vpJd3jq55/yOLduSbKm//jOx+MlOPkyuUCX7DMzz5M0kB7uffJgkEooCiy8upc/3NpOTN5NnodLJh7fvvvv3zcU/A4kqBXMNFruIZpWl7DF5nmlVWANC2QehJVihFUHsUbJ0KeZC4i9GWDQEsllmOQbB4tLMhUqvjnMQEtOtrn6dqtT9TNDDJi7zGixsjznOtDxkyv11J4oMbLLvRvVr2QRMtAGrTUEQLzWWYBAywux+Dvqmed5jneZ50H0liHvkXAm6Z7eLHvfsdhF0L7JcG/KOapWDnFu901TbX2pBwp3YmfIp+AFljuSFpGRB7gaNACn+RnN1EDLtPdWOLkjeGlAFJPQz7is42o1KzDG3XcipwHtfKN8L5/ko9SPIe8jwXtsNEsG+gqPda3WrIcV0WhQ6ET19HqXiqfb+ICXTi/oKjrZ8/AMTG3Er9Ag59k8HNMcuqfyZ861B7YjhpvyZ9bn+LL3Xdq4PVGfdrnOkB5AiLdvuxhhNtIYn4FhXKLXaFVu9sWAxQ9W4q4SyaJ4gKcdjX9aGvvvmPdWtz7Qqf6KQvogFnvrkhRJ2mbsTK2hmVxeDXeaW5zkBBzo98NyhtSUcbOFMCuRUHd04mtZ39RpViqa4A3UkM6Kcr4peKhyXvFTIBS9zVJCLaywSI/J2x9GI6coioJtkjxmsjM7RWIH05enRjsBv9trYPTQf8XDOxRQR6Bp4LlCmVafHxXhSDu5fMTS9TwUt5eAzyNAZGm1ij3k5ST8VPPeX33/79pt3TYLOMq1arVedU3l6RYfLy0Np7p1hKzL0seffg/7HmVYKyxmEuwYdjlcP85yqc5ann4PuUy82lVL/hekKkmfY4R0o2KEpbtQh64CDjrjMes5whxZSsEAndXVxfGuNeDxYomXa5SjazI2ejUOZqpQYFBt8zhCfWL0x9QdU9TgegxpKcZNIulkb9Sjerd7d4gtKEnYuxpJ2zdlfm7Pz53s9lDudoqz7MPL57NFF8ZfmQeBfpbu8gDXiRzySSaxjaOaguOFJKzCQbeAJAw8foRvGD92GlDAq4XzO8CjpC98UDCZOjQG62TuqQez+yzn8GtYOumkb9Sje1p1SNcqSvEY9ivcgjD2ArC4sfYhtSYh6mnxP5U4bYfed8c6vh3g/QDmV7h0e/HoEb6mQwzXLQdox36Oiplt1JcRYpFS/WP0a8p6mXVMpyVmLV46kzbXJwPbBTtVI1v0he0TDE1uaSO7KiExY8YJXUCB37l3h0IQo+hBy9XiSvVdXMZxJvBX1wfvehfgU15Is2wmGEXXKN4UTDCbGNURLOSijevOh34p6hYMSbj7lBovCTXilXD6xIZ52bI46xuc47cicpcLonFI7MmeNsSlrfEVG9VPcDccZBx2B+xJETNIpzSCu+2bMQp1gINH18AGmkwyi+h9lCCr5MSaGGn7eGrqx/Lj7hTKMSQw+2Q3dWP6gM2oZRiQGx6FaNpI+5HRa+hF54R6xoRvLH3JCbcOIxCFh43Iu06+PqNCIhA3yxYOSLsc3ZEjuM706Ofgo95lemxy+SftMr01uvtKHBvWw/f86GvddfvSxlOZxRzLoxu91Dcu2RqgdH1RKYqnnowq8vHZ0Q/nRr4qMY3TmsLwhWZcFpx76pR7iraBIgFwyqitBhhEZmOOPeKS+ZbSrIdbaLcoLtVsZTETRWp+scB1BiFg/cDMoiJvYrwd5Issl+hshqDPvVwYzFDyjeBLdq1JXQgy3flZYyHIfcSmECD/nKVgsP6PWiy/U+m7FDcjj02Ii4rn1Jg3qGrWrQdb5e34Hcy5EE8oFiF5MWQ2xftmjqb9WzrXxNulVTFo1jk0eNCMdvv77Aka461uvAX/2tk35qvMZm11AfQB5aN5IjYBIbyi+3KnaG1BWGcR2vfi4nt79vlzdrKfb5XpDkToiBqj5L5g1lBSyra0jB7pORo8jENZD5C5I3hpsSIAnCV3duuOuYU8HVW4p6CzjtGHvv2a22FE0X8Pg1phLkYBbl6NIjTID2WwXlHmzXXAm/WSvUaIlg+sqg0hOu1EowLnG2nNhoR9wrnIIqRVeI+Z9DdgS8KACp1I2d5oUPcCukAPrLIfmB64Gqiox5tTdlsFD6qpCyJVD9JFckQHgpxzcxg0xq3ZPUhxfw+B27i0GLHpjXs1qCThQuZe3DHRr23Ojs/lByuNPB5DlRKsckF2JTIl2c4dg9CG/OpL8qsSY9+e1Rsp+KTIAoZ7Q1J2OOwV/+wKFjrDFhxYXe9mU/kaNiPwAgT0Ui6ZAb6N6M6iuc5giYrzoiFjgTZZb8q44lRiz1JC6QYByn2usXT8f8rLlro71bneaRkoZuHKLve7sf1Yi0SlJ9TUMLj+/qFKcS5ED7Mrt2+3XgwaiLjMQ096uXtvLgj/TaVvR7dB/wWuui+2IOGB753sD0t3y3jIWl/tyRFcYbeYOYA/GTcXtfmXwSXwiczwNh6velsln6Fzj7NqQA7D7PWCje/OqErCeVhSOrX1IbUZDEgkrX2VCuFLEAS24//RLxd845L4IupjIg+Jne806ixF/0nbxJ2tzr7jp9SPtPRUZwEv1eQH9HaM1pa2IQG3b++m6pG13P937r//97T+J27+KEDoAAA=="
@@ -1 +1 @@
1
- window.searchData = "data:application/octet-stream;base64,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";
1
+ window.searchData = "data:application/octet-stream;base64,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";