@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.
@@ -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;eACI,kBAAM,sBAAsB,EAAE,IAAI,CAAC;IACvC,CAAC;IACL,8BAAC;AAAD,CAAC,AAJD,CAA6C,yBAAkB,GAI9D;AAJY,0DAAuB"}
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
- observeQuery: any;
9
- constructor(collectionName: any, supportSpace: any, observeQuery?: {});
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, oldDoc: any): void;
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 cachers = require('@steedos/cachers');
5
- var metadataDriver = require('@steedos/utils').metadataDriver;
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, observeQuery) {
8
- if (observeQuery === void 0) { observeQuery = {}; }
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.observeQuery = observeQuery;
16
- try {
17
- this.observeHandle = Creator.getCollection(collectionName).find(observeQuery).observe({
18
- added: function (doc) {
19
- _this.onAdded(doc);
20
- },
21
- changed: function (doc, oldDoc) {
22
- _this.onChanged(doc, oldDoc);
23
- },
24
- removed: function (doc) {
25
- _this.onRemoved(doc);
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
- catch (error) {
30
- console.error("".concat(collectionName, " observeHandle error"), error);
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, oldDoc) {
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('key is null');
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, ['space', '=', spaceId]];
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.stop();
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":"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"}
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 './base';
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, oldDoc: any): void;
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, 'object_functions', false, { isEnabled: true }) || 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, oldDoc) {
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,+BAA2C;AAE3C;IAA2C,iDAAkB;IACzD;eACI,kBAAM,kBAAkB,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACzD,CAAC;IAED,uCAAO,GAAP,UAAQ,GAAG;QACP,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,yCAAS,GAAT,UAAU,MAAM,EAAE,MAAM;QACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,yCAAS,GAAT,UAAU,GAAG;QACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,yCAAS,GAAT,UAAU,GAAG;QACT,OAAO,UAAG,GAAG,CAAC,aAAa,eAAK,GAAG,CAAC,IAAI,CAAE,CAAA;IAC9C,CAAC;IACL,4BAAC;AAAD,CAAC,AApBD,CAA2C,yBAAkB,GAoB5D;AApBY,sDAAqB"}
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;eACI,kBAAM,yBAAyB,EAAE,IAAI,CAAC;IAC1C,CAAC;IACL,kCAAC;AAAD,CAAC,AAJD,CAAiD,yBAAkB,GAIlE;AAJY,kEAA2B"}
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"}
@@ -1,4 +1,4 @@
1
- import { MetadataCacherBase } from './base';
1
+ import { MetadataCacherBase } from "./base";
2
2
  export declare class ObjectWebhookCacher extends MetadataCacherBase {
3
3
  constructor();
4
4
  }
@@ -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, 'object_webhooks', true, { active: true }) || 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,+BAA2C;AAE3C;IAAyC,+CAAkB;IACvD;eACI,kBAAM,iBAAiB,EAAE,IAAI,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC;IAClD,CAAC;IACL,0BAAC;AAAD,CAAC,AAJD,CAAyC,yBAAkB,GAI1D;AAJY,kDAAmB"}
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 './base';
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, oldDoc: any): void;
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('lodash');
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, 'settings', true, { type: 'space', key: { $exists: true } }) || 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, oldDoc) {
28
- console.log("settings onChanged");
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,+BAA2C;AAE3C,IAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAI5B,IAAM,WAAW,GAAG,UAAC,GAAG;IACpB,IAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAC;QACrB,IAAI;YACA,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SACrC;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;SACrB;KACJ;IACD,OAAO,GAAG,CAAC;AACf,CAAC,CAAA;AAED;IAAoC,0CAAkB;IAClD;eACI,kBAAM,UAAU,EAAE,IAAI,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,EAAC,CAAC;IAClE,CAAC;IAED,gCAAO,GAAP,UAAQ,GAAQ;QACZ,iBAAM,OAAO,YAAC,GAAG,CAAC,CAAC;QACnB,MAAM,CAAC,SAAS,CAAC,4BAAqB,GAAG,CAAC,GAAG,CAAE,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IACtE,CAAC;IAED,kCAAS,GAAT,UAAU,MAAW,EAAE,MAAW;QAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;QACjC,iBAAM,SAAS,YAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC/B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;QAC3C,MAAM,CAAC,SAAS,CAAC,4BAAqB,MAAM,CAAC,GAAG,CAAE,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5E,CAAC;IAED,kCAAS,GAAT,UAAU,GAAQ;QACd,iBAAM,SAAS,YAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IACL,qBAAC;AAAD,CAAC,AApBD,CAAoC,yBAAkB,GAoBrD;AApBY,wCAAc"}
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;eACI,kBAAM,wBAAwB,EAAE,IAAI,CAAC;IACzC,CAAC;IACL,iCAAC;AAAD,CAAC,AAJD,CAAgD,yBAAkB,GAIjE;AAJY,gEAA0B"}
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;eACI,kBAAM,4BAA4B,EAAE,IAAI,CAAC;IAC7C,CAAC;IACL,oCAAC;AAAD,CAAC,AAJD,CAAmD,yBAAkB,GAIpE;AAJY,sEAA6B"}
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;eACI,kBAAM,eAAe,EAAE,IAAI,CAAC;IAChC,CAAC;IACL,yBAAC;AAAD,CAAC,AAJD,CAAwC,yBAAkB,GAIzD;AAJY,gDAAkB"}
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,4 @@
1
+ export declare const InitTranslations: () => Promise<void>;
2
+ export declare const InitTranslationRouter: () => void;
3
+ export declare const loadTranslations: () => Promise<void>;
4
+ export declare const loadObjectTranslations: () => Promise<void>;
@@ -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
- * @Author: baozhoutao@steedos.com
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('lodash')
12
- const register = require('@steedos/metadata-registrar');
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
- name: "metadata-cachers-service",
22
- namespace: "steedos",
23
- /**
24
- * Dependencies
25
- */
26
- dependencies: ['steedos-server'],
27
-
28
- events: {
29
- '$packages.changed': function(){
30
- this.loadMetadataWorkflows();
31
- this.loadMetadataValidationRule();
32
- this.loadMetadataObjectFunctions();
33
-
34
- }
35
- },
36
-
37
- actions:{
38
- find: function(ctx){
39
- const { metadataName, filters, spaceId } = ctx.params;
40
- const res = this[`${_.camelCase(metadataName)}Cacher`].find(filters, spaceId);
41
- return res;
42
- },
43
- get: function(ctx){
44
- const { _id } = ctx.params;
45
- return this[`${_.camelCase(metadataName)}Cacher`].get(_id)
46
- }
47
- },
48
-
49
- methods: {
50
- loadMetadataWorkflows: async function(){
51
- const res = await broker.call(`workflow.getAll`);
52
- _.each(res, (wf)=>{
53
- _.each(wf.metadata.rules, (item)=>{
54
- this.workflowRuleCacher.set(item._id || item.name, item)
55
- });
56
-
57
- _.each(wf.metadata.fieldUpdates, (item)=>{
58
- this.actionFieldUpdatesCacher.set(item._id || item.name, item)
59
- });
60
-
61
- _.each(wf.metadata.notifications, (item)=>{
62
- this.workflowNotificationsCacher.set(item._id || item.name, item)
63
- });
64
-
65
- _.each(wf.metadata.outboundMessages, (item)=>{
66
- this.workflowOutboundMessagesCacher.set(item._id || item.name, item)
67
- });
68
- })
69
- },
70
- loadMetadataValidationRule: async function(){
71
- let res = await register.getAllObjectValidationRules();
72
- _.each(res, (item)=>{
73
- this.objectValidationRulesCacher.set(item._id, item)
74
- })
75
- },
76
- loadMetadataObjectFunctions: async function(){
77
- const res = await broker.call(`object_functions.getAll`);
78
- _.each(res, (item)=>{
79
- const metadata = item.metadata;
80
- const idKey = `${metadata.objectApiName}__${metadata.name}`
81
- // 缓存里没有的才加
82
- const doc = this.objectFunctionsCacher.get(idKey)
83
- if (!doc) {
84
- this.objectFunctionsCacher.set(idKey, metadata)
85
- }
86
- })
87
- },
88
- },
89
-
90
- async started() {
91
- this.actionFieldUpdatesCacher = new ActionFieldUpdateCacher()
92
-
93
- this.workflowOutboundMessagesCacher = new WorkflowOutboundMessageCacher();
94
-
95
- this.workflowNotificationsCacher = new WorkflowNotificationCacher();
96
-
97
- this.workflowRuleCacher = new WorkflowRuleCacher();
98
-
99
- this.objectValidationRulesCacher = new ObjectValidationRulesCacher()
100
-
101
- this.settingsCacher = new SettingsCacher();
102
-
103
- this.objectWebhooksCacher = new ObjectWebhookCacher();
104
-
105
- this.objectFunctionsCacher = new ObjectFunctionsCacher();
106
-
107
- await this.loadMetadataWorkflows()
108
- },
109
-
110
- async stopped(){
111
- this.actionFieldUpdatesCacher?.destroy();
112
- this.workflowOutboundMessagesCacher?.destroy();
113
- this.workflowNotificationsCacher?.destroy();
114
- this.workflowRuleCacher?.destroy();
115
- this.objectValidationRulesCacher?.destroy();
116
- this.settingsCacher?.destroy();
117
- this.objectWebhooksCacher?.destroy();
118
- this.objectFunctionsCacher?.destroy();
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.2",
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.2",
12
- "@steedos/metadata-registrar": "3.0.0-beta.2",
13
- "@steedos/utils": "3.0.0-beta.2"
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": "72fa51bda8ff714d5fdb933bf0a45ea4cb82df74"
18
+ "gitHead": "723d92765db5342a374c7aacb5b835e69f77ca4b"
19
19
  }
@@ -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: 2024-03-22 14:40:23
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
- const core = require('@steedos/core');
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: 2024-04-24 15:55:16
6
- * @Description:
5
+ * @LastEditTime: 2025-03-16 17:57:59
6
+ * @Description:
7
7
  */
8
- const cachers = require('@steedos/cachers');
9
- const { metadataDriver } = require('@steedos/utils')
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
- supportSpace = true;
15
- cacher;
16
- metadataName;
17
- collectionName;
18
- observeHandle;
19
- cacherName;
20
- observeQuery;
13
+ supportSpace = true;
14
+ cacher;
15
+ metadataName;
16
+ collectionName;
17
+ observeHandle;
18
+ cacherName;
19
+ query;
21
20
 
22
- constructor(collectionName, supportSpace, observeQuery = {}) {
23
- this.collectionName = collectionName;
24
- this.supportSpace = supportSpace;
25
- this.cacherName = `metadata.${collectionName}`
26
- this.cacher = cachers.getCacher(this.cacherName);
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
- try {
30
- this.observeHandle = Creator.getCollection(collectionName).find(observeQuery).observe({
31
- added: (doc)=>{
32
- this.onAdded(doc)
33
- },
34
- changed: (doc, oldDoc)=>{
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
- onChanged(newDoc, oldDoc) {
50
- this.set(newDoc._id, newDoc);
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
- onRemoved(doc) {
54
- this.delete(doc._id);
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
- set(_id, value) {
58
- if(!_id){
59
- throw new Error('key is null')
60
- }
61
- return this.cacher.set(_id, value);
62
- }
66
+ onChanged(newDoc) {
67
+ this.set(newDoc._id, newDoc);
68
+ }
63
69
 
64
- delete(_id) {
65
- return this.cacher.delete(_id);
66
- }
70
+ onRemoved(doc) {
71
+ this.delete(doc._id);
72
+ }
67
73
 
68
- get(_id) {
69
- return this.cacher.get(_id);
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
- find(filters, spaceId?) {
73
- const records = this.cacher.values();
74
- if (this.supportSpace) {
75
- filters = [filters, ['space', '=', spaceId]]
76
- return metadataDriver.find(records, {filters}, spaceId);
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
- destroy() {
83
- if (this.observeHandle) {
84
- this.observeHandle.stop();
85
- this.cacher.clearCacher(this.cacherName);
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: 孙浩林 sunhaolin@steedos.com
5
- * @LastEditTime: 2024-05-18 13:30:31
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 './base'
10
+ import { MetadataCacherBase } from "./base";
11
11
 
12
- export class ObjectFunctionsCacher extends MetadataCacherBase{
13
- constructor(){
14
- super('object_functions', false, { isEnabled: true });
15
- }
12
+ export class ObjectFunctionsCacher extends MetadataCacherBase {
13
+ constructor() {
14
+ super("object_functions", false, { isEnabled: true });
15
+ }
16
16
 
17
- onAdded(doc){
18
- this.set(this._getIdKey(doc), doc);
19
- }
17
+ onAdded(doc) {
18
+ this.set(this._getIdKey(doc), doc);
19
+ }
20
20
 
21
- onChanged(newDoc, oldDoc) {
22
- this.set(this._getIdKey(newDoc), newDoc);
23
- }
21
+ onChanged(newDoc) {
22
+ this.set(this._getIdKey(newDoc), newDoc);
23
+ }
24
24
 
25
- onRemoved(doc) {
26
- this.delete(this._getIdKey(doc));
27
- }
25
+ onRemoved(doc) {
26
+ this.delete(this._getIdKey(doc));
27
+ }
28
28
 
29
- _getIdKey(doc){
30
- return `${doc.objectApiName}__${doc.name}` // 用两个下划线防止key重复
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 './base'
8
+ import { MetadataCacherBase } from "./base";
9
9
 
10
- export class ObjectWebhookCacher extends MetadataCacherBase{
11
- constructor(){
12
- super('object_webhooks', true, {active: true});
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 './base'
8
+ import { MetadataCacherBase } from "./base";
9
9
 
10
- const _ = require('lodash');
10
+ const _ = require("lodash");
11
11
 
12
12
  declare var broker;
13
13
 
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)
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
- return doc;
23
- }
21
+ }
22
+ return doc;
23
+ };
24
24
 
25
- export class SettingsCacher extends MetadataCacherBase{
26
- constructor(){
27
- super('settings', true, {type: 'space', key: {$exists: true}});
28
- }
25
+ export class SettingsCacher extends MetadataCacherBase {
26
+ constructor() {
27
+ super("settings", true, { type: "space", key: { $exists: true } });
28
+ }
29
29
 
30
- onAdded(doc: any): void {
31
- super.onAdded(doc);
32
- broker.broadcast(`@settings.updated.${doc.key}`, formatValue(doc))
33
- }
30
+ onAdded(doc: any): void {
31
+ super.onAdded(doc);
32
+ broker.broadcast(`@settings.updated.${doc.key}`, formatValue(doc));
33
+ }
34
34
 
35
- onChanged(newDoc: any, oldDoc: any): void {
36
- console.log(`settings onChanged`)
37
- super.onChanged(newDoc, oldDoc)
38
- console.log(`broadcast settings onChanged`)
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
- onRemoved(doc: any): void {
43
- super.onRemoved(doc)
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
+ }