@tachybase/database 0.23.8

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 (226) hide show
  1. package/.turbo/turbo-build.log +10 -0
  2. package/LICENSE +201 -0
  3. package/lib/collection-factory.d.ts +17 -0
  4. package/lib/collection-factory.js +52 -0
  5. package/lib/collection-group-manager.d.ts +26 -0
  6. package/lib/collection-group-manager.js +57 -0
  7. package/lib/collection-importer.d.ts +7 -0
  8. package/lib/collection-importer.js +74 -0
  9. package/lib/collection.d.ts +138 -0
  10. package/lib/collection.js +686 -0
  11. package/lib/database-utils/index.d.ts +9 -0
  12. package/lib/database-utils/index.js +71 -0
  13. package/lib/database-utils/traverseJSON.d.ts +10 -0
  14. package/lib/database-utils/traverseJSON.js +126 -0
  15. package/lib/database.d.ts +201 -0
  16. package/lib/database.js +765 -0
  17. package/lib/decorators/must-have-filter-decorator.d.ts +2 -0
  18. package/lib/decorators/must-have-filter-decorator.js +38 -0
  19. package/lib/decorators/target-collection-decorator.d.ts +2 -0
  20. package/lib/decorators/target-collection-decorator.js +47 -0
  21. package/lib/decorators/transaction-decorator.d.ts +1 -0
  22. package/lib/decorators/transaction-decorator.js +88 -0
  23. package/lib/eager-loading/eager-loading-tree.d.ts +31 -0
  24. package/lib/eager-loading/eager-loading-tree.js +439 -0
  25. package/lib/errors/identifier-error.d.ts +3 -0
  26. package/lib/errors/identifier-error.js +35 -0
  27. package/lib/errors/zero-column-table-error.d.ts +2 -0
  28. package/lib/errors/zero-column-table-error.js +31 -0
  29. package/lib/features/references-map.d.ts +18 -0
  30. package/lib/features/references-map.js +109 -0
  31. package/lib/features/referential-integrity-check.d.ts +8 -0
  32. package/lib/features/referential-integrity-check.js +83 -0
  33. package/lib/field-repository/array-field-repository.d.ts +28 -0
  34. package/lib/field-repository/array-field-repository.js +197 -0
  35. package/lib/fields/array-field.d.ts +11 -0
  36. package/lib/fields/array-field.js +57 -0
  37. package/lib/fields/belongs-to-field.d.ts +17 -0
  38. package/lib/fields/belongs-to-field.js +154 -0
  39. package/lib/fields/belongs-to-many-field.d.ts +20 -0
  40. package/lib/fields/belongs-to-many-field.js +187 -0
  41. package/lib/fields/boolean-field.d.ts +8 -0
  42. package/lib/fields/boolean-field.js +36 -0
  43. package/lib/fields/context-field.d.ts +14 -0
  44. package/lib/fields/context-field.js +70 -0
  45. package/lib/fields/date-field.d.ts +13 -0
  46. package/lib/fields/date-field.js +64 -0
  47. package/lib/fields/field.d.ts +43 -0
  48. package/lib/fields/field.js +156 -0
  49. package/lib/fields/has-inverse-field.d.ts +4 -0
  50. package/lib/fields/has-inverse-field.js +15 -0
  51. package/lib/fields/has-many-field.d.ts +68 -0
  52. package/lib/fields/has-many-field.js +156 -0
  53. package/lib/fields/has-one-field.d.ts +68 -0
  54. package/lib/fields/has-one-field.js +150 -0
  55. package/lib/fields/index.d.ts +46 -0
  56. package/lib/fields/index.js +65 -0
  57. package/lib/fields/json-field.d.ts +14 -0
  58. package/lib/fields/json-field.js +54 -0
  59. package/lib/fields/nanoid-field.d.ts +13 -0
  60. package/lib/fields/nanoid-field.js +58 -0
  61. package/lib/fields/number-field.d.ts +41 -0
  62. package/lib/fields/number-field.js +85 -0
  63. package/lib/fields/password-field.d.ts +21 -0
  64. package/lib/fields/password-field.js +95 -0
  65. package/lib/fields/radio-field.d.ts +16 -0
  66. package/lib/fields/radio-field.js +66 -0
  67. package/lib/fields/relation-field.d.ts +21 -0
  68. package/lib/fields/relation-field.js +79 -0
  69. package/lib/fields/set-field.d.ts +10 -0
  70. package/lib/fields/set-field.js +46 -0
  71. package/lib/fields/sort-field.d.ts +16 -0
  72. package/lib/fields/sort-field.js +187 -0
  73. package/lib/fields/string-field.d.ts +8 -0
  74. package/lib/fields/string-field.js +36 -0
  75. package/lib/fields/text-field.d.ts +8 -0
  76. package/lib/fields/text-field.js +36 -0
  77. package/lib/fields/time-field.d.ts +8 -0
  78. package/lib/fields/time-field.js +36 -0
  79. package/lib/fields/uid-field.d.ts +13 -0
  80. package/lib/fields/uid-field.js +63 -0
  81. package/lib/fields/uuid-field.d.ts +9 -0
  82. package/lib/fields/uuid-field.js +45 -0
  83. package/lib/fields/virtual-field.d.ts +8 -0
  84. package/lib/fields/virtual-field.js +36 -0
  85. package/lib/filter-match.d.ts +1 -0
  86. package/lib/filter-match.js +66 -0
  87. package/lib/filter-parser.d.ts +21 -0
  88. package/lib/filter-parser.js +230 -0
  89. package/lib/helpers.d.ts +3 -0
  90. package/lib/helpers.js +167 -0
  91. package/lib/index.d.ts +30 -0
  92. package/lib/index.js +114 -0
  93. package/lib/inherited-collection.d.ts +14 -0
  94. package/lib/inherited-collection.js +138 -0
  95. package/lib/inherited-map.d.ts +21 -0
  96. package/lib/inherited-map.js +113 -0
  97. package/lib/inherited-sync-runner.d.ts +4 -0
  98. package/lib/inherited-sync-runner.js +175 -0
  99. package/lib/listeners/adjacency-list.d.ts +2 -0
  100. package/lib/listeners/adjacency-list.js +42 -0
  101. package/lib/listeners/append-child-collection-name-after-repository-find.d.ts +6 -0
  102. package/lib/listeners/append-child-collection-name-after-repository-find.js +66 -0
  103. package/lib/listeners/index.d.ts +2 -0
  104. package/lib/listeners/index.js +33 -0
  105. package/lib/magic-attribute-model.d.ts +8 -0
  106. package/lib/magic-attribute-model.js +203 -0
  107. package/lib/migration.d.ts +35 -0
  108. package/lib/migration.js +103 -0
  109. package/lib/mock-database.d.ts +25 -0
  110. package/lib/mock-database.js +126 -0
  111. package/lib/model-hook.d.ts +12 -0
  112. package/lib/model-hook.js +92 -0
  113. package/lib/model.d.ts +23 -0
  114. package/lib/model.js +152 -0
  115. package/lib/operators/array.d.ts +2 -0
  116. package/lib/operators/array.js +158 -0
  117. package/lib/operators/association.d.ts +2 -0
  118. package/lib/operators/association.js +35 -0
  119. package/lib/operators/boolean.d.ts +2 -0
  120. package/lib/operators/boolean.js +38 -0
  121. package/lib/operators/child-collection.d.ts +2 -0
  122. package/lib/operators/child-collection.js +67 -0
  123. package/lib/operators/date.d.ts +2 -0
  124. package/lib/operators/date.js +140 -0
  125. package/lib/operators/empty.d.ts +5 -0
  126. package/lib/operators/empty.js +89 -0
  127. package/lib/operators/eq.d.ts +2 -0
  128. package/lib/operators/eq.js +35 -0
  129. package/lib/operators/index.d.ts +5 -0
  130. package/lib/operators/index.js +56 -0
  131. package/lib/operators/jsonb.d.ts +2 -0
  132. package/lib/operators/jsonb.js +50 -0
  133. package/lib/operators/ne.d.ts +2 -0
  134. package/lib/operators/ne.js +40 -0
  135. package/lib/operators/notIn.d.ts +2 -0
  136. package/lib/operators/notIn.js +33 -0
  137. package/lib/operators/string.d.ts +2 -0
  138. package/lib/operators/string.js +109 -0
  139. package/lib/operators/utils.d.ts +4 -0
  140. package/lib/operators/utils.js +40 -0
  141. package/lib/options-parser.d.ts +37 -0
  142. package/lib/options-parser.js +332 -0
  143. package/lib/playground.d.ts +1 -0
  144. package/lib/playground.js +43 -0
  145. package/lib/query-interface/mysql-query-interface.d.ts +35 -0
  146. package/lib/query-interface/mysql-query-interface.js +122 -0
  147. package/lib/query-interface/postgres-query-interface.d.ts +32 -0
  148. package/lib/query-interface/postgres-query-interface.js +189 -0
  149. package/lib/query-interface/query-interface-builder.d.ts +2 -0
  150. package/lib/query-interface/query-interface-builder.js +46 -0
  151. package/lib/query-interface/query-interface.d.ts +42 -0
  152. package/lib/query-interface/query-interface.js +46 -0
  153. package/lib/query-interface/sqlite-query-interface.d.ts +35 -0
  154. package/lib/query-interface/sqlite-query-interface.js +131 -0
  155. package/lib/relation-repository/belongs-to-many-repository.d.ts +21 -0
  156. package/lib/relation-repository/belongs-to-many-repository.js +280 -0
  157. package/lib/relation-repository/belongs-to-repository.d.ts +6 -0
  158. package/lib/relation-repository/belongs-to-repository.js +39 -0
  159. package/lib/relation-repository/hasmany-repository.d.ts +10 -0
  160. package/lib/relation-repository/hasmany-repository.js +182 -0
  161. package/lib/relation-repository/hasone-repository.d.ts +6 -0
  162. package/lib/relation-repository/hasone-repository.js +39 -0
  163. package/lib/relation-repository/multiple-relation-repository.d.ts +20 -0
  164. package/lib/relation-repository/multiple-relation-repository.js +229 -0
  165. package/lib/relation-repository/relation-repository.d.ts +29 -0
  166. package/lib/relation-repository/relation-repository.js +202 -0
  167. package/lib/relation-repository/single-relation-repository.d.ts +25 -0
  168. package/lib/relation-repository/single-relation-repository.js +162 -0
  169. package/lib/relation-repository/types.d.ts +7 -0
  170. package/lib/relation-repository/types.js +15 -0
  171. package/lib/repositories/tree-repository/adjacency-list-repository.d.ts +18 -0
  172. package/lib/repositories/tree-repository/adjacency-list-repository.js +183 -0
  173. package/lib/repositories/view-repository.d.ts +3 -0
  174. package/lib/repositories/view-repository.js +32 -0
  175. package/lib/repository.d.ts +206 -0
  176. package/lib/repository.js +597 -0
  177. package/lib/sql-collection/index.d.ts +2 -0
  178. package/lib/sql-collection/index.js +23 -0
  179. package/lib/sql-collection/query-generator.d.ts +10 -0
  180. package/lib/sql-collection/query-generator.js +70 -0
  181. package/lib/sql-collection/sql-collection.d.ts +7 -0
  182. package/lib/sql-collection/sql-collection.js +69 -0
  183. package/lib/sql-collection/sql-model.d.ts +16 -0
  184. package/lib/sql-collection/sql-model.js +168 -0
  185. package/lib/sql-parser/index.d.ts +10 -0
  186. package/lib/sql-parser/index.js +10699 -0
  187. package/lib/sql-parser/postgres.d.ts +10 -0
  188. package/lib/sql-parser/postgres.js +31506 -0
  189. package/lib/sql-parser/sql.pegjs +1297 -0
  190. package/lib/sync-runner.d.ts +30 -0
  191. package/lib/sync-runner.js +277 -0
  192. package/lib/types.d.ts +49 -0
  193. package/lib/types.js +15 -0
  194. package/lib/update-associations.d.ts +60 -0
  195. package/lib/update-associations.js +405 -0
  196. package/lib/update-guard.d.ts +28 -0
  197. package/lib/update-guard.js +202 -0
  198. package/lib/utils.d.ts +7 -0
  199. package/lib/utils.js +127 -0
  200. package/lib/value-parsers/array-value-parser.d.ts +8 -0
  201. package/lib/value-parsers/array-value-parser.js +58 -0
  202. package/lib/value-parsers/base-value-parser.d.ts +12 -0
  203. package/lib/value-parsers/base-value-parser.js +63 -0
  204. package/lib/value-parsers/boolean-value-parser.d.ts +4 -0
  205. package/lib/value-parsers/boolean-value-parser.js +52 -0
  206. package/lib/value-parsers/date-value-parser.d.ts +5 -0
  207. package/lib/value-parsers/date-value-parser.js +88 -0
  208. package/lib/value-parsers/index.d.ts +12 -0
  209. package/lib/value-parsers/index.js +78 -0
  210. package/lib/value-parsers/json-value-parser.d.ts +4 -0
  211. package/lib/value-parsers/json-value-parser.js +47 -0
  212. package/lib/value-parsers/number-value-parser.d.ts +4 -0
  213. package/lib/value-parsers/number-value-parser.js +58 -0
  214. package/lib/value-parsers/string-value-parser.d.ts +8 -0
  215. package/lib/value-parsers/string-value-parser.js +64 -0
  216. package/lib/value-parsers/to-many-value-parser.d.ts +13 -0
  217. package/lib/value-parsers/to-many-value-parser.js +108 -0
  218. package/lib/value-parsers/to-one-value-parser.d.ts +4 -0
  219. package/lib/value-parsers/to-one-value-parser.js +48 -0
  220. package/lib/view/field-type-map.d.ts +97 -0
  221. package/lib/view/field-type-map.js +90 -0
  222. package/lib/view/view-inference.d.ts +32 -0
  223. package/lib/view/view-inference.js +146 -0
  224. package/lib/view-collection.d.ts +6 -0
  225. package/lib/view-collection.js +45 -0
  226. package/package.json +38 -0
