Browse Source

chore: adds the `'sparse'` mode of property uniqueness

e22m4u 1 year ago
parent
commit
2d7ce2cb3b
100 changed files with 40 additions and 4 deletions
  1. 21 1
      README.md
  2. 1 1
      docs/assets/navigation.js
  3. 0 0
      docs/assets/search.js
  4. 0 0
      docs/classes/Adapter.html
  5. 0 0
      docs/classes/AdapterLoader.html
  6. 0 0
      docs/classes/AdapterRegistry.html
  7. 0 0
      docs/classes/BelongsToResolver.html
  8. 0 0
      docs/classes/DatasourceDefinitionValidator.html
  9. 0 0
      docs/classes/DefinitionRegistry.html
  10. 0 0
      docs/classes/EmptyValuesDefiner.html
  11. 0 0
      docs/classes/FieldsClauseTool.html
  12. 0 0
      docs/classes/HasManyResolver.html
  13. 0 0
      docs/classes/HasOneResolver.html
  14. 0 0
      docs/classes/IncludeClauseTool.html
  15. 0 0
      docs/classes/InvalidArgumentError.html
  16. 0 0
      docs/classes/InvalidOperatorValueError.html
  17. 0 0
      docs/classes/ModelDataSanitizer.html
  18. 0 0
      docs/classes/ModelDataTransformer.html
  19. 0 0
      docs/classes/ModelDataValidator.html
  20. 0 0
      docs/classes/ModelDefinitionUtils.html
  21. 0 0
      docs/classes/ModelDefinitionValidator.html
  22. 0 0
      docs/classes/NotImplementedError.html
  23. 0 0
      docs/classes/OperatorClauseTool.html
  24. 0 0
      docs/classes/OrderClauseTool.html
  25. 0 0
      docs/classes/PrimaryKeysDefinitionValidator.html
  26. 0 0
      docs/classes/PropertiesDefinitionValidator.html
  27. 0 0
      docs/classes/PropertyTransformerRegistry.html
  28. 0 0
      docs/classes/PropertyUniquenessValidator.html
  29. 0 0
      docs/classes/PropertyValidatorRegistry.html
  30. 0 0
      docs/classes/ReferencesManyResolver.html
  31. 0 0
      docs/classes/RelationsDefinitionValidator.html
  32. 0 0
      docs/classes/Repository.html
  33. 0 0
      docs/classes/RepositoryRegistry.html
  34. 0 0
      docs/classes/Schema.html
  35. 0 0
      docs/classes/SliceClauseTool.html
  36. 0 0
      docs/classes/WhereClauseTool.html
  37. 0 0
      docs/enums/DataType.html
  38. 0 0
      docs/enums/DecoratorTargetType.html
  39. 0 0
      docs/enums/RelationType.html
  40. 0 0
      docs/functions/capitalize.html
  41. 0 0
      docs/functions/cloneDeep.html
  42. 0 0
      docs/functions/excludeObjectKeys.html
  43. 0 0
      docs/functions/getCtorName.html
  44. 0 0
      docs/functions/getDecoratorTargetType.html
  45. 0 0
      docs/functions/getValueByPath.html
  46. 0 0
      docs/functions/isCtor.html
  47. 0 0
      docs/functions/isDeepEqual.html
  48. 0 0
      docs/functions/isPureObject.html
  49. 0 0
      docs/functions/selectObjectKeys.html
  50. 0 0
      docs/functions/singularize.html
  51. 0 0
      docs/functions/stringToRegexp.html
  52. 15 2
      docs/index.html
  53. 0 0
      docs/interfaces/AndClause.html
  54. 0 0
      docs/interfaces/Constructor.html
  55. 0 0
      docs/interfaces/OrClause.html
  56. 3 0
      docs/modules.html
  57. 0 0
      docs/types/AnyObject.html
  58. 0 0
      docs/types/BelongsToDefinition.html
  59. 0 0
      docs/types/CountMethod.html
  60. 0 0
      docs/types/DEFAULT_PRIMARY_KEY_PROPERTY_NAME.html
  61. 0 0
      docs/types/DatasourceDefinition.html
  62. 0 0
      docs/types/FieldsClause.html
  63. 0 0
      docs/types/FilterClause.html
  64. 0 0
      docs/types/Flatten.html
  65. 0 0
      docs/types/FullPropertyDefinition.html
  66. 0 0
      docs/types/HasManyDefinition.html
  67. 0 0
      docs/types/HasOneDefinition.html
  68. 0 0
      docs/types/Identity.html
  69. 0 0
      docs/types/IncludeClause.html
  70. 0 0
      docs/types/ItemFilterClause.html
  71. 0 0
      docs/types/ModelData.html
  72. 0 0
      docs/types/ModelDefinition.html
  73. 0 0
      docs/types/ModelId.html
  74. 0 0
      docs/types/NestedIncludeClause.html
  75. 0 0
      docs/types/NormalizedFieldsClause.html
  76. 0 0
      docs/types/NormalizedIncludeClause.html
  77. 0 0
      docs/types/OperatorClause.html
  78. 0 0
      docs/types/OptionalUnlessRequiredId.html
  79. 0 0
      docs/types/OrderClause.html
  80. 0 0
      docs/types/PartialBy.html
  81. 0 0
      docs/types/PartialWithoutId.html
  82. 0 0
      docs/types/PolyBelongsToDefinition.html
  83. 0 0
      docs/types/PolyHasManyDefinitionWithTargetKeys.html
  84. 0 0
      docs/types/PolyHasManyDefinitionWithTargetRelationName.html
  85. 0 0
      docs/types/PolyHasOneDefinitionWithTargetKeys.html
  86. 0 0
      docs/types/PolyHasOneDefinitionWithTargetRelationName.html
  87. 0 0
      docs/types/PropertiesClause.html
  88. 0 0
      docs/types/PropertyDefinition.html
  89. 0 0
      docs/types/PropertyDefinitionMap.html
  90. 0 0
      docs/types/PropertyTransformOptions.html
  91. 0 0
      docs/types/PropertyTransformer.html
  92. 0 0
      docs/types/PropertyTransformerContext.html
  93. 0 0
      docs/types/PropertyUniqueness.html
  94. 0 0
      docs/types/PropertyValidateOptions.html
  95. 0 0
      docs/types/PropertyValidator.html
  96. 0 0
      docs/types/PropertyValidatorContext.html
  97. 0 0
      docs/types/ReferencesManyDefinition.html
  98. 0 0
      docs/types/RelationDefinition.html
  99. 0 0
      docs/types/RelationDefinitionMap.html
  100. 0 0
      docs/types/WhereClause.html

