@tachybase/module-collection 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 (90) hide show
  1. package/.turbo/turbo-build.log +14 -0
  2. package/LICENSE +201 -0
  3. package/README.md +9 -0
  4. package/README.zh-CN.md +9 -0
  5. package/client.d.ts +2 -0
  6. package/client.js +1 -0
  7. package/dist/client/index.d.ts +5 -0
  8. package/dist/client/index.js +1 -0
  9. package/dist/externalVersion.js +14 -0
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.js +39 -0
  12. package/dist/server/actions/collectionImportExportMeta.d.ts +2 -0
  13. package/dist/server/actions/collectionImportExportMeta.js +226 -0
  14. package/dist/server/collections/collectionCategories.d.ts +3 -0
  15. package/dist/server/collections/collectionCategories.js +52 -0
  16. package/dist/server/collections/collections.d.ts +3 -0
  17. package/dist/server/collections/collections.js +92 -0
  18. package/dist/server/collections/fields.d.ts +3 -0
  19. package/dist/server/collections/fields.js +94 -0
  20. package/dist/server/hooks/afterCreateForForeignKeyField.d.ts +2 -0
  21. package/dist/server/hooks/afterCreateForForeignKeyField.js +195 -0
  22. package/dist/server/hooks/afterCreateForReverseField.d.ts +4 -0
  23. package/dist/server/hooks/afterCreateForReverseField.js +37 -0
  24. package/dist/server/hooks/afterDestroyForForeignKeyField.d.ts +2 -0
  25. package/dist/server/hooks/afterDestroyForForeignKeyField.js +89 -0
  26. package/dist/server/hooks/beforeCreateForChildrenCollection.d.ts +5 -0
  27. package/dist/server/hooks/beforeCreateForChildrenCollection.js +58 -0
  28. package/dist/server/hooks/beforeCreateForReverseField.d.ts +4 -0
  29. package/dist/server/hooks/beforeCreateForReverseField.js +64 -0
  30. package/dist/server/hooks/beforeCreateForValidateField.d.ts +4 -0
  31. package/dist/server/hooks/beforeCreateForValidateField.js +48 -0
  32. package/dist/server/hooks/beforeCreateForViewCollection.d.ts +5 -0
  33. package/dist/server/hooks/beforeCreateForViewCollection.js +30 -0
  34. package/dist/server/hooks/beforeDestroyForeignKey.d.ts +2 -0
  35. package/dist/server/hooks/beforeDestroyForeignKey.js +66 -0
  36. package/dist/server/hooks/beforeInitOptions.d.ts +29 -0
  37. package/dist/server/hooks/beforeInitOptions.js +233 -0
  38. package/dist/server/hooks/index.d.ts +6 -0
  39. package/dist/server/hooks/index.js +31 -0
  40. package/dist/server/index.d.ts +4 -0
  41. package/dist/server/index.js +45 -0
  42. package/dist/server/migrations/20220613103214-alert-sub-table.d.ts +5 -0
  43. package/dist/server/migrations/20220613103214-alert-sub-table.js +40 -0
  44. package/dist/server/migrations/20220704225714-drop-foreign-keys.d.ts +5 -0
  45. package/dist/server/migrations/20220704225714-drop-foreign-keys.js +67 -0
  46. package/dist/server/migrations/20221101111110-update-foreign-fields.d.ts +5 -0
  47. package/dist/server/migrations/20221101111110-update-foreign-fields.js +64 -0
  48. package/dist/server/migrations/20221104151410-update-collections-hidden.d.ts +5 -0
  49. package/dist/server/migrations/20221104151410-update-collections-hidden.js +47 -0
  50. package/dist/server/migrations/20221121111110-update-fk-type.d.ts +5 -0
  51. package/dist/server/migrations/20221121111110-update-fk-type.js +144 -0
  52. package/dist/server/migrations/20221121111113-update-id-to-bigint.d.ts +5 -0
  53. package/dist/server/migrations/20221121111113-update-id-to-bigint.js +178 -0
  54. package/dist/server/migrations/20221221103220-timestamps.d.ts +5 -0
  55. package/dist/server/migrations/20221221103220-timestamps.js +45 -0
  56. package/dist/server/migrations/20230225111112-drop-ui-schema-relation.d.ts +5 -0
  57. package/dist/server/migrations/20230225111112-drop-ui-schema-relation.js +87 -0
  58. package/dist/server/migrations/20230509111114-alert-ui-schema.d.ts +5 -0
  59. package/dist/server/migrations/20230509111114-alert-ui-schema.js +77 -0
  60. package/dist/server/migrations/20230623145414-number-step.d.ts +5 -0
  61. package/dist/server/migrations/20230623145414-number-step.js +71 -0
  62. package/dist/server/migrations/20230704222935-tableoid.d.ts +5 -0
  63. package/dist/server/migrations/20230704222935-tableoid.js +73 -0
  64. package/dist/server/migrations/20230918024546-set-collection-schema.d.ts +5 -0
  65. package/dist/server/migrations/20230918024546-set-collection-schema.js +45 -0
  66. package/dist/server/migrations/20240220153103-install-main-datasource.d.ts +6 -0
  67. package/dist/server/migrations/20240220153103-install-main-datasource.js +41 -0
  68. package/dist/server/models/collection.d.ts +23 -0
  69. package/dist/server/models/collection.js +221 -0
  70. package/dist/server/models/field.d.ts +22 -0
  71. package/dist/server/models/field.js +188 -0
  72. package/dist/server/models/index.d.ts +2 -0
  73. package/dist/server/models/index.js +23 -0
  74. package/dist/server/repositories/collection-repository.d.ts +12 -0
  75. package/dist/server/repositories/collection-repository.js +135 -0
  76. package/dist/server/repositories/index.d.ts +1 -0
  77. package/dist/server/repositories/index.js +21 -0
  78. package/dist/server/resourcers/collections.d.ts +4 -0
  79. package/dist/server/resourcers/collections.js +93 -0
  80. package/dist/server/resourcers/sql.d.ts +10 -0
  81. package/dist/server/resourcers/sql.js +108 -0
  82. package/dist/server/resourcers/views.d.ts +9 -0
  83. package/dist/server/resourcers/views.js +98 -0
  84. package/dist/server/server.d.ts +11 -0
  85. package/dist/server/server.js +332 -0
  86. package/dist/swagger/index.d.ts +405 -0
  87. package/dist/swagger/index.js +431 -0
  88. package/package.json +34 -0
  89. package/server.d.ts +2 -0
  90. package/server.js +1 -0
