mythix-orm 1.0.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 (124) hide show
  1. package/.eslintrc.js +94 -0
  2. package/.vscode/launch.json +34 -0
  3. package/.vscode/settings.json +10 -0
  4. package/LICENSE +21 -0
  5. package/README.md +15 -0
  6. package/lib/connection/connection-base.js +877 -0
  7. package/lib/connection/index.js +11 -0
  8. package/lib/connection/literals/average-literal.js +14 -0
  9. package/lib/connection/literals/count-literal.js +18 -0
  10. package/lib/connection/literals/distinct-literal.js +14 -0
  11. package/lib/connection/literals/index.js +23 -0
  12. package/lib/connection/literals/literal-base.js +62 -0
  13. package/lib/connection/literals/literal-field-base.js +45 -0
  14. package/lib/connection/literals/literal.js +11 -0
  15. package/lib/connection/literals/max-literal.js +14 -0
  16. package/lib/connection/literals/min-literal.js +14 -0
  17. package/lib/connection/literals/sum-literal.js +14 -0
  18. package/lib/connection/query-generator-base.js +864 -0
  19. package/lib/errors/base-error.js +14 -0
  20. package/lib/errors/connection/access-denied-error.js +13 -0
  21. package/lib/errors/connection/connection-acquire-timeout-error.js +13 -0
  22. package/lib/errors/connection/connection-refused-error.js +13 -0
  23. package/lib/errors/connection/connection-timed-out-error.js +13 -0
  24. package/lib/errors/connection/host-not-found-error.js +13 -0
  25. package/lib/errors/connection/host-not-reachable-error.js +13 -0
  26. package/lib/errors/connection/index.js +19 -0
  27. package/lib/errors/connection/invalid-connection-error.js +13 -0
  28. package/lib/errors/connection-base-error.js +13 -0
  29. package/lib/errors/database/exclusion-constraint-error.js +13 -0
  30. package/lib/errors/database/foreign-key-constraint-error.js +13 -0
  31. package/lib/errors/database/index.js +13 -0
  32. package/lib/errors/database/timeout-error.js +13 -0
  33. package/lib/errors/database/unknown-constraint-error.js +13 -0
  34. package/lib/errors/database-base-error.js +17 -0
  35. package/lib/errors/index.js +44 -0
  36. package/lib/field.js +18 -0
  37. package/lib/index.js +43 -0
  38. package/lib/model.js +1374 -0
  39. package/lib/proxy-class/index.js +3 -0
  40. package/lib/proxy-class/proxy-class.js +269 -0
  41. package/lib/query-engine/field-scope.js +99 -0
  42. package/lib/query-engine/index.js +13 -0
  43. package/lib/query-engine/model-scope.js +198 -0
  44. package/lib/query-engine/query-engine-base.js +325 -0
  45. package/lib/query-engine/query-engine.js +212 -0
  46. package/lib/types/concrete/bigint-type.js +62 -0
  47. package/lib/types/concrete/blob-type.js +46 -0
  48. package/lib/types/concrete/boolean-type.js +41 -0
  49. package/lib/types/concrete/char-type.js +39 -0
  50. package/lib/types/concrete/date-type.js +87 -0
  51. package/lib/types/concrete/datetime-type.js +92 -0
  52. package/lib/types/concrete/float-type.js +47 -0
  53. package/lib/types/concrete/foreign-key-type.js +208 -0
  54. package/lib/types/concrete/index.js +53 -0
  55. package/lib/types/concrete/integer-type.js +51 -0
  56. package/lib/types/concrete/string-type.js +44 -0
  57. package/lib/types/concrete/text-type.js +44 -0
  58. package/lib/types/concrete/uuid-base.js +77 -0
  59. package/lib/types/concrete/uuid-v1-type.js +99 -0
  60. package/lib/types/concrete/uuid-v3-type.js +108 -0
  61. package/lib/types/concrete/uuid-v4-type.js +90 -0
  62. package/lib/types/concrete/uuid-v5-type.js +108 -0
  63. package/lib/types/concrete/xid-type.js +58 -0
  64. package/lib/types/helpers/default-helpers.js +127 -0
  65. package/lib/types/helpers/index.js +35 -0
  66. package/lib/types/index.js +94 -0
  67. package/lib/types/type.js +244 -0
  68. package/lib/types/virtual/index.js +14 -0
  69. package/lib/types/virtual/model-type.js +141 -0
  70. package/lib/types/virtual/models-type.js +264 -0
  71. package/lib/types/virtual/relational-type-base.js +323 -0
  72. package/lib/utils/index.js +65 -0
  73. package/lib/utils/misc-utils.js +73 -0
  74. package/lib/utils/model-utils.js +704 -0
  75. package/lib/utils/query-utils.js +186 -0
  76. package/package.json +63 -0
  77. package/playground/test01.js +15 -0
  78. package/spec/connection/connection-base-spec.js +126 -0
  79. package/spec/connection/literals/average-literal-spec.js +45 -0
  80. package/spec/connection/literals/count-literal-spec.js +42 -0
  81. package/spec/connection/literals/distinct-literal-spec.js +42 -0
  82. package/spec/connection/literals/literal-spec.js +26 -0
  83. package/spec/connection/literals/max-literal-spec.js +42 -0
  84. package/spec/connection/literals/min-literal-spec.js +42 -0
  85. package/spec/connection/literals/sum-literal-spec.js +42 -0
  86. package/spec/helpers/default-helpers-spec.js +108 -0
  87. package/spec/model-spec.js +736 -0
  88. package/spec/proxy-class/proxy-class-spec.js +173 -0
  89. package/spec/query-engine/__snapshots__/QueryEngine-operations-query_operations_and_chaining-can_chain_query_conditions-001.snapshot +94 -0
  90. package/spec/query-engine/__snapshots__/QueryEngine-operations-query_operations_and_chaining-can_construct_a_query_context_with_a_model_call-001.snapshot +35 -0
  91. package/spec/query-engine/__snapshots__/QueryEngine-operations-query_operations_and_chaining-can_construct_a_query_context_with_a_model_sub-001.snapshot +35 -0
  92. package/spec/query-engine/__snapshots__/QueryEngine-operations-query_operations_and_chaining-can_set_a_default_scope_on_a_model-001.snapshot +57 -0
  93. package/spec/query-engine/__snapshots__/QueryEngine-operations-query_operations_and_chaining-can_unscope_default_scope_on_a_model-001.snapshot +35 -0
  94. package/spec/query-engine/query-engine-spec.js +99 -0
  95. package/spec/support/jasmine.json +13 -0
  96. package/spec/support/models/blob-test-model.js +19 -0
  97. package/spec/support/models/extended-user-model.js +38 -0
  98. package/spec/support/models/index.js +27 -0
  99. package/spec/support/models/number-model.js +24 -0
  100. package/spec/support/models/role-model.js +26 -0
  101. package/spec/support/models/role-thing-model.js +41 -0
  102. package/spec/support/models/scoped-user-model.js +13 -0
  103. package/spec/support/models/time-model.js +36 -0
  104. package/spec/support/models/user-model.js +70 -0
  105. package/spec/support/models/user-role-model.js +36 -0
  106. package/spec/support/models/user-thing-model.js +46 -0
  107. package/spec/support/models/validation-test-model.js +40 -0
  108. package/spec/support/snapshots.js +293 -0
  109. package/spec/support/test-helpers.js +13 -0
  110. package/spec/types/concrete/bigint-type-spec.js +84 -0
  111. package/spec/types/concrete/boolean-type-spec.js +83 -0
  112. package/spec/types/concrete/date-type-spec.js +85 -0
  113. package/spec/types/concrete/datetime-type-spec.js +87 -0
  114. package/spec/types/concrete/float-type-spec.js +71 -0
  115. package/spec/types/concrete/foreign-key-type-spec.js +64 -0
  116. package/spec/types/concrete/integer-type-spec.js +71 -0
  117. package/spec/types/concrete/string-type-spec.js +91 -0
  118. package/spec/types/concrete/uuid-v1-type-spec.js +73 -0
  119. package/spec/types/concrete/uuid-v4-type-spec.js +65 -0
  120. package/spec/types/type-spec.js +101 -0
  121. package/spec/types/virtual/model-types-spec.js +401 -0
  122. package/spec/utils/misc-utils-spec.js +61 -0
  123. package/spec/utils/model-utils-spec.js +55 -0
  124. package/spec/utils/query-utils-spec.js +105 -0
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ class MythixORMBaseError extends Error {
4
+ constructor(message) {
5
+ super((message instanceof Error) ? message.message : message);
6
+
7
+ this.name = 'MythixORMBaseError';
8
+
9
+ if (message instanceof Error)
10
+ this.original = message;
11
+ }
12
+ }
13
+
14
+ module.exports = MythixORMBaseError;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const MythixORMConnectionBaseError = require('../connection-base-error');
4
+
5
+ class MythixORMAccessDeniedError extends MythixORMConnectionBaseError {
6
+ constructor(...args) {
7
+ super(...args);
8
+
9
+ this.name = 'MythixORMAccessDeniedError';
10
+ }
11
+ }
12
+
13
+ module.exports = MythixORMAccessDeniedError;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const MythixORMConnectionBaseError = require('../connection-base-error');
4
+
5
+ class MythixORMConnectionAcquireTimeoutError extends MythixORMConnectionBaseError {
6
+ constructor(...args) {
7
+ super(...args);
8
+
9
+ this.name = 'MythixORMConnectionAcquireTimeoutError';
10
+ }
11
+ }
12
+
13
+ module.exports = MythixORMConnectionAcquireTimeoutError;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const MythixORMConnectionBaseError = require('../connection-base-error');
4
+
5
+ class MythixORMConnectionRefusedError extends MythixORMConnectionBaseError {
6
+ constructor(...args) {
7
+ super(...args);
8
+
9
+ this.name = 'MythixORMConnectionRefusedError';
10
+ }
11
+ }
12
+
13
+ module.exports = MythixORMConnectionRefusedError;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const MythixORMConnectionBaseError = require('../connection-base-error');
4
+
5
+ class MythixORMConnectionTimedOutError extends MythixORMConnectionBaseError {
6
+ constructor(...args) {
7
+ super(...args);
8
+
9
+ this.name = 'MythixORMConnectionTimedOutError';
10
+ }
11
+ }
12
+
13
+ module.exports = MythixORMConnectionTimedOutError;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const MythixORMConnectionBaseError = require('../connection-base-error');
4
+
5
+ class MythixORMHostNotFoundError extends MythixORMConnectionBaseError {
6
+ constructor(...args) {
7
+ super(...args);
8
+
9
+ this.name = 'MythixORMHostNotFoundError';
10
+ }
11
+ }
12
+
13
+ module.exports = MythixORMHostNotFoundError;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const MythixORMConnectionBaseError = require('../connection-base-error');
4
+
5
+ class MythixORMHostNotReachableError extends MythixORMConnectionBaseError {
6
+ constructor(...args) {
7
+ super(...args);
8
+
9
+ this.name = 'MythixORMHostNotReachableError';
10
+ }
11
+ }
12
+
13
+ module.exports = MythixORMHostNotReachableError;
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ const MythixORMAccessDeniedError = require('./access-denied-error');
4
+ const MythixORMConnectionAcquireTimeoutError = require('./connection-acquire-timeout-error');
5
+ const MythixORMConnectionRefusedError = require('./connection-refused-error');
6
+ const MythixORMConnectionTimedOutError = require('./connection-timed-out-error');
7
+ const MythixORMHostNotFoundError = require('./host-not-found-error');
8
+ const MythixORMHostNotReachableError = require('./host-not-reachable-error');
9
+ const MythixORMInvalidConnectionError = require('./invalid-connection-error');
10
+
11
+ module.exports = {
12
+ MythixORMAccessDeniedError,
13
+ MythixORMConnectionAcquireTimeoutError,
14
+ MythixORMConnectionRefusedError,
15
+ MythixORMConnectionTimedOutError,
16
+ MythixORMHostNotFoundError,
17
+ MythixORMHostNotReachableError,
18
+ MythixORMInvalidConnectionError,
19
+ };
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const MythixORMConnectionBaseError = require('../connection-base-error');
4
+
5
+ class MythixORMInvalidConnectionError extends MythixORMConnectionBaseError {
6
+ constructor(...args) {
7
+ super(...args);
8
+
9
+ this.name = 'MythixORMInvalidConnectionError';
10
+ }
11
+ }
12
+
13
+ module.exports = MythixORMInvalidConnectionError;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const MythixORMBaseError = require('./base-error');
4
+
5
+ class MythixORMConnectionBaseError extends MythixORMBaseError {
6
+ constructor(...args) {
7
+ super(...args);
8
+
9
+ this.name = 'MythixORMConnectionBaseError';
10
+ }
11
+ }
12
+
13
+ module.exports = MythixORMConnectionBaseError;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const MythixORMDatabaseBaseError = require('../database-base-error');
4
+
5
+ class MythixORMExclusionConstraintError extends MythixORMDatabaseBaseError {
6
+ constructor(...args) {
7
+ super(...args);
8
+
9
+ this.name = 'MythixORMExclusionConstraintError';
10
+ }
11
+ }
12
+
13
+ module.exports = MythixORMExclusionConstraintError;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const MythixORMDatabaseBaseError = require('../database-base-error');
4
+
5
+ class MythixORMForeignKeyConstraintError extends MythixORMDatabaseBaseError {
6
+ constructor(...args) {
7
+ super(...args);
8
+
9
+ this.name = 'MythixORMForeignKeyConstraintError';
10
+ }
11
+ }
12
+
13
+ module.exports = MythixORMForeignKeyConstraintError;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const MythixORMExclusionConstraintError = require('./exclusion-constraint-error');
4
+ const MythixORMForeignKeyConstraintError = require('./foreign-key-constraint-error');
5
+ const MythixORMTimeoutError = require('./timeout-error');
6
+ const MythixORMUnknownConstraintError = require('./unknown-constraint-error');
7
+
8
+ module.exports = {
9
+ MythixORMExclusionConstraintError,
10
+ MythixORMForeignKeyConstraintError,
11
+ MythixORMTimeoutError,
12
+ MythixORMUnknownConstraintError,
13
+ };
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const MythixORMDatabaseBaseError = require('../database-base-error');
4
+
5
+ class MythixORMTimeoutError extends MythixORMDatabaseBaseError {
6
+ constructor(...args) {
7
+ super(...args);
8
+
9
+ this.name = 'MythixORMTimeoutError';
10
+ }
11
+ }
12
+
13
+ module.exports = MythixORMTimeoutError;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ const MythixORMDatabaseBaseError = require('../database-base-error');
4
+
5
+ class MythixORMUnknownConstraintError extends MythixORMDatabaseBaseError {
6
+ constructor(options) {
7
+ super(options.parent);
8
+
9
+ this.name = 'MythixORMUnknownConstraintError';
10
+ }
11
+ }
12
+
13
+ module.exports = MythixORMUnknownConstraintError;
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ const MythixORMBaseError = require('./base-error');
4
+
5
+ class MythixORMDatabaseBaseError extends MythixORMBaseError {
6
+ constructor(...args) {
7
+ super(...args);
8
+
9
+ this.name = 'MythixORMDatabaseBaseError';
10
+
11
+ let originalError = args[0];
12
+ if (originalError instanceof Error)
13
+ this.sql = originalError.sql;
14
+ }
15
+ }
16
+
17
+ module.exports = MythixORMDatabaseBaseError;
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ const MythixORMBaseError = require('./base-error');
4
+ const MythixORMConnectionBaseError = require('./connection-base-error');
5
+ const MythixORMDatabaseBaseError = require('./database-base-error');
6
+
7
+ const {
8
+ MythixORMAccessDeniedError,
9
+ MythixORMConnectionAcquireTimeoutError,
10
+ MythixORMConnectionRefusedError,
11
+ MythixORMConnectionTimedOutError,
12
+ MythixORMHostNotFoundError,
13
+ MythixORMHostNotReachableError,
14
+ MythixORMInvalidConnectionError,
15
+ } = require('./connection');
16
+
17
+ const {
18
+ MythixORMExclusionConstraintError,
19
+ MythixORMForeignKeyConstraintError,
20
+ MythixORMTimeoutError,
21
+ MythixORMUnknownConstraintError,
22
+ } = require('./database');
23
+
24
+ module.exports = {
25
+ // Base
26
+ MythixORMBaseError,
27
+ MythixORMConnectionBaseError,
28
+ MythixORMDatabaseBaseError,
29
+
30
+ // Connection
31
+ MythixORMAccessDeniedError,
32
+ MythixORMConnectionAcquireTimeoutError,
33
+ MythixORMConnectionRefusedError,
34
+ MythixORMConnectionTimedOutError,
35
+ MythixORMHostNotFoundError,
36
+ MythixORMHostNotReachableError,
37
+ MythixORMInvalidConnectionError,
38
+
39
+ // Database
40
+ MythixORMExclusionConstraintError,
41
+ MythixORMForeignKeyConstraintError,
42
+ MythixORMTimeoutError,
43
+ MythixORMUnknownConstraintError,
44
+ };
package/lib/field.js ADDED
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ class Field {
4
+ constructor(fieldDefinition) {
5
+ Object.assign(this, fieldDefinition || {});
6
+ }
7
+
8
+ clone() {
9
+ const FieldClass = this.constructor;
10
+ return new FieldClass(this);
11
+ }
12
+
13
+ setModel(Model) {
14
+ this.Model = Model;
15
+ }
16
+ }
17
+
18
+ module.exports = Field;
package/lib/index.js ADDED
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ const Errors = require('./errors');
4
+ const Field = require('./field');
5
+ const Model = require('./model');
6
+ const ProxyClass = require('./proxy-class');
7
+ const QueryEngineScope = require('./query-engine');
8
+ const ConnectionScope = require('./connection');
9
+ const Types = require('./types');
10
+ const Utils = require('./utils');
11
+
12
+ const {
13
+ FieldScope,
14
+ ModelScope,
15
+ QueryEngine,
16
+ QueryEngineBase,
17
+ } = QueryEngineScope;
18
+
19
+ const {
20
+ ConnectionBase,
21
+ Literals,
22
+ QueryGeneratorBase,
23
+ } = ConnectionScope;
24
+
25
+ module.exports = {
26
+ Errors,
27
+ Field,
28
+ Model,
29
+ ProxyClass,
30
+ Types,
31
+ Utils,
32
+
33
+ // Query Engine
34
+ FieldScope,
35
+ ModelScope,
36
+ QueryEngine,
37
+ QueryEngineBase,
38
+
39
+ // Connection
40
+ ConnectionBase,
41
+ Literals,
42
+ QueryGeneratorBase,
43
+ };