+ 21 - 1
README.md

@@ -224,7 +224,23 @@ schema.defineModel({
 - `required: boolean` объявить свойство обязательным
 - `default: any` значение по умолчанию
 - `validate: string | array | object` см. [Валидаторы](#Валидаторы)
-- `unique: boolean` допускать только уникальные значения
+- `unique: boolean | 'sparse'` допускать только уникальные значения
+
+**unique**
+
+Перед записью в базу значение может быть проверено на уникальность.
+Проверка работает в двух режимах `true` и `'sparse'`. Если параметр
+установлен в значение `true`, то будет проверяться каждое входящее
+значение данного свойства (включая `undefined` и `null`).
+
+Параметр `unique` в режиме `'sparse'` исключает из проверки пустые
+значения, список которых отличается в зависимости от типа свойства.
+Например, для типа `string` пустым значением являются `undefined`,
+`null` и `''` (пустая строка).
+
+- `unique: true` проверять значение на уникальность
+- `unique: 'sparse'` исключить из проверки пустые значения
+- `unique: false` не проверять на уникальность (по умолчанию)
 
 **Примеры**
 
@@ -254,6 +270,10 @@ schema.defineModel({
       type: DataType.NUMBER, // тип свойства "number" (обязательно)
       default: 0, // значение по умолчанию
     },
+    code: {
+      type: DataType.NUMBER, // тип свойства "number" (обязательно)
+      unique: PropertyUniqueness.UNIQUE, // проверять уникальность
+    },
   },
 });
 ```

+ 1 - 1
docs/assets/navigation.js

@@ -1 +1 @@
-window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA6WZa2/bNhSG/4s+B8sarN2Wb47jYkbr2FCdFsFQBKx0bHOjSJWkiqjF/vsgy7IoXg5p9Kve9zyHl8Ob/fePTMOLzm6ze6LJtq0hu8pqog/ZbQa8qdT18P2Xg65YdpX9S3mZ3f7x39UYCYWQRAu5JXIP2gtxLWFeDoxoKrgPZGphwqwktQY5BheMKAXq+iRMI1/deGLfC1IihF5O4OSwp0rLNkgaDBjrDpjge7UVOSjBvvna5VgwXjenSjSygHvYUU67Ef1IGC27KXLZqB3Nc7aHh8H1YMS3FFip5ow0CrZCMJdnOzDaX0StCG/Do2oZIqw1BxRl6BhpyQvWlIB10rHgvG/dZM3kvqmA64WUvkn2uRKo6xqOC/sjYQ3gaNeK8VeiBNZV3gfSlcd335i6niTiVhKudkJWKNNwJVGRBeR64sTzsnjUlKkQc+q6gBpt7WUr/UHoZVUz6EoHykAdeEwYc6gXbCG4HpQoS8BxUwPG2khaEdm+g1YljSruxzOJGqSmkJoIsSfkaY3CD2/biDklxyOnXxvgoFS8Jz5zSo6zOd4Lx4rxc9iBBF5A5PDw+3Byf7tJm2jMjWephaJa+AZk1NII4aF1PRjxQ3GAiriU/jsayWiBnpWWAWN9OoBEWZYBvf/xsjeOFMo1yB0pusvfoE4RN6/fGIi54ErLppjMvgExdAyzlkhDBhEDzHi7/vIPFHok6LY+9uIkWNG//vn7q9c3vgvsWKo2y2OJUeei4XoF+iBKm2ZIMcr94u3s8f32eZMvV7P86fnd4ul5k683i3z79PwwWy1sdjQgmtFzn3aSeDwxrnn1tXmmFucwDU7RDJxRi3IY0Rqcrp0+R6Mbxob9OTxOfleMfbrXh7GOIYG45sh82nqMtyyBa6pbmzN8j8abLwQHYopRkoYKqwhbj/HOl2EbdBbSCMGhtuQk2tLZQU6fY9EPoDSU6Gh7LFGqkBVh9DuU2Jr2u9LZeKv9thh9eiG3oVM1zurmj7BHzkCpHL42VELpTlXIF+WPt30HOUoxyoZITQm7c5bqWUgkfKL6IBrt9s/WozzB2oQTN2BLoTvbY9e2/re97oHjyxQJ+cmsw134gVTOXF4QmtiKyU6e1HUk4udyJnQ8ITLahvOb0r9cbD2RhxzAl5/pbsSK1HHsitSp5PNbt99w3LkO+C7mm6/JANp+SCZR54IfxTj85EzNcXp3QmRgLNuFdBEclcCzN4EYGRHbF+NPn/zh6g754vx+zWJk23E507NuvKYY2Xgt2zxDilJCx2LyeViQmurjXWZE7BpeHIvwelSnnDe/mQgmul0Uai9hEBEAvBwvUf1zeXpQjCDHhAD3oOdayOm+P6IMGYeg/95NeNE/8Wz08Yf+u3bTsfxIw4GgqJpPFv+I6BU0dNNIsH+9MAGjjmAUMCg0Pnm2B8NRvm8YkYGKNGQMoiXl++4Pvz28eOty6nBQn/8HVbjGiv0dAAA="
+window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA6WZXW/bNhSG/4uug2UN1m7LneO4mNE6NlSnRTAMAScd29woUiGpImqx/z5ItiyKH4c0eqv3PQ/Fw8Mv6c/vmYZXnd1m90STbVtDdpXVRB+y2wx4U6nr4flPB12x7Cr7l/Iyu/3tv6sxEgohiRZyS+QetBfiWsK8HBjRVHAfyNTChFlJag1yDC4YUQrU9UmYRr658cR+FKRECEc5gZPDniot2yBpMGCsO2CC79VW5KAE++p7L8eC8boxVaKRBdzDjnLaZfQzYbTshshlo3a0nbM9nAbXgxEXVa3bz4Q1oPpAXypcD0Z8T4GVas5Io2ArBHN5tgOj/UHUivA2PE6WIcJac0BRho6RlrxgTQlYJx0LzvvaDf9M7psKuF5I6SsbnyuBuq6hXyr6EcTRrhXjr0QJrKvlT6QruG++nLqeJOJWEq52QlYo03AlUZEp6XrixPNEe9SUqRBz6rqAGn3by9aOB6GXVc2gKx0oA3XgMWHMoV6wieB6UKIsAcdNDRhrI2lFZPsBWpWUVdyPtyRqkJpCakOIPaGd1ij88EaAmFPaeOT0pQEOSsV74jOntHE2x3vhWDF+DjuQwAuIbB5+H04+npfSBhpz463UQlEtfAkZtTRCOLWuByN+Kg5QEZdyfI5GMlqge6VlwFhfDiBRlmVAT5S8PBpHCuUa5I4U3XFyUKeIm7fvDMRccKVlU0xG34AYOoZZS+RFBhEDzHi7/vsfKPRI0G3d9+IkWNE///7rm7c3viPxWKo2y2OJUeei4XoF+iBKm2ZIMcr94v3s8eP2eZMvV7P86fnD4ul5k683i3z79PwwWy1sdjQg2qLnhO404vHEuObR1+aZWpzDNDhFM3BGLcphRGtwunZ6HI1uGBvW53Ce/K4Y+3SuD2MdQwJxzZHxtPUYb1kC11S3Nmd4Ho03bwgOxBSjJA0VVhG2HuOdD8M26CykEYKptuQk2tJZQU6PY9EPoDSUaLY9lihVyIow+g1KbE77Xels/K39thh9eiC3oVM1zurGj7BHzkCpHF4aKqF0hyrki/LH076DHKUYZUOkpoTdOVP1LCQSvlB9EI12+2frUZ5gbcKOG7Cl0J3lsXu349fC7oLjaykS8oOtDmfhB1I5Y3lBaOJbTFbypK4jET/WZkLHEyKj73C+U/qni60n8pAN+PI93Y1YkTqOXZE6lXy+6x4XHHesA76L+eZtMoC2L5JJ1LngvRiHn5ypbYw39BB7dKQyT3dZiCTbsl1IF8FMB67SCcRIlm1fjD/9jBCeMSFfnH9cBzCy7bic6ZmLXlOMbNzAbZ4hRSmhrTZ5jy1ITXV/PhoRu4YXfRFej+qU8+4XE8FEtzJD7SUMIgKA1/5gdryCTzefEeSYEOAe9FwLOd1LRpQh4xD0H+OEF/3VaKP7nwd37aZj+ZGGA0FRNZ9M/hFxVNDQblwWLw1h/vizjEI2jQT7s4pJGXUEo4BBofEKsD0YjvJ9w4gMlLUhYxAtKd93/zb38Oot7qnDQf31PzgCK7ToHgAA"

File diff suppressed because it is too large
+ 0 - 0
docs/assets/search.js


File diff suppressed because it is too large
+ 0 - 0
docs/classes/Adapter.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/AdapterLoader.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/AdapterRegistry.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/BelongsToResolver.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/DatasourceDefinitionValidator.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/DefinitionRegistry.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/EmptyValuesDefiner.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/FieldsClauseTool.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/HasManyResolver.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/HasOneResolver.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/IncludeClauseTool.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/InvalidArgumentError.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/InvalidOperatorValueError.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/ModelDataSanitizer.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/ModelDataTransformer.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/ModelDataValidator.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/ModelDefinitionUtils.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/ModelDefinitionValidator.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/NotImplementedError.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/OperatorClauseTool.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/OrderClauseTool.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/PrimaryKeysDefinitionValidator.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/PropertiesDefinitionValidator.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/PropertyTransformerRegistry.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/PropertyUniquenessValidator.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/PropertyValidatorRegistry.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/ReferencesManyResolver.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/RelationsDefinitionValidator.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/Repository.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/RepositoryRegistry.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/Schema.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/SliceClauseTool.html


File diff suppressed because it is too large
+ 0 - 0
docs/classes/WhereClauseTool.html


File diff suppressed because it is too large
+ 0 - 0
docs/enums/DataType.html


File diff suppressed because it is too large
+ 0 - 0
docs/enums/DecoratorTargetType.html


File diff suppressed because it is too large
+ 0 - 0
docs/enums/RelationType.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/capitalize.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/cloneDeep.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/excludeObjectKeys.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/getCtorName.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/getDecoratorTargetType.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/getValueByPath.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/isCtor.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/isDeepEqual.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/isPureObject.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/selectObjectKeys.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/singularize.html


File diff suppressed because it is too large
+ 0 - 0
docs/functions/stringToRegexp.html


File diff suppressed because it is too large
+ 15 - 2
docs/index.html


File diff suppressed because it is too large
+ 0 - 0
docs/interfaces/AndClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/interfaces/Constructor.html


File diff suppressed because it is too large
+ 0 - 0
docs/interfaces/OrClause.html


File diff suppressed because it is too large
+ 3 - 0
docs/modules.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/AnyObject.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/BelongsToDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/CountMethod.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/DEFAULT_PRIMARY_KEY_PROPERTY_NAME.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/DatasourceDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/FieldsClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/FilterClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/Flatten.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/FullPropertyDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/HasManyDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/HasOneDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/Identity.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/IncludeClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/ItemFilterClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/ModelData.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/ModelDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/ModelId.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/NestedIncludeClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/NormalizedFieldsClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/NormalizedIncludeClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/OperatorClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/OptionalUnlessRequiredId.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/OrderClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PartialBy.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PartialWithoutId.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PolyBelongsToDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PolyHasManyDefinitionWithTargetKeys.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PolyHasManyDefinitionWithTargetRelationName.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PolyHasOneDefinitionWithTargetKeys.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PolyHasOneDefinitionWithTargetRelationName.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PropertiesClause.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PropertyDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PropertyDefinitionMap.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PropertyTransformOptions.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PropertyTransformer.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PropertyTransformerContext.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PropertyUniqueness.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PropertyValidateOptions.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PropertyValidator.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/PropertyValidatorContext.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/ReferencesManyDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/RelationDefinition.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/RelationDefinitionMap.html


File diff suppressed because it is too large
+ 0 - 0
docs/types/WhereClause.html


Some files were not shown because too many files changed in this diff