@steedos/service-cachers-manager 3.0.0-beta.2 → 3.0.0-beta.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.
- package/lib/metadata-cachers/action_field_updates.js.map +1 -1
- package/lib/metadata-cachers/base.d.ts +6 -3
- package/lib/metadata-cachers/base.js +103 -25
- package/lib/metadata-cachers/base.js.map +1 -1
- package/lib/metadata-cachers/object_functions.d.ts +2 -2
- package/lib/metadata-cachers/object_functions.js +2 -2
- package/lib/metadata-cachers/object_functions.js.map +1 -1
- package/lib/metadata-cachers/object_validation_rules.js.map +1 -1
- package/lib/metadata-cachers/object_webhook.d.ts +1 -1
- package/lib/metadata-cachers/object_webhook.js +1 -1
- package/lib/metadata-cachers/object_webhook.js.map +1 -1
- package/lib/metadata-cachers/settings.d.ts +2 -2
- package/lib/metadata-cachers/settings.js +4 -6
- package/lib/metadata-cachers/settings.js.map +1 -1
- package/lib/metadata-cachers/workflow_notifications.js.map +1 -1
- package/lib/metadata-cachers/workflow_outbound_messages.js.map +1 -1
- package/lib/metadata-cachers/workflow_rule.js.map +1 -1
- package/lib/translations.d.ts +4 -0
- package/lib/translations.js +59 -0
- package/lib/translations.js.map +1 -0
- package/metadata-cachers.service.js +158 -110
- package/package.json +5 -5
- package/package.service.js +9 -11
- package/src/metadata-cachers/base.ts +85 -67
- package/src/metadata-cachers/object_functions.ts +21 -21
- package/src/metadata-cachers/object_webhook.ts +7 -7
- package/src/metadata-cachers/settings.ts +28 -30
- package/src/translations.ts +40 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action_field_updates.js","sourceRoot":"","sources":["../../src/metadata-cachers/action_field_updates.ts"],"names":[],"mappings":";;;;AAQA,+BAA2C;AAE3C;IAA6C,mDAAkB;IAC3D;
|
|
1
|
+
{"version":3,"file":"action_field_updates.js","sourceRoot":"","sources":["../../src/metadata-cachers/action_field_updates.ts"],"names":[],"mappings":";;;;AAQA,+BAA2C;AAE3C;IAA6C,mDAAkB;IAC3D;QACI,OAAA,MAAK,YAAC,sBAAsB,EAAE,IAAI,CAAC,SAAC;IACxC,CAAC;IACL,8BAAC;AAAD,CAAC,AAJD,CAA6C,yBAAkB,GAI9D;AAJY,0DAAuB"}
|
|
@@ -5,10 +5,13 @@ export declare class MetadataCacherBase {
|
|
|
5
5
|
collectionName: any;
|
|
6
6
|
observeHandle: any;
|
|
7
7
|
cacherName: any;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
query: any;
|
|
9
|
+
getCollection(name: any): Promise<any>;
|
|
10
|
+
init(): Promise<void>;
|
|
11
|
+
handleAction(action: "inserted" | "updated" | "deleted", data: unknown): Promise<void>;
|
|
12
|
+
constructor(collectionName: any, supportSpace: any, query?: any);
|
|
10
13
|
onAdded(doc: any): void;
|
|
11
|
-
onChanged(newDoc: any
|
|
14
|
+
onChanged(newDoc: any): void;
|
|
12
15
|
onRemoved(doc: any): void;
|
|
13
16
|
set(_id: any, value: any): any;
|
|
14
17
|
delete(_id: any): any;
|
|
@@ -1,39 +1,117 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MetadataCacherBase = void 0;
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var cachers = require("@steedos/cachers");
|
|
6
|
+
var metadataDriver = require("@steedos/utils").metadataDriver;
|
|
7
|
+
var getDataSource = require("@steedos/objectql").getDataSource;
|
|
6
8
|
var MetadataCacherBase = (function () {
|
|
7
|
-
function MetadataCacherBase(collectionName, supportSpace,
|
|
8
|
-
if (
|
|
9
|
-
var _this = this;
|
|
9
|
+
function MetadataCacherBase(collectionName, supportSpace, query) {
|
|
10
|
+
if (query === void 0) { query = null; }
|
|
10
11
|
this.supportSpace = true;
|
|
11
12
|
this.collectionName = collectionName;
|
|
12
13
|
this.supportSpace = supportSpace;
|
|
13
14
|
this.cacherName = "metadata.".concat(collectionName);
|
|
14
15
|
this.cacher = cachers.getCacher(this.cacherName);
|
|
15
|
-
this.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
16
|
+
this.query = query;
|
|
17
|
+
}
|
|
18
|
+
MetadataCacherBase.prototype.getCollection = function (name) {
|
|
19
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
20
|
+
var adapter;
|
|
21
|
+
return tslib_1.__generator(this, function (_a) {
|
|
22
|
+
switch (_a.label) {
|
|
23
|
+
case 0:
|
|
24
|
+
adapter = getDataSource("default").adapter;
|
|
25
|
+
return [4, adapter.connect()];
|
|
26
|
+
case 1:
|
|
27
|
+
_a.sent();
|
|
28
|
+
return [2, adapter.collection(name)];
|
|
26
29
|
}
|
|
27
30
|
});
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
MetadataCacherBase.prototype.init = function () {
|
|
34
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
35
|
+
var coll, records, records_1, records_1_1, record, e_1_1;
|
|
36
|
+
var e_1, _a;
|
|
37
|
+
return tslib_1.__generator(this, function (_b) {
|
|
38
|
+
switch (_b.label) {
|
|
39
|
+
case 0:
|
|
40
|
+
console.log("".concat(this.collectionName, " init"));
|
|
41
|
+
return [4, this.getCollection(this.collectionName)];
|
|
42
|
+
case 1:
|
|
43
|
+
coll = _b.sent();
|
|
44
|
+
return [4, coll.find(this.query).toArray()];
|
|
45
|
+
case 2:
|
|
46
|
+
records = _b.sent();
|
|
47
|
+
_b.label = 3;
|
|
48
|
+
case 3:
|
|
49
|
+
_b.trys.push([3, 8, 9, 10]);
|
|
50
|
+
records_1 = tslib_1.__values(records), records_1_1 = records_1.next();
|
|
51
|
+
_b.label = 4;
|
|
52
|
+
case 4:
|
|
53
|
+
if (!!records_1_1.done) return [3, 7];
|
|
54
|
+
record = records_1_1.value;
|
|
55
|
+
return [4, this.onAdded(record)];
|
|
56
|
+
case 5:
|
|
57
|
+
_b.sent();
|
|
58
|
+
_b.label = 6;
|
|
59
|
+
case 6:
|
|
60
|
+
records_1_1 = records_1.next();
|
|
61
|
+
return [3, 4];
|
|
62
|
+
case 7: return [3, 10];
|
|
63
|
+
case 8:
|
|
64
|
+
e_1_1 = _b.sent();
|
|
65
|
+
e_1 = { error: e_1_1 };
|
|
66
|
+
return [3, 10];
|
|
67
|
+
case 9:
|
|
68
|
+
try {
|
|
69
|
+
if (records_1_1 && !records_1_1.done && (_a = records_1.return)) _a.call(records_1);
|
|
70
|
+
}
|
|
71
|
+
finally { if (e_1) throw e_1.error; }
|
|
72
|
+
return [7];
|
|
73
|
+
case 10: return [2];
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
MetadataCacherBase.prototype.handleAction = function (action, data) {
|
|
79
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
80
|
+
var _a;
|
|
81
|
+
return tslib_1.__generator(this, function (_b) {
|
|
82
|
+
switch (_b.label) {
|
|
83
|
+
case 0:
|
|
84
|
+
_a = action;
|
|
85
|
+
switch (_a) {
|
|
86
|
+
case "inserted": return [3, 1];
|
|
87
|
+
case "updated": return [3, 3];
|
|
88
|
+
case "deleted": return [3, 5];
|
|
89
|
+
}
|
|
90
|
+
return [3, 7];
|
|
91
|
+
case 1: return [4, this.onAdded(data)];
|
|
92
|
+
case 2:
|
|
93
|
+
_b.sent();
|
|
94
|
+
return [3, 8];
|
|
95
|
+
case 3: return [4, this.onChanged(data)];
|
|
96
|
+
case 4:
|
|
97
|
+
_b.sent();
|
|
98
|
+
return [3, 8];
|
|
99
|
+
case 5: return [4, this.onRemoved(data)];
|
|
100
|
+
case 6:
|
|
101
|
+
_b.sent();
|
|
102
|
+
return [3, 8];
|
|
103
|
+
case 7:
|
|
104
|
+
console.warn("\u672A\u77E5\u7684\u64CD\u4F5C\u7C7B\u578B: ".concat(action));
|
|
105
|
+
_b.label = 8;
|
|
106
|
+
case 8: return [2];
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
};
|
|
33
111
|
MetadataCacherBase.prototype.onAdded = function (doc) {
|
|
34
112
|
this.set(doc._id, doc);
|
|
35
113
|
};
|
|
36
|
-
MetadataCacherBase.prototype.onChanged = function (newDoc
|
|
114
|
+
MetadataCacherBase.prototype.onChanged = function (newDoc) {
|
|
37
115
|
this.set(newDoc._id, newDoc);
|
|
38
116
|
};
|
|
39
117
|
MetadataCacherBase.prototype.onRemoved = function (doc) {
|
|
@@ -41,7 +119,7 @@ var MetadataCacherBase = (function () {
|
|
|
41
119
|
};
|
|
42
120
|
MetadataCacherBase.prototype.set = function (_id, value) {
|
|
43
121
|
if (!_id) {
|
|
44
|
-
throw new Error(
|
|
122
|
+
throw new Error("key is null");
|
|
45
123
|
}
|
|
46
124
|
return this.cacher.set(_id, value);
|
|
47
125
|
};
|
|
@@ -54,14 +132,14 @@ var MetadataCacherBase = (function () {
|
|
|
54
132
|
MetadataCacherBase.prototype.find = function (filters, spaceId) {
|
|
55
133
|
var records = this.cacher.values();
|
|
56
134
|
if (this.supportSpace) {
|
|
57
|
-
filters = [filters, [
|
|
135
|
+
filters = [filters, ["space", "=", spaceId]];
|
|
58
136
|
return metadataDriver.find(records, { filters: filters }, spaceId);
|
|
59
137
|
}
|
|
60
138
|
return metadataDriver.find(records, { filters: filters });
|
|
61
139
|
};
|
|
62
140
|
MetadataCacherBase.prototype.destroy = function () {
|
|
63
141
|
if (this.observeHandle) {
|
|
64
|
-
this.observeHandle.
|
|
142
|
+
this.observeHandle.close();
|
|
65
143
|
this.cacher.clearCacher(this.cacherName);
|
|
66
144
|
}
|
|
67
145
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/metadata-cachers/base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/metadata-cachers/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { MetadataCacherBase } from
|
|
1
|
+
import { MetadataCacherBase } from "./base";
|
|
2
2
|
export declare class ObjectFunctionsCacher extends MetadataCacherBase {
|
|
3
3
|
constructor();
|
|
4
4
|
onAdded(doc: any): void;
|
|
5
|
-
onChanged(newDoc: any
|
|
5
|
+
onChanged(newDoc: any): void;
|
|
6
6
|
onRemoved(doc: any): void;
|
|
7
7
|
_getIdKey(doc: any): string;
|
|
8
8
|
}
|
|
@@ -6,12 +6,12 @@ var base_1 = require("./base");
|
|
|
6
6
|
var ObjectFunctionsCacher = (function (_super) {
|
|
7
7
|
tslib_1.__extends(ObjectFunctionsCacher, _super);
|
|
8
8
|
function ObjectFunctionsCacher() {
|
|
9
|
-
return _super.call(this,
|
|
9
|
+
return _super.call(this, "object_functions", false, { isEnabled: true }) || this;
|
|
10
10
|
}
|
|
11
11
|
ObjectFunctionsCacher.prototype.onAdded = function (doc) {
|
|
12
12
|
this.set(this._getIdKey(doc), doc);
|
|
13
13
|
};
|
|
14
|
-
ObjectFunctionsCacher.prototype.onChanged = function (newDoc
|
|
14
|
+
ObjectFunctionsCacher.prototype.onChanged = function (newDoc) {
|
|
15
15
|
this.set(this._getIdKey(newDoc), newDoc);
|
|
16
16
|
};
|
|
17
17
|
ObjectFunctionsCacher.prototype.onRemoved = function (doc) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object_functions.js","sourceRoot":"","sources":["../../src/metadata-cachers/object_functions.ts"],"names":[],"mappings":";;;;AASA,+
|
|
1
|
+
{"version":3,"file":"object_functions.js","sourceRoot":"","sources":["../../src/metadata-cachers/object_functions.ts"],"names":[],"mappings":";;;;AASA,+BAA4C;AAE5C;IAA2C,iDAAkB;IAC3D;QACE,OAAA,MAAK,YAAC,kBAAkB,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,SAAC;IACxD,CAAC;IAED,uCAAO,GAAP,UAAQ,GAAG;QACT,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,yCAAS,GAAT,UAAU,MAAM;QACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,yCAAS,GAAT,UAAU,GAAG;QACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,yCAAS,GAAT,UAAU,GAAG;QACX,OAAO,UAAG,GAAG,CAAC,aAAa,eAAK,GAAG,CAAC,IAAI,CAAE,CAAC;IAC7C,CAAC;IACH,4BAAC;AAAD,CAAC,AApBD,CAA2C,yBAAkB,GAoB5D;AApBY,sDAAqB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object_validation_rules.js","sourceRoot":"","sources":["../../src/metadata-cachers/object_validation_rules.ts"],"names":[],"mappings":";;;;AAQA,+BAA2C;AAE3C;IAAiD,uDAAkB;IAC/D;
|
|
1
|
+
{"version":3,"file":"object_validation_rules.js","sourceRoot":"","sources":["../../src/metadata-cachers/object_validation_rules.ts"],"names":[],"mappings":";;;;AAQA,+BAA2C;AAE3C;IAAiD,uDAAkB;IAC/D;QACI,OAAA,MAAK,YAAC,yBAAyB,EAAE,IAAI,CAAC,SAAC;IAC3C,CAAC;IACL,kCAAC;AAAD,CAAC,AAJD,CAAiD,yBAAkB,GAIlE;AAJY,kEAA2B"}
|
|
@@ -6,7 +6,7 @@ var base_1 = require("./base");
|
|
|
6
6
|
var ObjectWebhookCacher = (function (_super) {
|
|
7
7
|
tslib_1.__extends(ObjectWebhookCacher, _super);
|
|
8
8
|
function ObjectWebhookCacher() {
|
|
9
|
-
return _super.call(this,
|
|
9
|
+
return _super.call(this, "object_webhooks", true, { active: true }) || this;
|
|
10
10
|
}
|
|
11
11
|
return ObjectWebhookCacher;
|
|
12
12
|
}(base_1.MetadataCacherBase));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object_webhook.js","sourceRoot":"","sources":["../../src/metadata-cachers/object_webhook.ts"],"names":[],"mappings":";;;;AAOA,+
|
|
1
|
+
{"version":3,"file":"object_webhook.js","sourceRoot":"","sources":["../../src/metadata-cachers/object_webhook.ts"],"names":[],"mappings":";;;;AAOA,+BAA4C;AAE5C;IAAyC,+CAAkB;IACzD;QACE,OAAA,MAAK,YAAC,iBAAiB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAC;IACnD,CAAC;IACH,0BAAC;AAAD,CAAC,AAJD,CAAyC,yBAAkB,GAI1D;AAJY,kDAAmB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { MetadataCacherBase } from
|
|
1
|
+
import { MetadataCacherBase } from "./base";
|
|
2
2
|
export declare class SettingsCacher extends MetadataCacherBase {
|
|
3
3
|
constructor();
|
|
4
4
|
onAdded(doc: any): void;
|
|
5
|
-
onChanged(newDoc: any
|
|
5
|
+
onChanged(newDoc: any): void;
|
|
6
6
|
onRemoved(doc: any): void;
|
|
7
7
|
}
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SettingsCacher = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var base_1 = require("./base");
|
|
6
|
-
var _ = require(
|
|
6
|
+
var _ = require("lodash");
|
|
7
7
|
var formatValue = function (doc) {
|
|
8
8
|
if (_.isString(doc.value)) {
|
|
9
9
|
try {
|
|
@@ -18,16 +18,14 @@ var formatValue = function (doc) {
|
|
|
18
18
|
var SettingsCacher = (function (_super) {
|
|
19
19
|
tslib_1.__extends(SettingsCacher, _super);
|
|
20
20
|
function SettingsCacher() {
|
|
21
|
-
return _super.call(this,
|
|
21
|
+
return _super.call(this, "settings", true, { type: "space", key: { $exists: true } }) || this;
|
|
22
22
|
}
|
|
23
23
|
SettingsCacher.prototype.onAdded = function (doc) {
|
|
24
24
|
_super.prototype.onAdded.call(this, doc);
|
|
25
25
|
broker.broadcast("@settings.updated.".concat(doc.key), formatValue(doc));
|
|
26
26
|
};
|
|
27
|
-
SettingsCacher.prototype.onChanged = function (newDoc
|
|
28
|
-
|
|
29
|
-
_super.prototype.onChanged.call(this, newDoc, oldDoc);
|
|
30
|
-
console.log("broadcast settings onChanged");
|
|
27
|
+
SettingsCacher.prototype.onChanged = function (newDoc) {
|
|
28
|
+
_super.prototype.onChanged.call(this, newDoc);
|
|
31
29
|
broker.broadcast("@settings.updated.".concat(newDoc.key), formatValue(newDoc));
|
|
32
30
|
};
|
|
33
31
|
SettingsCacher.prototype.onRemoved = function (doc) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/metadata-cachers/settings.ts"],"names":[],"mappings":";;;;AAOA,+
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/metadata-cachers/settings.ts"],"names":[],"mappings":";;;;AAOA,+BAA4C;AAE5C,IAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAI5B,IAAM,WAAW,GAAG,UAAC,GAAG;IACtB,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;IAAoC,0CAAkB;IACpD;QACE,OAAA,MAAK,YAAC,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,SAAC;IACrE,CAAC;IAED,gCAAO,GAAP,UAAQ,GAAQ;QACd,gBAAK,CAAC,OAAO,YAAC,GAAG,CAAC,CAAC;QACnB,MAAM,CAAC,SAAS,CAAC,4BAAqB,GAAG,CAAC,GAAG,CAAE,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,kCAAS,GAAT,UAAU,MAAW;QACnB,gBAAK,CAAC,SAAS,YAAC,MAAM,CAAC,CAAC;QACxB,MAAM,CAAC,SAAS,CAAC,4BAAqB,MAAM,CAAC,GAAG,CAAE,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,kCAAS,GAAT,UAAU,GAAQ;QAChB,gBAAK,CAAC,SAAS,YAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACH,qBAAC;AAAD,CAAC,AAlBD,CAAoC,yBAAkB,GAkBrD;AAlBY,wCAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow_notifications.js","sourceRoot":"","sources":["../../src/metadata-cachers/workflow_notifications.ts"],"names":[],"mappings":";;;;AAUA,+BAA2C;AAE3C;IAAgD,sDAAkB;IAC9D;
|
|
1
|
+
{"version":3,"file":"workflow_notifications.js","sourceRoot":"","sources":["../../src/metadata-cachers/workflow_notifications.ts"],"names":[],"mappings":";;;;AAUA,+BAA2C;AAE3C;IAAgD,sDAAkB;IAC9D;QACI,OAAA,MAAK,YAAC,wBAAwB,EAAE,IAAI,CAAC,SAAC;IAC1C,CAAC;IACL,iCAAC;AAAD,CAAC,AAJD,CAAgD,yBAAkB,GAIjE;AAJY,gEAA0B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow_outbound_messages.js","sourceRoot":"","sources":["../../src/metadata-cachers/workflow_outbound_messages.ts"],"names":[],"mappings":";;;;AAQA,+BAA2C;AAE3C;IAAmD,yDAAkB;IACjE;
|
|
1
|
+
{"version":3,"file":"workflow_outbound_messages.js","sourceRoot":"","sources":["../../src/metadata-cachers/workflow_outbound_messages.ts"],"names":[],"mappings":";;;;AAQA,+BAA2C;AAE3C;IAAmD,yDAAkB;IACjE;QACI,OAAA,MAAK,YAAC,4BAA4B,EAAE,IAAI,CAAC,SAAC;IAC9C,CAAC;IACL,oCAAC;AAAD,CAAC,AAJD,CAAmD,yBAAkB,GAIpE;AAJY,sEAA6B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow_rule.js","sourceRoot":"","sources":["../../src/metadata-cachers/workflow_rule.ts"],"names":[],"mappings":";;;;AAGA,+BAA2C;AAE3C;IAAwC,8CAAkB;IACtD;
|
|
1
|
+
{"version":3,"file":"workflow_rule.js","sourceRoot":"","sources":["../../src/metadata-cachers/workflow_rule.ts"],"names":[],"mappings":";;;;AAGA,+BAA2C;AAE3C;IAAwC,8CAAkB;IACtD;QACI,OAAA,MAAK,YAAC,eAAe,EAAE,IAAI,CAAC,SAAC;IACjC,CAAC;IACL,yBAAC;AAAD,CAAC,AAJD,CAAwC,yBAAkB,GAIzD;AAJY,gDAAkB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadObjectTranslations = exports.loadTranslations = exports.InitTranslationRouter = exports.InitTranslations = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var I18n = require("@steedos/i18n");
|
|
6
|
+
var core_i18n_1 = require("@steedos/i18n/lib/core_i18n");
|
|
7
|
+
var router_1 = require("@steedos/i18n/lib/router");
|
|
8
|
+
var metadata_registrar_1 = require("@steedos/metadata-registrar");
|
|
9
|
+
var SteedosRouter = require('@steedos/router');
|
|
10
|
+
var InitTranslations = function () {
|
|
11
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
12
|
+
return tslib_1.__generator(this, function (_a) {
|
|
13
|
+
(0, core_i18n_1.InitCoreTranslations)();
|
|
14
|
+
(0, exports.InitTranslationRouter)();
|
|
15
|
+
return [2];
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
exports.InitTranslations = InitTranslations;
|
|
20
|
+
var InitTranslationRouter = function () {
|
|
21
|
+
var app = SteedosRouter.staticRouter();
|
|
22
|
+
var pluginContext = {
|
|
23
|
+
app: app
|
|
24
|
+
};
|
|
25
|
+
(0, router_1.initExportObjectI18nTemplateRouter)(pluginContext);
|
|
26
|
+
(0, router_1.initLocalesRouter)(pluginContext);
|
|
27
|
+
};
|
|
28
|
+
exports.InitTranslationRouter = InitTranslationRouter;
|
|
29
|
+
var loadTranslations = function () {
|
|
30
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
31
|
+
var tanslations;
|
|
32
|
+
return tslib_1.__generator(this, function (_a) {
|
|
33
|
+
switch (_a.label) {
|
|
34
|
+
case 0: return [4, (0, metadata_registrar_1.getTranslations)()];
|
|
35
|
+
case 1:
|
|
36
|
+
tanslations = _a.sent();
|
|
37
|
+
I18n.addTranslations(tanslations);
|
|
38
|
+
return [2];
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
exports.loadTranslations = loadTranslations;
|
|
44
|
+
var loadObjectTranslations = function () {
|
|
45
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
46
|
+
var objectTanslations;
|
|
47
|
+
return tslib_1.__generator(this, function (_a) {
|
|
48
|
+
switch (_a.label) {
|
|
49
|
+
case 0: return [4, (0, metadata_registrar_1.getObjectTranslations)()];
|
|
50
|
+
case 1:
|
|
51
|
+
objectTanslations = _a.sent();
|
|
52
|
+
I18n.addObjectsTranslation(objectTanslations);
|
|
53
|
+
return [2];
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
exports.loadObjectTranslations = loadObjectTranslations;
|
|
59
|
+
//# sourceMappingURL=translations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translations.js","sourceRoot":"","sources":["../src/translations.ts"],"names":[],"mappings":";;;;AAOA,oCAAsC;AACtC,yDAAkE;AAClE,mDAA+F;AAC/F,kEAAqF;AACrF,IAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE1C,IAAM,gBAAgB,GAAG;;;YAC5B,IAAA,gCAAoB,GAAE,CAAC;YAGvB,IAAA,6BAAqB,GAAE,CAAC;;;;CAC3B,CAAA;AALY,QAAA,gBAAgB,oBAK5B;AAEM,IAAM,qBAAqB,GAAG;IACjC,IAAM,GAAG,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;IACzC,IAAM,aAAa,GAAG;QAClB,GAAG,KAAA;KACN,CAAC;IACF,IAAA,2CAAkC,EAAC,aAAa,CAAC,CAAC;IAClD,IAAA,0BAAiB,EAAC,aAAa,CAAC,CAAC;AAGrC,CAAC,CAAA;AATY,QAAA,qBAAqB,yBASjC;AAEM,IAAM,gBAAgB,GAAG;;;;;wBACR,WAAM,IAAA,oCAAe,GAAE,EAAA;;oBAArC,WAAW,GAAG,SAAuB;oBAC3C,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;;;;;CACrC,CAAA;AAHY,QAAA,gBAAgB,oBAG5B;AAEM,IAAM,sBAAsB,GAAG;;;;;wBACR,WAAM,IAAA,0CAAqB,GAAE,EAAA;;oBAAjD,iBAAiB,GAAG,SAA6B;oBACvD,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;;;;;CACjD,CAAA;AAHY,QAAA,sBAAsB,0BAGlC"}
|
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
3
|
-
* @Date: 2024-03-22 14:37:50
|
|
4
|
-
* @LastEditors: 孙浩林 sunhaolin@steedos.com
|
|
5
|
-
* @LastEditTime: 2024-05-18 13:31:28
|
|
6
|
-
* @Description: 由于 collection observe 在 steedos-server.started 事件中被触发报错需要 Fiber ,添加Fiber 后, 不报错,但是无法订阅到数据. 所以单写服务处理此问题.
|
|
7
|
-
*
|
|
8
|
-
*/
|
|
9
|
-
|
|
1
|
+
/* eslint-disable no-undef */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
10
3
|
"use strict";
|
|
11
|
-
const _ = require(
|
|
12
|
-
const register = require(
|
|
4
|
+
const _ = require("lodash");
|
|
5
|
+
const register = require("@steedos/metadata-registrar");
|
|
13
6
|
const { ActionFieldUpdateCacher, WorkflowOutboundMessageCacher, WorkflowNotificationCacher, WorkflowRuleCacher, ObjectValidationRulesCacher, SettingsCacher, ObjectWebhookCacher
|
|
14
7
|
, ObjectFunctionsCacher
|
|
15
8
|
} = require('./lib/index')
|
|
@@ -17,104 +10,159 @@ const { ActionFieldUpdateCacher, WorkflowOutboundMessageCacher, WorkflowNotifica
|
|
|
17
10
|
* @typedef {import('moleculer').Context} Context Moleculer's Context
|
|
18
11
|
* 软件包服务启动后也需要抛出事件。
|
|
19
12
|
*/
|
|
13
|
+
// eslint-disable-next-line no-undef
|
|
20
14
|
module.exports = {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
15
|
+
name: "metadata-cachers-service",
|
|
16
|
+
namespace: "steedos",
|
|
17
|
+
/**
|
|
18
|
+
* Dependencies
|
|
19
|
+
*/
|
|
20
|
+
dependencies: [],
|
|
21
|
+
|
|
22
|
+
events: {
|
|
23
|
+
"$packages.changed": function () {
|
|
24
|
+
this.loadMetadataWorkflows();
|
|
25
|
+
this.loadMetadataValidationRule();
|
|
26
|
+
this.loadMetadataObjectFunctions();
|
|
27
|
+
},
|
|
28
|
+
"$metadata.*": function (payload, sender, event, ctx) {
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
30
|
+
const self = this;
|
|
31
|
+
// console.log(`Event '${event}' received from ${sender} node:`, payload);
|
|
32
|
+
const { type, action, data } = payload;
|
|
33
|
+
switch (type) {
|
|
34
|
+
case "action_field_updates":
|
|
35
|
+
self.actionFieldUpdatesCacher.handleAction(action, data);
|
|
36
|
+
break;
|
|
37
|
+
case "object_functions":
|
|
38
|
+
self.objectFunctionsCacher.handleAction(action, data);
|
|
39
|
+
break;
|
|
40
|
+
case "object_validation_rules":
|
|
41
|
+
self.objectValidationRulesCacher.handleAction(action, data);
|
|
42
|
+
break;
|
|
43
|
+
case "object_webhooks":
|
|
44
|
+
self.objectWebhooksCacher.handleAction(action, data);
|
|
45
|
+
break;
|
|
46
|
+
case "settings":
|
|
47
|
+
self.settingsCacher.handleAction(action, data);
|
|
48
|
+
break;
|
|
49
|
+
case "workflow_notifications":
|
|
50
|
+
self.workflowNotificationsCacher.handleAction(action, data);
|
|
51
|
+
break;
|
|
52
|
+
case "workflow_outbound_messages":
|
|
53
|
+
self.workflowOutboundMessagesCacher.handleAction(action, data);
|
|
54
|
+
break;
|
|
55
|
+
case "workflow_rule":
|
|
56
|
+
self.workflowRuleCacher.handleAction(action, data);
|
|
57
|
+
break;
|
|
58
|
+
default:
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
actions: {
|
|
65
|
+
find: function (ctx) {
|
|
66
|
+
const { metadataName, filters, spaceId } = ctx.params;
|
|
67
|
+
const res = this[`${_.camelCase(metadataName)}Cacher`]?.find(
|
|
68
|
+
filters,
|
|
69
|
+
spaceId
|
|
70
|
+
);
|
|
71
|
+
return res || [];
|
|
72
|
+
},
|
|
73
|
+
get: function (ctx) {
|
|
74
|
+
const { _id, metadataName } = ctx.params;
|
|
75
|
+
return this[`${_.camelCase(metadataName)}Cacher`]?.get(_id);
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
methods: {
|
|
80
|
+
loadMetadataWorkflows: async function () {
|
|
81
|
+
// eslint-disable-next-line no-undef
|
|
82
|
+
const res = await broker.call(`workflow.getAll`);
|
|
83
|
+
_.each(res, (wf) => {
|
|
84
|
+
_.each(wf.metadata.rules, (item) => {
|
|
85
|
+
this.workflowRuleCacher.set(item._id || item.name, item);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
_.each(wf.metadata.fieldUpdates, (item) => {
|
|
89
|
+
this.actionFieldUpdatesCacher.set(item._id || item.name, item);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
_.each(wf.metadata.notifications, (item) => {
|
|
93
|
+
this.workflowNotificationsCacher.set(item._id || item.name, item);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
_.each(wf.metadata.outboundMessages, (item) => {
|
|
97
|
+
this.workflowOutboundMessagesCacher.set(item._id || item.name, item);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
},
|
|
101
|
+
loadMetadataValidationRule: async function () {
|
|
102
|
+
let res = await register.getAllObjectValidationRules();
|
|
103
|
+
_.each(res, (item) => {
|
|
104
|
+
this.objectValidationRulesCacher.set(item._id, item);
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
loadMetadataObjectFunctions: async function () {
|
|
108
|
+
// eslint-disable-next-line no-undef
|
|
109
|
+
const res = await broker.call(`object_functions.getAll`);
|
|
110
|
+
_.each(res, (item) => {
|
|
111
|
+
const metadata = item.metadata;
|
|
112
|
+
const idKey = `${metadata.objectApiName}__${metadata.name}`;
|
|
113
|
+
// 缓存里没有的才加
|
|
114
|
+
const doc = this.objectFunctionsCacher.get(idKey);
|
|
115
|
+
if (!doc) {
|
|
116
|
+
this.objectFunctionsCacher.set(idKey, metadata);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
|
|
122
|
+
async started() {
|
|
123
|
+
this.actionFieldUpdatesCacher = new ActionFieldUpdateCacher();
|
|
124
|
+
|
|
125
|
+
await this.actionFieldUpdatesCacher.init();
|
|
126
|
+
|
|
127
|
+
this.workflowOutboundMessagesCacher = new WorkflowOutboundMessageCacher();
|
|
128
|
+
|
|
129
|
+
await this.workflowOutboundMessagesCacher.init();
|
|
130
|
+
|
|
131
|
+
this.workflowNotificationsCacher = new WorkflowNotificationCacher();
|
|
132
|
+
|
|
133
|
+
await this.workflowNotificationsCacher.init();
|
|
134
|
+
|
|
135
|
+
this.workflowRuleCacher = new WorkflowRuleCacher();
|
|
136
|
+
|
|
137
|
+
await this.workflowRuleCacher.init();
|
|
138
|
+
|
|
139
|
+
this.objectValidationRulesCacher = new ObjectValidationRulesCacher();
|
|
140
|
+
|
|
141
|
+
await this.objectValidationRulesCacher.init();
|
|
142
|
+
|
|
143
|
+
this.settingsCacher = new SettingsCacher();
|
|
144
|
+
|
|
145
|
+
await this.settingsCacher.init();
|
|
146
|
+
|
|
147
|
+
this.objectWebhooksCacher = new ObjectWebhookCacher();
|
|
148
|
+
|
|
149
|
+
await this.objectWebhooksCacher.init();
|
|
150
|
+
|
|
151
|
+
this.objectFunctionsCacher = new ObjectFunctionsCacher();
|
|
152
|
+
|
|
153
|
+
await this.objectFunctionsCacher.init();
|
|
154
|
+
|
|
155
|
+
await this.loadMetadataWorkflows();
|
|
156
|
+
},
|
|
157
|
+
|
|
158
|
+
async stopped() {
|
|
159
|
+
this.actionFieldUpdatesCacher?.destroy();
|
|
160
|
+
this.workflowOutboundMessagesCacher?.destroy();
|
|
161
|
+
this.workflowNotificationsCacher?.destroy();
|
|
162
|
+
this.workflowRuleCacher?.destroy();
|
|
163
|
+
this.objectValidationRulesCacher?.destroy();
|
|
164
|
+
this.settingsCacher?.destroy();
|
|
165
|
+
this.objectWebhooksCacher?.destroy();
|
|
166
|
+
this.objectFunctionsCacher?.destroy();
|
|
167
|
+
},
|
|
120
168
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-cachers-manager",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.8",
|
|
4
4
|
"main": "package.service.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
"build": "rm -rf ./lib && tsc"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@steedos/cachers": "3.0.0-beta.
|
|
12
|
-
"@steedos/metadata-registrar": "3.0.0-beta.
|
|
13
|
-
"@steedos/utils": "3.0.0-beta.
|
|
11
|
+
"@steedos/cachers": "3.0.0-beta.8",
|
|
12
|
+
"@steedos/metadata-registrar": "3.0.0-beta.8",
|
|
13
|
+
"@steedos/utils": "3.0.0-beta.8"
|
|
14
14
|
},
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public"
|
|
17
17
|
},
|
|
18
|
-
"gitHead": "
|
|
18
|
+
"gitHead": "723d92765db5342a374c7aacb5b835e69f77ca4b"
|
|
19
19
|
}
|
package/package.service.js
CHANGED
|
@@ -2,17 +2,19 @@
|
|
|
2
2
|
* @Author: baozhoutao@steedos.com
|
|
3
3
|
* @Date: 2022-03-28 09:35:35
|
|
4
4
|
* @LastEditors: baozhoutao@steedos.com
|
|
5
|
-
* @LastEditTime:
|
|
5
|
+
* @LastEditTime: 2025-03-07 17:35:32
|
|
6
6
|
* @Description: 维护内存缓存
|
|
7
7
|
*/
|
|
8
8
|
"use strict";
|
|
9
9
|
const project = require('./package.json');
|
|
10
10
|
const serviceName = project.name;
|
|
11
|
-
|
|
11
|
+
// TODO 国际化
|
|
12
|
+
const core = require('./lib/translations');
|
|
12
13
|
const cachers = require('@steedos/cachers');
|
|
13
14
|
const auth = require('@steedos/auth');
|
|
14
15
|
const { getObject } = require('@steedos/objectql');
|
|
15
16
|
const register = require('@steedos/metadata-registrar');
|
|
17
|
+
const _ = require('underscore');
|
|
16
18
|
/**
|
|
17
19
|
* @typedef {import('moleculer').Context} Context Moleculer's Context
|
|
18
20
|
* 软件包服务启动后也需要抛出事件。
|
|
@@ -31,7 +33,7 @@ module.exports = {
|
|
|
31
33
|
/**
|
|
32
34
|
* Dependencies
|
|
33
35
|
*/
|
|
34
|
-
dependencies: [],
|
|
36
|
+
dependencies: ['metadata','@steedos/service-core-objects'],
|
|
35
37
|
methods: {
|
|
36
38
|
// 加载mo action规则的triggers
|
|
37
39
|
loadActionTriggers: async function (broker) {
|
|
@@ -185,12 +187,6 @@ module.exports = {
|
|
|
185
187
|
global.objects = objects;
|
|
186
188
|
}
|
|
187
189
|
},
|
|
188
|
-
"steedos-server.started": {
|
|
189
|
-
handler(ctx) {
|
|
190
|
-
// 初始化缓存
|
|
191
|
-
this.loadProfiles();
|
|
192
|
-
}
|
|
193
|
-
},
|
|
194
190
|
"@permission_set.*": {
|
|
195
191
|
async handler(ctx) {
|
|
196
192
|
// 数据库数据变化后,重新加载缓存
|
|
@@ -260,13 +256,15 @@ module.exports = {
|
|
|
260
256
|
}
|
|
261
257
|
},
|
|
262
258
|
},
|
|
263
|
-
|
|
259
|
+
created(){
|
|
260
|
+
},
|
|
264
261
|
async started() {
|
|
262
|
+
core.InitTranslations()
|
|
265
263
|
core.loadTranslations();
|
|
266
264
|
core.loadObjectTranslations();
|
|
267
265
|
this.loadActionTriggers(this.broker);
|
|
268
266
|
this.loadTriggers(this.broker);
|
|
269
|
-
|
|
267
|
+
this.loadProfiles();
|
|
270
268
|
this.broker.createService(require("./metadata-cachers.service"));
|
|
271
269
|
},
|
|
272
270
|
|
|
@@ -2,87 +2,105 @@
|
|
|
2
2
|
* @Author: baozhoutao@steedos.com
|
|
3
3
|
* @Date: 2024-03-22 09:49:22
|
|
4
4
|
* @LastEditors: baozhoutao@steedos.com
|
|
5
|
-
* @LastEditTime:
|
|
6
|
-
* @Description:
|
|
5
|
+
* @LastEditTime: 2025-03-16 17:57:59
|
|
6
|
+
* @Description:
|
|
7
7
|
*/
|
|
8
|
-
const cachers = require(
|
|
9
|
-
const { metadataDriver } = require(
|
|
10
|
-
|
|
11
|
-
declare var Creator;
|
|
8
|
+
const cachers = require("@steedos/cachers");
|
|
9
|
+
const { metadataDriver } = require("@steedos/utils");
|
|
10
|
+
const { getDataSource } = require("@steedos/objectql");
|
|
12
11
|
|
|
13
12
|
export class MetadataCacherBase {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
supportSpace = true;
|
|
14
|
+
cacher;
|
|
15
|
+
metadataName;
|
|
16
|
+
collectionName;
|
|
17
|
+
observeHandle;
|
|
18
|
+
cacherName;
|
|
19
|
+
query;
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this.observeQuery = observeQuery;
|
|
21
|
+
async getCollection(name) {
|
|
22
|
+
const adapter = getDataSource("default").adapter;
|
|
23
|
+
await adapter.connect();
|
|
24
|
+
return adapter.collection(name);
|
|
25
|
+
}
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
this.onChanged(doc, oldDoc)
|
|
36
|
-
},
|
|
37
|
-
removed: (doc)=>{
|
|
38
|
-
this.onRemoved(doc)
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
} catch (error) {
|
|
42
|
-
console.error(`${collectionName} observeHandle error`, error);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
onAdded(doc){
|
|
46
|
-
this.set(doc._id, doc);
|
|
27
|
+
async init() {
|
|
28
|
+
console.log(`${this.collectionName} init`);
|
|
29
|
+
const coll = await this.getCollection(this.collectionName);
|
|
30
|
+
const records = await coll.find(this.query).toArray();
|
|
31
|
+
for (const record of records) {
|
|
32
|
+
await this.onAdded(record);
|
|
47
33
|
}
|
|
34
|
+
}
|
|
48
35
|
|
|
49
|
-
|
|
50
|
-
|
|
36
|
+
async handleAction(
|
|
37
|
+
action: "inserted" | "updated" | "deleted",
|
|
38
|
+
data: unknown,
|
|
39
|
+
) {
|
|
40
|
+
switch (action) {
|
|
41
|
+
case "inserted":
|
|
42
|
+
await this.onAdded(data);
|
|
43
|
+
break;
|
|
44
|
+
case "updated":
|
|
45
|
+
await this.onChanged(data);
|
|
46
|
+
break;
|
|
47
|
+
case "deleted":
|
|
48
|
+
await this.onRemoved(data);
|
|
49
|
+
break;
|
|
50
|
+
default:
|
|
51
|
+
console.warn(`未知的操作类型: ${action}`);
|
|
51
52
|
}
|
|
53
|
+
}
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
constructor(collectionName, supportSpace, query = null) {
|
|
56
|
+
this.collectionName = collectionName;
|
|
57
|
+
this.supportSpace = supportSpace;
|
|
58
|
+
this.cacherName = `metadata.${collectionName}`;
|
|
59
|
+
this.cacher = cachers.getCacher(this.cacherName);
|
|
60
|
+
this.query = query;
|
|
61
|
+
}
|
|
62
|
+
onAdded(doc) {
|
|
63
|
+
this.set(doc._id, doc);
|
|
64
|
+
}
|
|
56
65
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
return this.cacher.set(_id, value);
|
|
62
|
-
}
|
|
66
|
+
onChanged(newDoc) {
|
|
67
|
+
this.set(newDoc._id, newDoc);
|
|
68
|
+
}
|
|
63
69
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
70
|
+
onRemoved(doc) {
|
|
71
|
+
this.delete(doc._id);
|
|
72
|
+
}
|
|
67
73
|
|
|
68
|
-
|
|
69
|
-
|
|
74
|
+
set(_id, value) {
|
|
75
|
+
if (!_id) {
|
|
76
|
+
throw new Error("key is null");
|
|
70
77
|
}
|
|
78
|
+
return this.cacher.set(_id, value);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
delete(_id) {
|
|
82
|
+
return this.cacher.delete(_id);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
get(_id) {
|
|
86
|
+
return this.cacher.get(_id);
|
|
87
|
+
}
|
|
71
88
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
return metadataDriver.find(records, {filters});
|
|
89
|
+
find(filters, spaceId?) {
|
|
90
|
+
const records = this.cacher.values();
|
|
91
|
+
if (this.supportSpace) {
|
|
92
|
+
filters = [filters, ["space", "=", spaceId]];
|
|
93
|
+
return metadataDriver.find(records, { filters }, spaceId);
|
|
79
94
|
}
|
|
95
|
+
return metadataDriver.find(records, { filters });
|
|
96
|
+
}
|
|
80
97
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
98
|
+
// 销毁
|
|
99
|
+
destroy() {
|
|
100
|
+
if (this.observeHandle) {
|
|
101
|
+
this.observeHandle.close();
|
|
102
|
+
// this.observeHandle.stop();
|
|
103
|
+
this.cacher.clearCacher(this.cacherName);
|
|
87
104
|
}
|
|
88
|
-
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* @Author: 孙浩林 sunhaolin@steedos.com
|
|
3
3
|
* @Date: 2024-05-14 15:59:27
|
|
4
|
-
* @LastEditors:
|
|
5
|
-
* @LastEditTime:
|
|
4
|
+
* @LastEditors: baozhoutao@steedos.com
|
|
5
|
+
* @LastEditTime: 2025-03-16 17:47:16
|
|
6
6
|
* @FilePath: /steedos-platform-2.3/services/service-cachers-manager/src/metadata-cachers/object_functions.ts
|
|
7
|
-
* @Description:
|
|
7
|
+
* @Description:
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { MetadataCacherBase } from
|
|
10
|
+
import { MetadataCacherBase } from "./base";
|
|
11
11
|
|
|
12
|
-
export class ObjectFunctionsCacher extends MetadataCacherBase{
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
export class ObjectFunctionsCacher extends MetadataCacherBase {
|
|
13
|
+
constructor() {
|
|
14
|
+
super("object_functions", false, { isEnabled: true });
|
|
15
|
+
}
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
onAdded(doc) {
|
|
18
|
+
this.set(this._getIdKey(doc), doc);
|
|
19
|
+
}
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
onChanged(newDoc) {
|
|
22
|
+
this.set(this._getIdKey(newDoc), newDoc);
|
|
23
|
+
}
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
onRemoved(doc) {
|
|
26
|
+
this.delete(this._getIdKey(doc));
|
|
27
|
+
}
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
29
|
+
_getIdKey(doc) {
|
|
30
|
+
return `${doc.objectApiName}__${doc.name}`; // 用两个下划线防止key重复
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
* @Date: 2024-04-24 09:29:28
|
|
4
4
|
* @LastEditors: baozhoutao@steedos.com
|
|
5
5
|
* @LastEditTime: 2024-04-24 14:53:42
|
|
6
|
-
* @Description:
|
|
6
|
+
* @Description:
|
|
7
7
|
*/
|
|
8
|
-
import { MetadataCacherBase } from
|
|
8
|
+
import { MetadataCacherBase } from "./base";
|
|
9
9
|
|
|
10
|
-
export class ObjectWebhookCacher extends MetadataCacherBase{
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
10
|
+
export class ObjectWebhookCacher extends MetadataCacherBase {
|
|
11
|
+
constructor() {
|
|
12
|
+
super("object_webhooks", true, { active: true });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -3,43 +3,41 @@
|
|
|
3
3
|
* @Date: 2024-04-16 09:12:58
|
|
4
4
|
* @LastEditors: baozhoutao@steedos.com
|
|
5
5
|
* @LastEditTime: 2024-04-23 11:34:54
|
|
6
|
-
* @Description:
|
|
6
|
+
* @Description:
|
|
7
7
|
*/
|
|
8
|
-
import { MetadataCacherBase } from
|
|
8
|
+
import { MetadataCacherBase } from "./base";
|
|
9
9
|
|
|
10
|
-
const _ = require(
|
|
10
|
+
const _ = require("lodash");
|
|
11
11
|
|
|
12
12
|
declare var broker;
|
|
13
13
|
|
|
14
|
-
const formatValue = (doc)=>{
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
14
|
+
const formatValue = (doc) => {
|
|
15
|
+
if (_.isString(doc.value)) {
|
|
16
|
+
try {
|
|
17
|
+
doc.value = JSON.parse(doc.value);
|
|
18
|
+
} catch (error) {
|
|
19
|
+
console.log(error);
|
|
21
20
|
}
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
}
|
|
22
|
+
return doc;
|
|
23
|
+
};
|
|
24
24
|
|
|
25
|
-
export class SettingsCacher extends MetadataCacherBase{
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
export class SettingsCacher extends MetadataCacherBase {
|
|
26
|
+
constructor() {
|
|
27
|
+
super("settings", true, { type: "space", key: { $exists: true } });
|
|
28
|
+
}
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
onAdded(doc: any): void {
|
|
31
|
+
super.onAdded(doc);
|
|
32
|
+
broker.broadcast(`@settings.updated.${doc.key}`, formatValue(doc));
|
|
33
|
+
}
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
broker.broadcast(`@settings.updated.${newDoc.key}`, formatValue(newDoc))
|
|
40
|
-
}
|
|
35
|
+
onChanged(newDoc: any): void {
|
|
36
|
+
super.onChanged(newDoc);
|
|
37
|
+
broker.broadcast(`@settings.updated.${newDoc.key}`, formatValue(newDoc));
|
|
38
|
+
}
|
|
41
39
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
40
|
+
onRemoved(doc: any): void {
|
|
41
|
+
super.onRemoved(doc);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: baozhoutao@steedos.com
|
|
3
|
+
* @Date: 2022-03-28 09:35:34
|
|
4
|
+
* @LastEditors: baozhoutao@steedos.com
|
|
5
|
+
* @LastEditTime: 2025-02-15 17:23:47
|
|
6
|
+
* @Description:
|
|
7
|
+
*/
|
|
8
|
+
import * as I18n from '@steedos/i18n';
|
|
9
|
+
import { InitCoreTranslations } from '@steedos/i18n/lib/core_i18n'
|
|
10
|
+
import { initExportObjectI18nTemplateRouter, initLocalesRouter} from '@steedos/i18n/lib/router'
|
|
11
|
+
import { getObjectTranslations, getTranslations } from '@steedos/metadata-registrar';
|
|
12
|
+
const SteedosRouter = require('@steedos/router');
|
|
13
|
+
|
|
14
|
+
export const InitTranslations = async function(){
|
|
15
|
+
InitCoreTranslations();
|
|
16
|
+
// await loadObjectTranslations();
|
|
17
|
+
// await loadTranslations();
|
|
18
|
+
InitTranslationRouter();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const InitTranslationRouter = function(){
|
|
22
|
+
const app = SteedosRouter.staticRouter();
|
|
23
|
+
const pluginContext = {
|
|
24
|
+
app
|
|
25
|
+
};
|
|
26
|
+
initExportObjectI18nTemplateRouter(pluginContext);
|
|
27
|
+
initLocalesRouter(pluginContext);
|
|
28
|
+
// SteedosApi?.server?.use(pluginContext.app);
|
|
29
|
+
// WebApp.connectHandlers.use(pluginContext.app);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const loadTranslations = async function(){
|
|
33
|
+
const tanslations = await getTranslations();
|
|
34
|
+
I18n.addTranslations(tanslations);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export const loadObjectTranslations = async function(){
|
|
38
|
+
const objectTanslations = await getObjectTranslations();
|
|
39
|
+
I18n.addObjectsTranslation(objectTanslations);
|
|
40
|
+
}
|