@@ -0,0 +1,280 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
8
+ var __typeError = (msg) => {
9
+ throw TypeError(msg);
10
+ };
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
13
+ var __export = (target, all) => {
14
+ for (var name in all)
15
+ __defProp(target, name, { get: all[name], enumerable: true });
16
+ };
17
+ var __copyProps = (to, from, except, desc) => {
18
+ if (from && typeof from === "object" || typeof from === "function") {
19
+ for (let key of __getOwnPropNames(from))
20
+ if (!__hasOwnProp.call(to, key) && key !== except)
21
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
22
+ }
23
+ return to;
24
+ };
25
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
26
+ // If the importer is in node compatibility mode or this is not an ESM
27
+ // file that has been converted to a CommonJS file using a Babel-
28
+ // compatible transform (i.e. "__esModule" has not been set), then set
29
+ // "default" to the CommonJS "module.exports" for node compatibility.
30
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
31
+ mod
32
+ ));
33
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
34
+ var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
35
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
36
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
37
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
38
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
39
+ var __runInitializers = (array, flags, self, value) => {
40
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
41
+ return value;
42
+ };
43
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
44
+ var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
45
+ var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
46
+ var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
47
+ var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
48
+ return __privateGet(this, extra);
49
+ }, set [name](x) {
50
+ return __privateSet(this, extra, x);
51
+ } }, name));
52
+ k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
53
+ for (var i = decorators.length - 1; i >= 0; i--) {
54
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
55
+ if (k) {
56
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
57
+ if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
58
+ if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
59
+ }
60
+ it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
61
+ if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
62
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
63
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
64
+ }
65
+ return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
66
+ };
67
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
68
+ var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
69
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
70
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
71
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
72
+ var belongs_to_many_repository_exports = {};
73
+ __export(belongs_to_many_repository_exports, {
74
+ BelongsToManyRepository: () => BelongsToManyRepository
75
+ });
76
+ module.exports = __toCommonJS(belongs_to_many_repository_exports);
77
+ var import_lodash = __toESM(require("lodash"));
78
+ var import_sequelize = require("sequelize");
79
+ var import_update_associations = require("../update-associations");
80
+ var import_multiple_relation_repository = require("./multiple-relation-repository");
81
+ var import_relation_repository = require("./relation-repository");
82
+ var _toggle_dec, _set_dec, _add_dec, _destroy_dec, _create_dec, _a, _init;
83
+ const _BelongsToManyRepository = class _BelongsToManyRepository extends (_a = import_multiple_relation_repository.MultipleRelationRepository, _create_dec = [(0, import_relation_repository.transaction)()], _destroy_dec = [(0, import_relation_repository.transaction)((args, transaction2) => {
84
+ return {
85
+ filterByTk: args[0],
86
+ transaction: transaction2
87
+ };
88
+ })], _add_dec = [(0, import_relation_repository.transaction)((args, transaction2) => {
89
+ return {
90
+ tk: args[0],
91
+ transaction: transaction2
92
+ };
93
+ })], _set_dec = [(0, import_relation_repository.transaction)((args, transaction2) => {
94
+ return {
95
+ tk: args[0],
96
+ transaction: transaction2
97
+ };
98
+ })], _toggle_dec = [(0, import_relation_repository.transaction)((args, transaction2) => {
99
+ return {
100
+ tk: args[0],
101
+ transaction: transaction2
102
+ };
103
+ })], _a) {
104
+ constructor() {
105
+ super(...arguments);
106
+ __runInitializers(_init, 5, this);
107
+ }
108
+ async aggregate(options) {
109
+ const targetRepository = this.targetCollection.repository;
110
+ const sourceModel = await this.getSourceModel();
111
+ const association = this.association;
112
+ return await targetRepository.aggregate({
113
+ ...options,
114
+ optionsTransformer: /* @__PURE__ */ __name((modelOptions) => {
115
+ modelOptions.include = modelOptions.include || [];
116
+ const throughWhere = {};
117
+ throughWhere[association.foreignKey] = sourceModel.get(association.sourceKey);
118
+ modelOptions.include.push({
119
+ association: association.oneFromTarget,
120
+ required: true,
121
+ attributes: [],
122
+ where: throughWhere
123
+ });
124
+ }, "optionsTransformer")
125
+ });
126
+ }
127
+ async create(options) {
128
+ if (Array.isArray(options.values)) {
129
+ return Promise.all(options.values.map((record) => this.create({ ...options, values: record })));
130
+ }
131
+ const transaction2 = await this.getTransaction(options);
132
+ const createAccessor = this.accessors().create;
133
+ const values = options.values || {};
134
+ const sourceModel = await this.getSourceModel(transaction2);
135
+ const createOptions = {
136
+ ...options,
137
+ through: values[this.throughName()],
138
+ transaction: transaction2
139
+ };
140
+ const instance = await sourceModel[createAccessor](values, createOptions);
141
+ await (0, import_update_associations.updateAssociations)(instance, values, { ...options, transaction: transaction2 });
142
+ return instance;
143
+ }
144
+ async destroy(options) {
145
+ const transaction2 = await this.getTransaction(options);
146
+ const association = this.association;
147
+ const throughModel = this.throughModel();
148
+ const instancesToIds = /* @__PURE__ */ __name((instances) => {
149
+ return instances.map((instance) => instance.get(this.targetKey()));
150
+ }, "instancesToIds");
151
+ const throughTableWhere = [
152
+ {
153
+ [throughModel.rawAttributes[association.foreignKey].field]: this.sourceKeyValue
154
+ }
155
+ ];
156
+ let ids;
157
+ if (options && options["filter"]) {
158
+ const instances = await this.find({
159
+ filter: options["filter"],
160
+ transaction: transaction2
161
+ });
162
+ ids = instancesToIds(instances);
163
+ }
164
+ if (options && options["filterByTk"]) {
165
+ const instances = this.association.toInstanceArray(options["filterByTk"]);
166
+ ids = ids ? import_lodash.default.intersection(ids, instancesToIds(instances)) : instancesToIds(instances);
167
+ }
168
+ if (options && !options["filterByTk"] && !options["filter"]) {
169
+ const sourceModel = await this.getSourceModel(transaction2);
170
+ const instances = await sourceModel[this.accessors().get]({
171
+ transaction: transaction2
172
+ });
173
+ ids = instancesToIds(instances);
174
+ }
175
+ throughTableWhere.push({
176
+ [throughModel.rawAttributes[association.otherKey].field]: {
177
+ [import_sequelize.Op.in]: ids
178
+ }
179
+ });
180
+ await this.throughModel().destroy({
181
+ where: throughTableWhere,
182
+ transaction: transaction2
183
+ });
184
+ await this.targetModel.destroy({
185
+ where: {
186
+ [this.targetKey()]: {
187
+ [import_sequelize.Op.in]: ids
188
+ }
189
+ },
190
+ transaction: transaction2
191
+ });
192
+ return true;
193
+ }
194
+ async add(options) {
195
+ await this.setTargets("add", options);
196
+ }
197
+ async set(options) {
198
+ await this.setTargets("set", options);
199
+ }
200
+ async toggle(options) {
201
+ const transaction2 = await this.getTransaction(options);
202
+ const sourceModel = await this.getSourceModel(transaction2);
203
+ const has = await sourceModel[this.accessors().hasSingle](options["tk"], {
204
+ transaction: transaction2
205
+ });
206
+ if (has) {
207
+ await this.remove({
208
+ ...options,
209
+ transaction: transaction2
210
+ });
211
+ } else {
212
+ await this.add({
213
+ ...options,
214
+ transaction: transaction2
215
+ });
216
+ }
217
+ return;
218
+ }
219
+ extendFindOptions(findOptions) {
220
+ let joinTableAttributes;
221
+ if (import_lodash.default.get(findOptions, "fields")) {
222
+ joinTableAttributes = [];
223
+ }
224
+ return {
225
+ ...findOptions,
226
+ joinTableAttributes
227
+ };
228
+ }
229
+ throughName() {
230
+ return this.throughModel().name;
231
+ }
232
+ throughModel() {
233
+ return this.association.through.model;
234
+ }
235
+ async setTargets(call, options) {
236
+ const handleKeys = this.convertTks(options);
237
+ const transaction2 = await this.getTransaction(options, false);
238
+ const sourceModel = await this.getSourceModel(transaction2);
239
+ const setObj = handleKeys.reduce((carry, item) => {
240
+ if (Array.isArray(item)) {
241
+ carry[item[0]] = item[1];
242
+ } else {
243
+ carry[item] = true;
244
+ }
245
+ return carry;
246
+ }, {});
247
+ const targetKeys = Object.keys(setObj);
248
+ const association = this.association;
249
+ const targetObjects = await this.targetModel.findAll({
250
+ where: {
251
+ [association["targetKey"]]: targetKeys
252
+ },
253
+ transaction: transaction2
254
+ });
255
+ await sourceModel[this.accessors()[call]](targetObjects, {
256
+ transaction: transaction2
257
+ });
258
+ for (const [id, throughValues] of Object.entries(setObj)) {
259
+ if (typeof throughValues === "object") {
260
+ const instance = await this.targetModel.findByPk(id, {
261
+ transaction: transaction2
262
+ });
263
+ await (0, import_update_associations.updateThroughTableValue)(instance, this.throughName(), throughValues, sourceModel, transaction2);
264
+ }
265
+ }
266
+ }
267
+ };
268
+ _init = __decoratorStart(_a);
269
+ __decorateElement(_init, 1, "create", _create_dec, _BelongsToManyRepository);
270
+ __decorateElement(_init, 1, "destroy", _destroy_dec, _BelongsToManyRepository);
271
+ __decorateElement(_init, 1, "add", _add_dec, _BelongsToManyRepository);
272
+ __decorateElement(_init, 1, "set", _set_dec, _BelongsToManyRepository);
273
+ __decorateElement(_init, 1, "toggle", _toggle_dec, _BelongsToManyRepository);
274
+ __decoratorMetadata(_init, _BelongsToManyRepository);
275
+ __name(_BelongsToManyRepository, "BelongsToManyRepository");
276
+ let BelongsToManyRepository = _BelongsToManyRepository;
277
+ // Annotate the CommonJS export names for ESM import in node:
278
+ 0 && (module.exports = {
279
+ BelongsToManyRepository
280
+ });
@@ -0,0 +1,6 @@
1
+ import { SingleRelationRepository } from './single-relation-repository';
2
+ export declare class BelongsToRepository extends SingleRelationRepository {
3
+ filterOptions(sourceModel: any): Promise<{
4
+ [x: number]: any;
5
+ }>;
6
+ }
@@ -0,0 +1,39 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var belongs_to_repository_exports = {};
20
+ __export(belongs_to_repository_exports, {
21
+ BelongsToRepository: () => BelongsToRepository
22
+ });
23
+ module.exports = __toCommonJS(belongs_to_repository_exports);
24
+ var import_single_relation_repository = require("./single-relation-repository");
25
+ const _BelongsToRepository = class _BelongsToRepository extends import_single_relation_repository.SingleRelationRepository {
26
+ async filterOptions(sourceModel) {
27
+ const association = this.association;
28
+ return {
29
+ // @ts-ignore
30
+ [association.targetKey]: sourceModel.get(association.foreignKey)
31
+ };
32
+ }
33
+ };
34
+ __name(_BelongsToRepository, "BelongsToRepository");
35
+ let BelongsToRepository = _BelongsToRepository;
36
+ // Annotate the CommonJS export names for ESM import in node:
37
+ 0 && (module.exports = {
38
+ BelongsToRepository
39
+ });
@@ -0,0 +1,10 @@
1
+ import { AggregateOptions, DestroyOptions, FindOptions, TargetKey, TK } from '../repository';
2
+ import { AssociatedOptions, MultipleRelationRepository } from './multiple-relation-repository';
3
+ export declare class HasManyRepository extends MultipleRelationRepository {
4
+ find(options?: FindOptions): Promise<any>;
5
+ aggregate(options: AggregateOptions): Promise<any>;
6
+ destroy(options?: TK | DestroyOptions): Promise<boolean>;
7
+ set(options: TargetKey | TargetKey[] | AssociatedOptions): Promise<void>;
8
+ add(options: TargetKey | TargetKey[] | AssociatedOptions): Promise<void>;
9
+ accessors(): import("sequelize").MultiAssociationAccessors;
10
+ }
@@ -0,0 +1,182 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
7
+ var __typeError = (msg) => {
8
+ throw TypeError(msg);
9
+ };
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+ var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
26
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
27
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
28
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
29
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
30
+ var __runInitializers = (array, flags, self, value) => {
31
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
32
+ return value;
33
+ };
34
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
35
+ var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
36
+ var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
37
+ var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
38
+ var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
39
+ return __privateGet(this, extra);
40
+ }, set [name](x) {
41
+ return __privateSet(this, extra, x);
42
+ } }, name));
43
+ k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
44
+ for (var i = decorators.length - 1; i >= 0; i--) {
45
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
46
+ if (k) {
47
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
48
+ if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
49
+ if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
50
+ }
51
+ it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
52
+ if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
53
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
54
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
55
+ }
56
+ return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
57
+ };
58
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
59
+ var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
60
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
61
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
62
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
63
+ var hasmany_repository_exports = {};
64
+ __export(hasmany_repository_exports, {
65
+ HasManyRepository: () => HasManyRepository
66
+ });
67
+ module.exports = __toCommonJS(hasmany_repository_exports);
68
+ var import_lodash = require("lodash");
69
+ var import_sequelize = require("sequelize");
70
+ var import_multiple_relation_repository = require("./multiple-relation-repository");
71
+ var import_relation_repository = require("./relation-repository");
72
+ var _add_dec, _set_dec, _destroy_dec, _a, _init;
73
+ const _HasManyRepository = class _HasManyRepository extends (_a = import_multiple_relation_repository.MultipleRelationRepository, _destroy_dec = [(0, import_relation_repository.transaction)((args, transaction2) => {
74
+ return {
75
+ filterByTk: args[0],
76
+ transaction: transaction2
77
+ };
78
+ })], _set_dec = [(0, import_relation_repository.transaction)((args, transaction2) => {
79
+ return {
80
+ tk: args[0],
81
+ transaction: transaction2
82
+ };
83
+ })], _add_dec = [(0, import_relation_repository.transaction)((args, transaction2) => {
84
+ return {
85
+ tk: args[0],
86
+ transaction: transaction2
87
+ };
88
+ })], _a) {
89
+ constructor() {
90
+ super(...arguments);
91
+ __runInitializers(_init, 5, this);
92
+ }
93
+ async find(options) {
94
+ const targetRepository = this.targetCollection.repository;
95
+ const addFilter = {
96
+ [this.association.foreignKey]: this.sourceKeyValue
97
+ };
98
+ if (options == null ? void 0 : options.filterByTk) {
99
+ addFilter[this.associationField.targetKey] = options.filterByTk;
100
+ }
101
+ const findOptions = {
102
+ ...(0, import_lodash.omit)(options, ["filterByTk", "where", "values", "attributes"]),
103
+ filter: {
104
+ $and: [options.filter || {}, addFilter]
105
+ }
106
+ };
107
+ return await targetRepository.find(findOptions);
108
+ }
109
+ async aggregate(options) {
110
+ const targetRepository = this.targetCollection.repository;
111
+ const addFilter = {
112
+ [this.association.foreignKey]: this.sourceKeyValue
113
+ };
114
+ const aggOptions = {
115
+ ...options,
116
+ filter: {
117
+ $and: [options.filter || {}, addFilter]
118
+ }
119
+ };
120
+ return await targetRepository.aggregate(aggOptions);
121
+ }
122
+ async destroy(options) {
123
+ const transaction2 = await this.getTransaction(options);
124
+ const sourceModel = await this.getSourceModel(transaction2);
125
+ const where = [
126
+ {
127
+ [this.association.foreignKey]: sourceModel.get(this.association.sourceKey)
128
+ }
129
+ ];
130
+ if (options && options["filter"]) {
131
+ const filterResult = this.parseFilter(options["filter"], options);
132
+ if (filterResult.include && filterResult.include.length > 0) {
133
+ return await this.destroyByFilter(options["filter"], transaction2);
134
+ }
135
+ where.push(filterResult.where);
136
+ }
137
+ if (options && options["filterByTk"]) {
138
+ if (typeof options === "object" && options["filterByTk"]) {
139
+ options = options["filterByTk"];
140
+ }
141
+ where.push({
142
+ [this.targetKey()]: options
143
+ });
144
+ }
145
+ await this.targetModel.destroy({
146
+ where: {
147
+ [import_sequelize.Op.and]: where
148
+ },
149
+ individualHooks: true,
150
+ transaction: transaction2
151
+ });
152
+ return true;
153
+ }
154
+ async set(options) {
155
+ const transaction2 = await this.getTransaction(options);
156
+ const sourceModel = await this.getSourceModel(transaction2);
157
+ await sourceModel[this.accessors().set](this.convertTks(options), {
158
+ transaction: transaction2
159
+ });
160
+ }
161
+ async add(options) {
162
+ const transaction2 = await this.getTransaction(options);
163
+ const sourceModel = await this.getSourceModel(transaction2);
164
+ await sourceModel[this.accessors().add](this.convertTks(options), {
165
+ transaction: transaction2
166
+ });
167
+ }
168
+ accessors() {
169
+ return this.association.accessors;
170
+ }
171
+ };
172
+ _init = __decoratorStart(_a);
173
+ __decorateElement(_init, 1, "destroy", _destroy_dec, _HasManyRepository);
174
+ __decorateElement(_init, 1, "set", _set_dec, _HasManyRepository);
175
+ __decorateElement(_init, 1, "add", _add_dec, _HasManyRepository);
176
+ __decoratorMetadata(_init, _HasManyRepository);
177
+ __name(_HasManyRepository, "HasManyRepository");
178
+ let HasManyRepository = _HasManyRepository;
179
+ // Annotate the CommonJS export names for ESM import in node:
180
+ 0 && (module.exports = {
181
+ HasManyRepository
182
+ });
@@ -0,0 +1,6 @@
1
+ import { SingleRelationRepository } from './single-relation-repository';
2
+ export declare class HasOneRepository extends SingleRelationRepository {
3
+ filterOptions(sourceModel: any): {
4
+ [x: string]: any;
5
+ };
6
+ }
@@ -0,0 +1,39 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var hasone_repository_exports = {};
20
+ __export(hasone_repository_exports, {
21
+ HasOneRepository: () => HasOneRepository
22
+ });
23
+ module.exports = __toCommonJS(hasone_repository_exports);
24
+ var import_single_relation_repository = require("./single-relation-repository");
25
+ const _HasOneRepository = class _HasOneRepository extends import_single_relation_repository.SingleRelationRepository {
26
+ filterOptions(sourceModel) {
27
+ const association = this.association;
28
+ return {
29
+ // @ts-ignore
30
+ [association.foreignKey]: sourceModel.get(association.sourceKey)
31
+ };
32
+ }
33
+ };
34
+ __name(_HasOneRepository, "HasOneRepository");
35
+ let HasOneRepository = _HasOneRepository;
36
+ // Annotate the CommonJS export names for ESM import in node:
37
+ 0 && (module.exports = {
38
+ HasOneRepository
39
+ });
@@ -0,0 +1,20 @@
1
+ import { MultiAssociationAccessors, Transaction, Transactionable } from 'sequelize';
2
+ import { CommonFindOptions, CountOptions, DestroyOptions, Filter, FindOneOptions, FindOptions, TargetKey, TK, UpdateOptions } from '../repository';
3
+ import { RelationRepository } from './relation-repository';
4
+ export type FindAndCountOptions = CommonFindOptions;
5
+ export interface AssociatedOptions extends Transactionable {
6
+ tk?: TK;
7
+ }
8
+ export declare abstract class MultipleRelationRepository extends RelationRepository {
9
+ extendFindOptions(findOptions: any): any;
10
+ find(options?: FindOptions): Promise<any>;
11
+ findAndCount(options?: FindAndCountOptions): Promise<[any[], number]>;
12
+ count(options?: CountOptions): Promise<number>;
13
+ findOne(options?: FindOneOptions): Promise<any>;
14
+ remove(options: TargetKey | TargetKey[] | AssociatedOptions): Promise<void>;
15
+ update(options?: UpdateOptions): Promise<any>;
16
+ destroy(options?: TK | DestroyOptions): Promise<boolean>;
17
+ protected destroyByFilter(filter: Filter, transaction?: Transaction): Promise<boolean>;
18
+ protected filterHasInclude(filter: Filter, options?: any): boolean;
19
+ protected accessors(): MultiAssociationAccessors;
20
+ }