@nocobase/plugin-data-source-main 1.5.0-beta.1 → 1.6.0-alpha.2
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.
- package/dist/client/index.js +1 -1
- package/dist/externalVersion.js +6 -7
- package/dist/server/server.d.ts +1 -1
- package/dist/server/server.js +57 -9
- package/package.json +3 -3
package/dist/client/index.js
CHANGED
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@nocobase/client")):"function"==typeof define&&define.amd?define("@nocobase/plugin-data-source-main",["@nocobase/client"],t):"object"==typeof exports?exports["@nocobase/plugin-data-source-main"]=t(require("@nocobase/client")):e["@nocobase/plugin-data-source-main"]=t(e["@nocobase/client"])}(self,function(e){return function(){"use strict";var t={772:function(t){t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var u=n[e]={exports:{}};return t[e](u,u.exports,r),u.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};r.r(o);var u=r(772);function i(e,t,n,r,o,u,i){try{var c=e[u](i),a=c.value}catch(e){n(e);return}c.done?t(a):Promise.resolve(a).then(r,o)}function c(e,t,n){return(c=s()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&l(o,n.prototype),o}).apply(null,arguments)}function a(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function f(e){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function l(e,t){return(l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function p(e){var t="function"==typeof Map?new Map:void 0;return(p=function(e){var n;if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return c(e,arguments,f(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),l(r,e)})(e)}function s(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(s=function(){return!!e})()}var b=function(e){var t,n,r;function o(){var e,t,n;return!function(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}(this,o),e=this,t=o,n=arguments,t=f(t),function(e,t){return t&&("object"===function(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}(t)||"function"==typeof t)?t:function(e){if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,s()?Reflect.construct(t,n||[],f(e).constructor):t.apply(e,n))}return!function(e,t){if("function"!=typeof t&&null!==t)throw TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&l(e,t)}(o,e),t=o,n=[{key:"load",value:function(){var e;return(e=function(){return function(e,t){var n,r,o,u,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return u={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(u[Symbol.iterator]=function(){return this}),u;function c(u){return function(c){return function(u){if(n)throw TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===u[0]||2===u[0])){i=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){i.label=u[1];break}if(6===u[0]&&i.label<o[1]){i.label=o[1],o=u;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(u);break}o[2]&&i.ops.pop(),i.trys.pop();continue}u=t.call(e,i)}catch(e){u=[6,e],r=0}finally{n=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}}(this,function(e){return[2]})},function(){var t=this,n=arguments;return new Promise(function(r,o){var u=e.apply(t,n);function c(e){i(u,r,o,c,a,"next",e)}function a(e){i(u,r,o,c,a,"throw",e)}c(void 0)})})()}}],a(t.prototype,n),o}(p(u.Plugin));return o.default=b,o}()});
|
package/dist/externalVersion.js
CHANGED
|
@@ -8,14 +8,13 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
module.exports = {
|
|
11
|
-
"@nocobase/client": "1.
|
|
12
|
-
"@nocobase/database": "1.
|
|
13
|
-
"@nocobase/plugin-error-handler": "1.
|
|
14
|
-
"@nocobase/server": "1.
|
|
15
|
-
"async-mutex": "0.3.2",
|
|
11
|
+
"@nocobase/client": "1.6.0-alpha.2",
|
|
12
|
+
"@nocobase/database": "1.6.0-alpha.2",
|
|
13
|
+
"@nocobase/plugin-error-handler": "1.6.0-alpha.2",
|
|
14
|
+
"@nocobase/server": "1.6.0-alpha.2",
|
|
16
15
|
"lodash": "4.17.21",
|
|
17
|
-
"@nocobase/test": "1.
|
|
18
|
-
"@nocobase/utils": "1.
|
|
16
|
+
"@nocobase/test": "1.6.0-alpha.2",
|
|
17
|
+
"@nocobase/utils": "1.6.0-alpha.2",
|
|
19
18
|
"sequelize": "6.35.2",
|
|
20
19
|
"dayjs": "1.11.10"
|
|
21
20
|
};
|
package/dist/server/server.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ import { Plugin } from '@nocobase/server';
|
|
|
11
11
|
export declare class PluginDataSourceMainServer extends Plugin {
|
|
12
12
|
private loadFilter;
|
|
13
13
|
setLoadFilter(filter: Filter): void;
|
|
14
|
-
|
|
14
|
+
handleSyncMessage(message: any): Promise<void>;
|
|
15
15
|
beforeLoad(): Promise<void>;
|
|
16
16
|
load(): Promise<void>;
|
|
17
17
|
install(): Promise<void>;
|
package/dist/server/server.js
CHANGED
|
@@ -42,7 +42,6 @@ __export(server_exports, {
|
|
|
42
42
|
module.exports = __toCommonJS(server_exports);
|
|
43
43
|
var import_database = require("@nocobase/database");
|
|
44
44
|
var import_server = require("@nocobase/server");
|
|
45
|
-
var import_async_mutex = require("async-mutex");
|
|
46
45
|
var import_lodash = __toESM(require("lodash"));
|
|
47
46
|
var import_path = __toESM(require("path"));
|
|
48
47
|
var import__ = require(".");
|
|
@@ -61,9 +60,9 @@ class PluginDataSourceMainServer extends import_server.Plugin {
|
|
|
61
60
|
setLoadFilter(filter) {
|
|
62
61
|
this.loadFilter = filter;
|
|
63
62
|
}
|
|
64
|
-
async
|
|
63
|
+
async handleSyncMessage(message) {
|
|
65
64
|
const { type, collectionName } = message;
|
|
66
|
-
if (type === "
|
|
65
|
+
if (type === "syncCollection") {
|
|
67
66
|
const collectionModel = await this.app.db.getCollection("collections").repository.findOne({
|
|
68
67
|
filter: {
|
|
69
68
|
name: collectionName
|
|
@@ -71,6 +70,22 @@ class PluginDataSourceMainServer extends import_server.Plugin {
|
|
|
71
70
|
});
|
|
72
71
|
await collectionModel.load();
|
|
73
72
|
}
|
|
73
|
+
if (type === "removeField") {
|
|
74
|
+
const { collectionName: collectionName2, fieldName } = message;
|
|
75
|
+
const collection = this.app.db.getCollection(collectionName2);
|
|
76
|
+
if (!collection) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
return collection.removeFieldFromDb(fieldName);
|
|
80
|
+
}
|
|
81
|
+
if (type === "removeCollection") {
|
|
82
|
+
const { collectionName: collectionName2 } = message;
|
|
83
|
+
const collection = this.app.db.getCollection(collectionName2);
|
|
84
|
+
if (!collection) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
collection.remove();
|
|
88
|
+
}
|
|
74
89
|
}
|
|
75
90
|
async beforeLoad() {
|
|
76
91
|
this.app.db.registerRepositories({
|
|
@@ -95,10 +110,15 @@ class PluginDataSourceMainServer extends import_server.Plugin {
|
|
|
95
110
|
await model.migrate({
|
|
96
111
|
transaction
|
|
97
112
|
});
|
|
98
|
-
this.
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
113
|
+
this.sendSyncMessage(
|
|
114
|
+
{
|
|
115
|
+
type: "syncCollection",
|
|
116
|
+
collectionName: model.get("name")
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
transaction
|
|
120
|
+
}
|
|
121
|
+
);
|
|
102
122
|
}
|
|
103
123
|
}
|
|
104
124
|
);
|
|
@@ -112,6 +132,15 @@ class PluginDataSourceMainServer extends import_server.Plugin {
|
|
|
112
132
|
removeOptions["cascade"] = true;
|
|
113
133
|
}
|
|
114
134
|
await model.remove(removeOptions);
|
|
135
|
+
this.sendSyncMessage(
|
|
136
|
+
{
|
|
137
|
+
type: "removeCollection",
|
|
138
|
+
collectionName: model.get("name")
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
transaction: options.transaction
|
|
142
|
+
}
|
|
143
|
+
);
|
|
115
144
|
});
|
|
116
145
|
this.app.db.on("fields.beforeCreate", (0, import_beforeCreateCheckFieldInMySQL.beforeCreateCheckFieldInMySQL)(this.app.db));
|
|
117
146
|
this.app.db.on("fields.beforeCreate", (0, import_hooks.beforeCreateForReverseField)(this.app.db));
|
|
@@ -222,14 +251,33 @@ class PluginDataSourceMainServer extends import_server.Plugin {
|
|
|
222
251
|
}
|
|
223
252
|
};
|
|
224
253
|
await collection.sync(syncOptions);
|
|
254
|
+
this.sendSyncMessage(
|
|
255
|
+
{
|
|
256
|
+
type: "syncCollection",
|
|
257
|
+
collectionName: model.get("collectionName")
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
transaction
|
|
261
|
+
}
|
|
262
|
+
);
|
|
225
263
|
}
|
|
226
264
|
});
|
|
227
265
|
this.app.db.on("fields.beforeDestroy", (0, import_beforeDestoryField.beforeDestoryField)(this.app.db));
|
|
228
266
|
this.app.db.on("fields.beforeDestroy", (0, import_hooks.beforeDestroyForeignKey)(this.app.db));
|
|
229
|
-
const mutex = new import_async_mutex.Mutex();
|
|
230
267
|
this.app.db.on("fields.beforeDestroy", async (model, options) => {
|
|
231
|
-
|
|
268
|
+
const lockKey = `${this.name}:fields.beforeDestroy:${model.get("collectionName")}`;
|
|
269
|
+
await this.app.lockManager.runExclusive(lockKey, async () => {
|
|
232
270
|
await model.remove(options);
|
|
271
|
+
this.sendSyncMessage(
|
|
272
|
+
{
|
|
273
|
+
type: "removeField",
|
|
274
|
+
collectionName: model.get("collectionName"),
|
|
275
|
+
fieldName: model.get("name")
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
transaction: options.transaction
|
|
279
|
+
}
|
|
280
|
+
);
|
|
233
281
|
});
|
|
234
282
|
});
|
|
235
283
|
this.app.db.on("fields.afterDestroy", async (model, options) => {
|
package/package.json
CHANGED
|
@@ -4,25 +4,25 @@
|
|
|
4
4
|
"displayName.zh-CN": "数据源:主数据库",
|
|
5
5
|
"description": "NocoBase main database, supports relational databases such as PostgreSQL, MySQL, MariaDB and so on.",
|
|
6
6
|
"description.zh-CN": "NocoBase 主数据库,支持 PostgreSQL、MySQL、MariaDB 等关系型数据库。",
|
|
7
|
-
"version": "1.
|
|
7
|
+
"version": "1.6.0-alpha.2",
|
|
8
8
|
"main": "./dist/server/index.js",
|
|
9
9
|
"homepage": "https://docs.nocobase.com/handbook/data-source-main",
|
|
10
10
|
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/data-source-main",
|
|
11
11
|
"license": "AGPL-3.0",
|
|
12
12
|
"devDependencies": {
|
|
13
13
|
"@hapi/topo": "^6.0.0",
|
|
14
|
-
"async-mutex": "^0.3.2",
|
|
15
14
|
"toposort": "^2.0.2"
|
|
16
15
|
},
|
|
17
16
|
"peerDependencies": {
|
|
18
17
|
"@nocobase/client": "1.x",
|
|
19
18
|
"@nocobase/database": "1.x",
|
|
20
19
|
"@nocobase/plugin-error-handler": "1.x",
|
|
20
|
+
"@nocobase/plugin-field-sort": "1.x",
|
|
21
21
|
"@nocobase/server": "1.x",
|
|
22
22
|
"@nocobase/test": "1.x",
|
|
23
23
|
"@nocobase/utils": "1.x"
|
|
24
24
|
},
|
|
25
|
-
"gitHead": "
|
|
25
|
+
"gitHead": "08bbc34c21727fc0ad0880f397a42bf7741091ee",
|
|
26
26
|
"keywords": [
|
|
27
27
|
"Data sources"
|
|
28
28
|
]
|