@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,71 @@
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 __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var database_utils_exports = {};
31
+ __export(database_utils_exports, {
32
+ default: () => DatabaseUtils
33
+ });
34
+ module.exports = __toCommonJS(database_utils_exports);
35
+ var import_lodash = __toESM(require("lodash"));
36
+ __reExport(database_utils_exports, require("./traverseJSON"), module.exports);
37
+ const _DatabaseUtils = class _DatabaseUtils {
38
+ constructor(db) {
39
+ this.db = db;
40
+ }
41
+ addSchema(tableName, schema) {
42
+ if (!this.db.inDialect("postgres")) return tableName;
43
+ if (this.db.options.schema && !schema) {
44
+ schema = this.db.options.schema;
45
+ }
46
+ if (schema) {
47
+ tableName = this.db.sequelize.getQueryInterface().queryGenerator.addSchema({
48
+ tableName,
49
+ _schema: schema
50
+ });
51
+ }
52
+ return tableName;
53
+ }
54
+ quoteTable(tableName) {
55
+ const queryGenerator = this.db.sequelize.getQueryInterface().queryGenerator;
56
+ tableName = queryGenerator.quoteTable(import_lodash.default.isPlainObject(tableName) ? tableName : this.addSchema(tableName));
57
+ return tableName;
58
+ }
59
+ schema() {
60
+ if (!this.db.inDialect("postgres")) {
61
+ return void 0;
62
+ }
63
+ return this.db.options.schema || "public";
64
+ }
65
+ };
66
+ __name(_DatabaseUtils, "DatabaseUtils");
67
+ let DatabaseUtils = _DatabaseUtils;
68
+ // Annotate the CommonJS export names for ESM import in node:
69
+ 0 && (module.exports = {
70
+ ...require("./traverseJSON")
71
+ });
@@ -0,0 +1,10 @@
1
+ import { Collection } from '../collection';
2
+ type TraverseOptions = {
3
+ collection: Collection;
4
+ exclude?: string[];
5
+ include?: string[];
6
+ through?: string;
7
+ excludePk?: boolean;
8
+ };
9
+ export declare const traverseJSON: (data: any, options: TraverseOptions) => any;
10
+ export {};
@@ -0,0 +1,126 @@
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 traverseJSON_exports = {};
20
+ __export(traverseJSON_exports, {
21
+ traverseJSON: () => traverseJSON
22
+ });
23
+ module.exports = __toCommonJS(traverseJSON_exports);
24
+ const traverseHasMany = /* @__PURE__ */ __name((arr, { collection, exclude = [], include = [] }) => {
25
+ if (!arr) {
26
+ return arr;
27
+ }
28
+ return arr.map((item) => traverseJSON(item, { collection, exclude, include }));
29
+ }, "traverseHasMany");
30
+ const traverseBelongsToMany = /* @__PURE__ */ __name((arr, { collection, exclude = [], through }) => {
31
+ if (!arr) {
32
+ return arr;
33
+ }
34
+ const throughCollection = collection.db.getCollection(through);
35
+ return arr.map((item) => {
36
+ const data = traverseJSON(item[through], { collection: throughCollection, exclude });
37
+ if (data && Object.keys(data).length) {
38
+ item[through] = data;
39
+ } else {
40
+ delete item[through];
41
+ }
42
+ return traverseJSON(item, {
43
+ collection,
44
+ excludePk: false
45
+ });
46
+ });
47
+ }, "traverseBelongsToMany");
48
+ const parseInclude = /* @__PURE__ */ __name((keys) => {
49
+ const map = {};
50
+ for (const key of keys) {
51
+ const args = key.split(".");
52
+ const field = args.shift();
53
+ map[field] = map[field] || [];
54
+ if (args.length) {
55
+ map[field].push(args.join("."));
56
+ }
57
+ }
58
+ return map;
59
+ }, "parseInclude");
60
+ const traverseJSON = /* @__PURE__ */ __name((data, options) => {
61
+ if (!data) {
62
+ return data;
63
+ }
64
+ const { collection, exclude = [], include = [], excludePk = true } = options;
65
+ const map = parseInclude(include);
66
+ const result = {};
67
+ for (const key of Object.keys(data || {})) {
68
+ const subInclude = map[key];
69
+ if (include.length > 0 && !subInclude) {
70
+ continue;
71
+ }
72
+ if (exclude.includes(key)) {
73
+ continue;
74
+ }
75
+ if (["createdAt", "updatedAt", "createdBy", "createdById", "updatedById", "updatedBy"].includes(key)) {
76
+ continue;
77
+ }
78
+ const field = collection.getField(key);
79
+ if (!field) {
80
+ result[key] = data[key];
81
+ continue;
82
+ }
83
+ if (field.options.primaryKey && excludePk) {
84
+ continue;
85
+ }
86
+ if (field.options.isForeignKey) {
87
+ continue;
88
+ }
89
+ if (["sort", "password", "sequence"].includes(field.type)) {
90
+ continue;
91
+ }
92
+ if (field.type === "hasOne") {
93
+ result[key] = traverseJSON(data[key], {
94
+ collection: collection.db.getCollection(field.target),
95
+ exclude: [field.foreignKey],
96
+ include: subInclude
97
+ });
98
+ } else if (field.type === "hasMany") {
99
+ result[key] = traverseHasMany(data[key], {
100
+ collection: collection.db.getCollection(field.target),
101
+ exclude: [field.foreignKey],
102
+ include: subInclude
103
+ });
104
+ } else if (field.type === "belongsTo") {
105
+ result[key] = traverseJSON(data[key], {
106
+ collection: collection.db.getCollection(field.target),
107
+ // exclude: [field.foreignKey],
108
+ include: subInclude,
109
+ excludePk: false
110
+ });
111
+ } else if (field.type === "belongsToMany") {
112
+ result[key] = traverseBelongsToMany(data[key], {
113
+ collection: collection.db.getCollection(field.target),
114
+ exclude: [field.foreignKey, field.otherKey],
115
+ through: field.through
116
+ });
117
+ } else {
118
+ result[key] = data[key];
119
+ }
120
+ }
121
+ return result;
122
+ }, "traverseJSON");
123
+ // Annotate the CommonJS export names for ESM import in node:
124
+ 0 && (module.exports = {
125
+ traverseJSON
126
+ });
@@ -0,0 +1,201 @@
1
+ import { EventEmitter } from 'events';
2
+ import { Logger, LoggerOptions } from '@tachybase/logger';
3
+ import { AsyncEmitter } from '@tachybase/utils';
4
+ import merge from 'deepmerge';
5
+ import { ModelStatic, Options, QueryInterfaceDropAllTablesOptions, QueryOptions, Sequelize, SyncOptions, Transactionable } from 'sequelize';
6
+ import { ConnectionManager } from 'sequelize/types/dialects/abstract/connection-manager';
7
+ import { Umzug } from 'umzug';
8
+ import { Collection, CollectionOptions, RepositoryType } from './collection';
9
+ import { CollectionFactory } from './collection-factory';
10
+ import { CollectionGroupManager } from './collection-group-manager';
11
+ import { ImportFileExtension } from './collection-importer';
12
+ import DatabaseUtils from './database-utils';
13
+ import ReferencesMap from './features/references-map';
14
+ import { ArrayFieldRepository } from './field-repository/array-field-repository';
15
+ import * as FieldTypes from './fields';
16
+ import { Field, FieldContext, RelationField } from './fields';
17
+ import InheritanceMap from './inherited-map';
18
+ import { MigrationItem, Migrations } from './migration';
19
+ import { Model } from './model';
20
+ import { ModelHook } from './model-hook';
21
+ import QueryInterface from './query-interface/query-interface';
22
+ import { RelationRepository } from './relation-repository/relation-repository';
23
+ import { Repository } from './repository';
24
+ import { AfterDefineCollectionListener, BeforeDefineCollectionListener, CreateListener, CreateWithAssociationsListener, DatabaseAfterDefineCollectionEventType, DatabaseAfterRemoveCollectionEventType, DatabaseBeforeDefineCollectionEventType, DatabaseBeforeRemoveCollectionEventType, DestroyListener, EventType, ModelCreateEventTypes, ModelCreateWithAssociationsEventTypes, ModelDestroyEventTypes, ModelSaveEventTypes, ModelSaveWithAssociationsEventTypes, ModelUpdateEventTypes, ModelUpdateWithAssociationsEventTypes, ModelValidateEventTypes, RemoveCollectionListener, SaveListener, SaveWithAssociationsListener, SyncListener, UpdateListener, UpdateWithAssociationsListener, ValidateListener } from './types';
25
+ import { BaseValueParser } from './value-parsers';
26
+ export type MergeOptions = merge.Options;
27
+ export interface PendingOptions {
28
+ field: RelationField;
29
+ model: ModelStatic<Model>;
30
+ }
31
+ interface MapOf<T> {
32
+ [key: string]: T;
33
+ }
34
+ export interface IDatabaseOptions extends Options {
35
+ tablePrefix?: string;
36
+ migrator?: any;
37
+ usingBigIntForId?: boolean;
38
+ underscored?: boolean;
39
+ logger?: LoggerOptions | Logger;
40
+ customHooks?: any;
41
+ instanceId?: string;
42
+ }
43
+ export type DatabaseOptions = IDatabaseOptions;
44
+ interface RegisterOperatorsContext {
45
+ db?: Database;
46
+ path?: string;
47
+ field?: Field;
48
+ app?: any;
49
+ }
50
+ export interface CleanOptions extends QueryInterfaceDropAllTablesOptions {
51
+ drop?: boolean;
52
+ }
53
+ export type AddMigrationsOptions = {
54
+ context?: any;
55
+ namespace?: string;
56
+ extensions?: string[];
57
+ directory: string;
58
+ };
59
+ type OperatorFunc = (value: any, ctx?: RegisterOperatorsContext) => any;
60
+ export declare const DialectVersionAccessors: {
61
+ sqlite: {
62
+ sql: string;
63
+ get: (v: string) => string;
64
+ };
65
+ mysql: {
66
+ sql: string;
67
+ get: (v: string) => string;
68
+ };
69
+ mariadb: {
70
+ sql: string;
71
+ get: (v: string) => string;
72
+ };
73
+ postgres: {
74
+ sql: string;
75
+ get: (v: string) => any;
76
+ };
77
+ };
78
+ declare class DatabaseVersion {
79
+ db: Database;
80
+ constructor(db: Database);
81
+ satisfies(versions: any): Promise<any>;
82
+ }
83
+ declare module 'sequelize' {
84
+ interface Sequelize {
85
+ dialect: any;
86
+ readonly connectionManager: ConnectionManager;
87
+ }
88
+ }
89
+ export declare class Database extends EventEmitter implements AsyncEmitter {
90
+ sequelize: Sequelize;
91
+ migrator: Umzug;
92
+ migrations: Migrations;
93
+ fieldTypes: Map<any, any>;
94
+ fieldValueParsers: Map<any, any>;
95
+ options: IDatabaseOptions;
96
+ models: Map<string, ModelStatic<Model<any, any>>>;
97
+ repositories: Map<string, typeof Repository>;
98
+ operators: Map<any, any>;
99
+ collections: Map<string, Collection<any, any>>;
100
+ pendingFields: Map<string, FieldTypes.RelationField[]>;
101
+ modelCollection: Map<ModelStatic<any>, Collection<any, any>>;
102
+ tableNameCollectionMap: Map<string, Collection<any, any>>;
103
+ context: any;
104
+ queryInterface: QueryInterface;
105
+ utils: DatabaseUtils;
106
+ referenceMap: ReferencesMap;
107
+ inheritanceMap: InheritanceMap;
108
+ importedFrom: Map<string, Set<string>>;
109
+ modelHook: ModelHook;
110
+ version: DatabaseVersion;
111
+ delayCollectionExtend: Map<string, {
112
+ collectionOptions: CollectionOptions;
113
+ mergeOptions?: any;
114
+ }[]>;
115
+ logger: Logger;
116
+ collectionGroupManager: CollectionGroupManager;
117
+ collectionFactory: CollectionFactory;
118
+ emitAsync: (event: string | symbol, ...args: any[]) => Promise<boolean>;
119
+ constructor(options: DatabaseOptions);
120
+ _instanceId: string;
121
+ get instanceId(): string;
122
+ createMigrator({ migrations }: {
123
+ migrations: any;
124
+ }): Umzug<any>;
125
+ setContext(context: any): void;
126
+ sequelizeOptions(options: any): any;
127
+ initListener(): void;
128
+ addMigration(item: MigrationItem): void;
129
+ addMigrations(options: AddMigrationsOptions): void;
130
+ inDialect(...dialect: string[]): boolean;
131
+ isMySQLCompatibleDialect(): boolean;
132
+ /**
133
+ * Add collection to database
134
+ * @param options
135
+ */
136
+ collection<Attributes = any, CreateAttributes = Attributes>(options: CollectionOptions): Collection<Attributes, CreateAttributes>;
137
+ getTablePrefix(): string;
138
+ getFieldByPath(path: string): any;
139
+ /**
140
+ * get exists collection by its name
141
+ * @param name
142
+ */
143
+ getCollection(name: string): Collection;
144
+ hasCollection(name: string): boolean;
145
+ removeCollection(name: string): Collection<any, any>;
146
+ getModel<M extends Model>(name: string): ModelStatic<M>;
147
+ getRepository<R extends Repository>(name: string): R;
148
+ getRepository<R extends RelationRepository>(name: string, relationId: string | number): R;
149
+ getRepository<R extends ArrayFieldRepository>(name: string, relationId: string | number): R;
150
+ addPendingField(field: RelationField): void;
151
+ removePendingField(field: RelationField): void;
152
+ registerFieldTypes(fieldTypes: MapOf<typeof Field>): void;
153
+ registerFieldValueParsers(parsers: MapOf<any>): void;
154
+ buildFieldValueParser<T extends BaseValueParser>(field: Field, ctx: any): T;
155
+ registerModels(models: MapOf<ModelStatic<any>>): void;
156
+ registerRepositories(repositories: MapOf<RepositoryType>): void;
157
+ initOperators(): void;
158
+ registerOperators(operators: MapOf<OperatorFunc>): void;
159
+ buildField(options: any, context: FieldContext): any;
160
+ sync(options?: SyncOptions): Promise<Sequelize>;
161
+ clean(options: CleanOptions): Promise<void>;
162
+ collectionExistsInDb(name: string, options?: Transactionable): Promise<boolean>;
163
+ isSqliteMemory(): boolean;
164
+ auth(options?: Omit<QueryOptions, 'retry'> & {
165
+ retry?: number | Pick<QueryOptions, 'retry'>;
166
+ }): Promise<void>;
167
+ checkVersion(): Promise<boolean>;
168
+ prepare(): Promise<void>;
169
+ reconnect(): Promise<void>;
170
+ closed(): any;
171
+ close(): Promise<void>;
172
+ on(event: EventType, listener: any): this;
173
+ on(event: ModelValidateEventTypes, listener: SyncListener): this;
174
+ on(event: ModelValidateEventTypes, listener: ValidateListener): this;
175
+ on(event: ModelCreateEventTypes, listener: CreateListener): this;
176
+ on(event: ModelUpdateEventTypes, listener: UpdateListener): this;
177
+ on(event: ModelSaveEventTypes, listener: SaveListener): this;
178
+ on(event: ModelDestroyEventTypes, listener: DestroyListener): this;
179
+ on(event: ModelCreateWithAssociationsEventTypes, listener: CreateWithAssociationsListener): this;
180
+ on(event: ModelUpdateWithAssociationsEventTypes, listener: UpdateWithAssociationsListener): this;
181
+ on(event: ModelSaveWithAssociationsEventTypes, listener: SaveWithAssociationsListener): this;
182
+ on(event: DatabaseBeforeDefineCollectionEventType, listener: BeforeDefineCollectionListener): this;
183
+ on(event: DatabaseAfterDefineCollectionEventType, listener: AfterDefineCollectionListener): this;
184
+ on(event: DatabaseBeforeRemoveCollectionEventType | DatabaseAfterRemoveCollectionEventType, listener: RemoveCollectionListener): this;
185
+ extendCollection(collectionOptions: CollectionOptions, mergeOptions?: MergeOptions): void;
186
+ import(options: {
187
+ directory: string;
188
+ from?: string;
189
+ extensions?: ImportFileExtension[];
190
+ }): Promise<Map<string, Collection>>;
191
+ private registerCollectionType;
192
+ }
193
+ export declare type CollectionDef = {
194
+ collectionOptions: CollectionOptions;
195
+ mergeOptions: MergeOptions;
196
+ extend: boolean;
197
+ };
198
+ export declare function extendCollection(collectionOptions: CollectionOptions, mergeOptions?: MergeOptions): CollectionDef;
199
+ export declare const extend: typeof extendCollection;
200
+ export declare const defineCollection: (collectionOptions: CollectionOptions) => CollectionOptions;
201
+ export default Database;