@@ -0,0 +1,92 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var collections_exports = {};
19
+ __export(collections_exports, {
20
+ default: () => collections_default
21
+ });
22
+ module.exports = __toCommonJS(collections_exports);
23
+ var collections_default = {
24
+ dumpRules: "required",
25
+ shared: true,
26
+ name: "collections",
27
+ sortable: "sort",
28
+ autoGenId: false,
29
+ model: "CollectionModel",
30
+ repository: "CollectionRepository",
31
+ timestamps: false,
32
+ filterTargetKey: "name",
33
+ fields: [
34
+ {
35
+ type: "uid",
36
+ name: "key",
37
+ primaryKey: true
38
+ },
39
+ {
40
+ type: "uid",
41
+ name: "name",
42
+ unique: true,
43
+ prefix: "t_"
44
+ },
45
+ {
46
+ type: "string",
47
+ name: "title",
48
+ required: true,
49
+ translation: true
50
+ },
51
+ {
52
+ type: "boolean",
53
+ name: "inherit",
54
+ defaultValue: false
55
+ },
56
+ {
57
+ type: "boolean",
58
+ name: "hidden",
59
+ defaultValue: false
60
+ },
61
+ {
62
+ type: "json",
63
+ name: "options",
64
+ defaultValue: {}
65
+ },
66
+ {
67
+ type: "string",
68
+ name: "description",
69
+ allowNull: true
70
+ },
71
+ {
72
+ type: "hasMany",
73
+ name: "fields",
74
+ target: "fields",
75
+ sourceKey: "name",
76
+ targetKey: "name",
77
+ foreignKey: "collectionName",
78
+ sortBy: "sort"
79
+ },
80
+ {
81
+ type: "belongsToMany",
82
+ name: "category",
83
+ target: "collectionCategories",
84
+ sourceKey: "name",
85
+ foreignKey: "collectionName",
86
+ otherKey: "categoryId",
87
+ targetKey: "id",
88
+ sortBy: "sort",
89
+ through: "collectionCategory"
90
+ }
91
+ ]
92
+ };
@@ -0,0 +1,3 @@
1
+ import { CollectionOptions } from '@tachybase/database';
2
+ declare const _default: CollectionOptions;
3
+ export default _default;
@@ -0,0 +1,94 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var fields_exports = {};
19
+ __export(fields_exports, {
20
+ default: () => fields_default
21
+ });
22
+ module.exports = __toCommonJS(fields_exports);
23
+ var fields_default = {
24
+ dumpRules: "required",
25
+ shared: true,
26
+ name: "fields",
27
+ autoGenId: false,
28
+ model: "FieldModel",
29
+ timestamps: false,
30
+ sortable: {
31
+ name: "sort",
32
+ scopeKey: "collectionName"
33
+ },
34
+ indexes: [
35
+ {
36
+ type: "UNIQUE",
37
+ fields: ["collectionName", "name"]
38
+ }
39
+ ],
40
+ fields: [
41
+ {
42
+ type: "uid",
43
+ name: "key",
44
+ primaryKey: true
45
+ },
46
+ {
47
+ type: "uid",
48
+ name: "name",
49
+ prefix: "f_"
50
+ },
51
+ {
52
+ type: "string",
53
+ name: "type"
54
+ },
55
+ {
56
+ type: "string",
57
+ name: "interface",
58
+ allowNull: true
59
+ },
60
+ {
61
+ type: "string",
62
+ name: "description",
63
+ allowNull: true
64
+ },
65
+ {
66
+ type: "belongsTo",
67
+ name: "collection",
68
+ target: "collections",
69
+ foreignKey: "collectionName",
70
+ targetKey: "name",
71
+ onDelete: "CASCADE"
72
+ },
73
+ {
74
+ type: "hasMany",
75
+ name: "children",
76
+ target: "fields",
77
+ sourceKey: "key",
78
+ foreignKey: "parentKey"
79
+ },
80
+ {
81
+ type: "hasOne",
82
+ name: "reverseField",
83
+ target: "fields",
84
+ sourceKey: "key",
85
+ foreignKey: "reverseKey"
86
+ },
87
+ {
88
+ type: "json",
89
+ name: "options",
90
+ defaultValue: {},
91
+ translation: true
92
+ }
93
+ ]
94
+ };
@@ -0,0 +1,2 @@
1
+ import Database from '@tachybase/database';
2
+ export declare function afterCreateForForeignKeyField(db: Database): (model: any, options: any) => Promise<void>;
@@ -0,0 +1,195 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var afterCreateForForeignKeyField_exports = {};
19
+ __export(afterCreateForForeignKeyField_exports, {
20
+ afterCreateForForeignKeyField: () => afterCreateForForeignKeyField
21
+ });
22
+ module.exports = __toCommonJS(afterCreateForForeignKeyField_exports);
23
+ function afterCreateForForeignKeyField(db) {
24
+ function generateFkOptions(collectionName, foreignKey) {
25
+ const collection = db.getCollection(collectionName);
26
+ if (!collection) {
27
+ throw new Error("collection not found");
28
+ }
29
+ const M = collection.model;
30
+ const attr = M.rawAttributes[foreignKey];
31
+ if (!attr) {
32
+ throw new Error(`${collectionName}.${foreignKey} does not exists`);
33
+ }
34
+ return attribute2field(attr);
35
+ }
36
+ function attribute2field(attribute) {
37
+ let type = "bigInt";
38
+ if (attribute.type.constructor.name === "INTEGER") {
39
+ type = "integer";
40
+ } else if (attribute.type.constructor.name === "STRING") {
41
+ type = "string";
42
+ }
43
+ const name = attribute.fieldName;
44
+ const data = {
45
+ interface: "integer",
46
+ name,
47
+ type,
48
+ uiSchema: {
49
+ type: "number",
50
+ title: name,
51
+ "x-component": "InputNumber",
52
+ "x-read-pretty": true
53
+ }
54
+ };
55
+ if (type === "string") {
56
+ data["interface"] = "input";
57
+ data["uiSchema"] = {
58
+ type: "string",
59
+ title: name,
60
+ "x-component": "Input",
61
+ "x-read-pretty": true
62
+ };
63
+ }
64
+ return data;
65
+ }
66
+ async function createFieldIfNotExists({ values, transaction }) {
67
+ const { collectionName, name } = values;
68
+ if (!collectionName || !name) {
69
+ throw new Error(`field options invalid`);
70
+ }
71
+ const r = db.getRepository("fields");
72
+ const instance = await r.findOne({
73
+ filter: {
74
+ collectionName,
75
+ name
76
+ },
77
+ transaction
78
+ });
79
+ if (instance) {
80
+ if (instance.type !== values.type) {
81
+ throw new Error(`fk type invalid`);
82
+ }
83
+ instance.set("sort", 1);
84
+ instance.set("isForeignKey", true);
85
+ await instance.save({ transaction });
86
+ } else {
87
+ const creatInstance = await r.create({
88
+ values: {
89
+ isForeignKey: true,
90
+ ...values
91
+ },
92
+ transaction
93
+ });
94
+ creatInstance.set("sort", 1);
95
+ await creatInstance.save({ transaction });
96
+ }
97
+ await r.update({
98
+ filter: {
99
+ collectionName,
100
+ options: {
101
+ primaryKey: true
102
+ }
103
+ },
104
+ values: {
105
+ sort: 0
106
+ },
107
+ transaction
108
+ });
109
+ }
110
+ const hook = async (model, { transaction, context }) => {
111
+ if (!context) {
112
+ return;
113
+ }
114
+ const {
115
+ type,
116
+ interface: interfaceType,
117
+ collectionName,
118
+ target,
119
+ through,
120
+ foreignKey,
121
+ otherKey,
122
+ source
123
+ } = model.get();
124
+ if (source) return;
125
+ if (["oho", "o2m"].includes(interfaceType)) {
126
+ const values = generateFkOptions(target, foreignKey);
127
+ await createFieldIfNotExists({
128
+ values: {
129
+ collectionName: target,
130
+ ...values
131
+ },
132
+ transaction
133
+ });
134
+ } else if (["obo", "m2o"].includes(interfaceType)) {
135
+ const values = generateFkOptions(collectionName, foreignKey);
136
+ await createFieldIfNotExists({
137
+ values: { collectionName, ...values },
138
+ transaction
139
+ });
140
+ } else if (["linkTo", "m2m"].includes(interfaceType)) {
141
+ if (type !== "belongsToMany") {
142
+ return;
143
+ }
144
+ const r = db.getRepository("collections");
145
+ const instance = await r.findOne({
146
+ filter: {
147
+ name: through
148
+ },
149
+ transaction
150
+ });
151
+ if (!instance) {
152
+ await r.create({
153
+ values: {
154
+ name: through,
155
+ title: through,
156
+ timestamps: true,
157
+ autoGenId: false,
158
+ hidden: true,
159
+ autoCreate: true,
160
+ isThrough: true,
161
+ sortable: false
162
+ },
163
+ context,
164
+ transaction
165
+ });
166
+ }
167
+ const opts1 = generateFkOptions(through, foreignKey);
168
+ const opts2 = generateFkOptions(through, otherKey);
169
+ await createFieldIfNotExists({
170
+ values: {
171
+ collectionName: through,
172
+ ...opts1
173
+ },
174
+ transaction
175
+ });
176
+ await createFieldIfNotExists({
177
+ values: {
178
+ collectionName: through,
179
+ ...opts2
180
+ },
181
+ transaction
182
+ });
183
+ }
184
+ };
185
+ return async (model, options) => {
186
+ try {
187
+ await hook(model, options);
188
+ } catch (error) {
189
+ }
190
+ };
191
+ }
192
+ // Annotate the CommonJS export names for ESM import in node:
193
+ 0 && (module.exports = {
194
+ afterCreateForForeignKeyField
195
+ });
@@ -0,0 +1,4 @@
1
+ import Database from '@tachybase/database';
2
+ export declare function afterCreateForReverseField(db: Database): (model: any, { transaction }: {
3
+ transaction: any;
4
+ }) => Promise<void>;
@@ -0,0 +1,37 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var afterCreateForReverseField_exports = {};
19
+ __export(afterCreateForReverseField_exports, {
20
+ afterCreateForReverseField: () => afterCreateForReverseField
21
+ });
22
+ module.exports = __toCommonJS(afterCreateForReverseField_exports);
23
+ function afterCreateForReverseField(db) {
24
+ return async (model, { transaction }) => {
25
+ const Field = db.getCollection("fields");
26
+ const reverseKey = model.get("reverseKey");
27
+ if (!reverseKey) {
28
+ return;
29
+ }
30
+ const reverse = await Field.model.findByPk(reverseKey, { transaction });
31
+ await reverse.update({ reverseKey: model.get("key") }, { hooks: false, transaction });
32
+ };
33
+ }
34
+ // Annotate the CommonJS export names for ESM import in node:
35
+ 0 && (module.exports = {
36
+ afterCreateForReverseField
37
+ });
@@ -0,0 +1,2 @@
1
+ import Database from '@tachybase/database';
2
+ export declare function afterDestroyForForeignKeyField(db: Database): (model: any, opts: any) => Promise<void>;
@@ -0,0 +1,89 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var afterDestroyForForeignKeyField_exports = {};
19
+ __export(afterDestroyForForeignKeyField_exports, {
20
+ afterDestroyForForeignKeyField: () => afterDestroyForForeignKeyField
21
+ });
22
+ module.exports = __toCommonJS(afterDestroyForForeignKeyField_exports);
23
+ async function destroyFields(db, transaction, fieldRecords) {
24
+ const fieldsRepo = db.getRepository("fields");
25
+ for (const fieldRecord of fieldRecords) {
26
+ await fieldsRepo.destroy({
27
+ filter: {
28
+ name: fieldRecord.get("name"),
29
+ collectionName: fieldRecord.get("collectionName")
30
+ },
31
+ transaction
32
+ });
33
+ }
34
+ }
35
+ function afterDestroyForForeignKeyField(db) {
36
+ return async (model, opts) => {
37
+ const { transaction } = opts;
38
+ const options = model.get("options");
39
+ if (!(options == null ? void 0 : options.isForeignKey)) {
40
+ return;
41
+ }
42
+ const collectionRepo = db.getRepository("collections");
43
+ const foreignKey = model.get("name");
44
+ const foreignKeyCollectionName = model.get("collectionName");
45
+ const collectionRecord = await collectionRepo.findOne({
46
+ filter: {
47
+ name: foreignKeyCollectionName
48
+ },
49
+ transaction
50
+ });
51
+ const collectionOptions = collectionRecord.get("options");
52
+ const fieldsRepo = db.getRepository("fields");
53
+ if (collectionOptions == null ? void 0 : collectionOptions.isThrough) {
54
+ const fieldRecords = await fieldsRepo.find({
55
+ filter: {
56
+ options: { through: foreignKeyCollectionName, foreignKey }
57
+ },
58
+ transaction
59
+ });
60
+ await destroyFields(db, transaction, fieldRecords);
61
+ } else {
62
+ await destroyFields(
63
+ db,
64
+ transaction,
65
+ await fieldsRepo.find({
66
+ filter: {
67
+ collectionName: foreignKeyCollectionName,
68
+ options: { foreignKey }
69
+ },
70
+ transaction
71
+ })
72
+ );
73
+ await destroyFields(
74
+ db,
75
+ transaction,
76
+ await fieldsRepo.find({
77
+ filter: {
78
+ options: { foreignKey, target: foreignKeyCollectionName }
79
+ },
80
+ transaction
81
+ })
82
+ );
83
+ }
84
+ };
85
+ }
86
+ // Annotate the CommonJS export names for ESM import in node:
87
+ 0 && (module.exports = {
88
+ afterDestroyForForeignKeyField
89
+ });
@@ -0,0 +1,5 @@
1
+ import Database from '@tachybase/database';
2
+ export declare function beforeCreateForChildrenCollection(db: Database): (model: any, { transaction, context }: {
3
+ transaction: any;
4
+ context: any;
5
+ }) => Promise<void>;
@@ -0,0 +1,58 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var beforeCreateForChildrenCollection_exports = {};
19
+ __export(beforeCreateForChildrenCollection_exports, {
20
+ beforeCreateForChildrenCollection: () => beforeCreateForChildrenCollection
21
+ });
22
+ module.exports = __toCommonJS(beforeCreateForChildrenCollection_exports);
23
+ function beforeCreateForChildrenCollection(db) {
24
+ return async (model, { transaction, context }) => {
25
+ const Collection = db.getCollection("collections");
26
+ const Field = db.getCollection("fields");
27
+ const parentKey = model.get("parentKey");
28
+ if (!parentKey) {
29
+ return;
30
+ }
31
+ const parent = await Field.model.findByPk(parentKey, { transaction });
32
+ const parentTarget = parent.get("target");
33
+ model.set("collectionName", parentTarget);
34
+ const collection = await Collection.model.findOne({
35
+ transaction,
36
+ where: {
37
+ name: parentTarget
38
+ }
39
+ });
40
+ if (!collection) {
41
+ await Collection.repository.create({
42
+ values: {
43
+ name: parentTarget,
44
+ createdBy: true,
45
+ updatedBy: true,
46
+ sortable: true,
47
+ inherit: true
48
+ },
49
+ transaction,
50
+ context
51
+ });
52
+ }
53
+ };
54
+ }
55
+ // Annotate the CommonJS export names for ESM import in node:
56
+ 0 && (module.exports = {
57
+ beforeCreateForChildrenCollection
58
+ });
@@ -0,0 +1,4 @@
1
+ import Database from '@tachybase/database';
2
+ export declare function beforeCreateForReverseField(db: Database): (model: any, { transaction }: {
3
+ transaction: any;
4
+ }) => Promise<void>;
@@ -0,0 +1,64 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var beforeCreateForReverseField_exports = {};
19
+ __export(beforeCreateForReverseField_exports, {
20
+ beforeCreateForReverseField: () => beforeCreateForReverseField
21
+ });
22
+ module.exports = __toCommonJS(beforeCreateForReverseField_exports);
23
+ function beforeCreateForReverseField(db) {
24
+ return async (model, { transaction }) => {
25
+ const Field = db.getCollection("fields");
26
+ const reverseKey = model.get("reverseKey");
27
+ if (!reverseKey) {
28
+ return;
29
+ }
30
+ const reverse = await Field.model.findByPk(reverseKey, { transaction });
31
+ model.set("collectionName", reverse.get("target"));
32
+ model.set("target", reverse.get("collectionName"));
33
+ if (reverse.get("onDelete")) {
34
+ model.set("onDelete", reverse.get("onDelete"));
35
+ }
36
+ const reverseType = reverse.get("type");
37
+ if (["hasMany", "hasOne"].includes(reverseType)) {
38
+ model.set("type", "belongsTo");
39
+ model.set("targetKey", reverse.get("sourceKey"));
40
+ model.set("foreignKey", reverse.get("foreignKey"));
41
+ model.set("sourceKey", reverse.get("targetKey"));
42
+ }
43
+ if (["belongsTo"].includes(reverseType)) {
44
+ if (!model.get("type")) {
45
+ model.set("type", "hasMany");
46
+ }
47
+ model.set("sourceKey", reverse.get("targetKey"));
48
+ model.set("foreignKey", reverse.get("foreignKey"));
49
+ model.set("targetKey", reverse.get("sourceKey"));
50
+ }
51
+ if (["belongsToMany"].includes(reverseType)) {
52
+ model.set("type", "belongsToMany");
53
+ model.set("through", reverse.get("through"));
54
+ model.set("sourceKey", reverse.get("targetKey"));
55
+ model.set("foreignKey", reverse.get("otherKey"));
56
+ model.set("targetKey", reverse.get("sourceKey"));
57
+ model.set("otherKey", reverse.get("foreignKey"));
58
+ }
59
+ };
60
+ }
61
+ // Annotate the CommonJS export names for ESM import in node:
62
+ 0 && (module.exports = {
63
+ beforeCreateForReverseField
64
+ });
@@ -0,0 +1,4 @@
1
+ import { Database } from '@tachybase/database';
2
+ export declare function beforeCreateForValidateField(db: Database): (model: any, { transaction }: {
3
+ transaction: any;
4
+ }) => Promise<void>;