@journeyapps-labs/reactor-mod-data-browser 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/@types/core/AbstractConnection.d.ts +2 -0
  3. package/dist/@types/core/SchemaModelDefinition.d.ts +8 -2
  4. package/dist/@types/core/SchemaModelObject.d.ts +15 -8
  5. package/dist/@types/core/query/AbstractQuery.d.ts +5 -10
  6. package/dist/@types/core/query/AbstractSerializableQuery.d.ts +11 -0
  7. package/dist/@types/core/query/Page.d.ts +2 -5
  8. package/dist/@types/core/query/filters.d.ts +17 -0
  9. package/dist/@types/core/query/query-changed/ChangedModelQuery.d.ts +15 -0
  10. package/dist/@types/core/query/query-simple/SimplePage.d.ts +12 -0
  11. package/dist/@types/core/query/{SimpleQuery.d.ts → query-simple/SimpleQuery.d.ts} +10 -8
  12. package/dist/@types/core/query/widgets/BelongsToDisplayWidget.d.ts +5 -2
  13. package/dist/@types/core/query/widgets/CellDisplayWidget.d.ts +1 -2
  14. package/dist/@types/core/query/widgets/ColumnDisplayWidget.d.ts +6 -0
  15. package/dist/@types/core/query/widgets/SmartBelongsToDisplayWidget.d.ts +10 -0
  16. package/dist/@types/core/query/widgets/SmartCellDisplayWidget.d.ts +7 -0
  17. package/dist/@types/core/query/widgets/SmartColumnWidget.d.ts +10 -0
  18. package/dist/@types/core/query/widgets/SmartFilterWidget.d.ts +9 -0
  19. package/dist/@types/entities/QueryEntityDefinition.d.ts +3 -3
  20. package/dist/@types/forms/SchemaModelForm.d.ts +32 -1
  21. package/dist/@types/forms/TypeEngine.d.ts +20 -0
  22. package/dist/@types/forms/inputs/DirtyWrapperInput.d.ts +15 -0
  23. package/dist/@types/index.d.ts +1 -1
  24. package/dist/@types/panels/model/ModelPanelFactory.d.ts +2 -2
  25. package/dist/@types/panels/query/QueryPanelFactory.d.ts +2 -1
  26. package/dist/DataBrowserModule.js +3 -1
  27. package/dist/DataBrowserModule.js.map +1 -1
  28. package/dist/actions/schema-definitions/CreateModelAction.js +2 -1
  29. package/dist/actions/schema-definitions/CreateModelAction.js.map +1 -1
  30. package/dist/actions/schema-definitions/QuerySchemaModelAction.js +1 -1
  31. package/dist/actions/schema-definitions/QuerySchemaModelAction.js.map +1 -1
  32. package/dist/core/AbstractConnection.js +15 -0
  33. package/dist/core/AbstractConnection.js.map +1 -1
  34. package/dist/core/SchemaModelDefinition.js +67 -13
  35. package/dist/core/SchemaModelDefinition.js.map +1 -1
  36. package/dist/core/SchemaModelObject.js +90 -50
  37. package/dist/core/SchemaModelObject.js.map +1 -1
  38. package/dist/core/query/AbstractQuery.js +2 -8
  39. package/dist/core/query/AbstractQuery.js.map +1 -1
  40. package/dist/core/query/AbstractSerializableQuery.js +13 -0
  41. package/dist/core/query/AbstractSerializableQuery.js.map +1 -0
  42. package/dist/core/query/Page.js +6 -11
  43. package/dist/core/query/Page.js.map +1 -1
  44. package/dist/core/query/filters.js +17 -0
  45. package/dist/core/query/filters.js.map +1 -0
  46. package/dist/core/query/query-changed/ChangedModelQuery.js +31 -0
  47. package/dist/core/query/query-changed/ChangedModelQuery.js.map +1 -0
  48. package/dist/core/query/query-simple/SimplePage.js +18 -0
  49. package/dist/core/query/query-simple/SimplePage.js.map +1 -0
  50. package/dist/core/query/{SimpleQuery.js → query-simple/SimpleQuery.js} +51 -23
  51. package/dist/core/query/query-simple/SimpleQuery.js.map +1 -0
  52. package/dist/core/query/widgets/BelongsToDisplayWidget.js +39 -13
  53. package/dist/core/query/widgets/BelongsToDisplayWidget.js.map +1 -1
  54. package/dist/core/query/widgets/CellDisplayWidget.js +19 -5
  55. package/dist/core/query/widgets/CellDisplayWidget.js.map +1 -1
  56. package/dist/core/query/widgets/ColumnDisplayWidget.js +22 -0
  57. package/dist/core/query/widgets/ColumnDisplayWidget.js.map +1 -0
  58. package/dist/core/query/widgets/SmartBelongsToDisplayWidget.js +29 -0
  59. package/dist/core/query/widgets/SmartBelongsToDisplayWidget.js.map +1 -0
  60. package/dist/core/query/widgets/SmartCellDisplayWidget.js +20 -0
  61. package/dist/core/query/widgets/SmartCellDisplayWidget.js.map +1 -0
  62. package/dist/core/query/widgets/SmartColumnWidget.js +29 -0
  63. package/dist/core/query/widgets/SmartColumnWidget.js.map +1 -0
  64. package/dist/core/query/widgets/SmartFilterWidget.js +56 -0
  65. package/dist/core/query/widgets/SmartFilterWidget.js.map +1 -0
  66. package/dist/entities/QueryEntityDefinition.js +3 -3
  67. package/dist/entities/QueryEntityDefinition.js.map +1 -1
  68. package/dist/entities/SchemaModelObjectEntityDefinition.js +28 -8
  69. package/dist/entities/SchemaModelObjectEntityDefinition.js.map +1 -1
  70. package/dist/forms/SchemaModelForm.js +153 -74
  71. package/dist/forms/SchemaModelForm.js.map +1 -1
  72. package/dist/forms/TypeEngine.js +135 -0
  73. package/dist/forms/TypeEngine.js.map +1 -0
  74. package/dist/forms/inputs/DirtyWrapperInput.js +72 -0
  75. package/dist/forms/inputs/DirtyWrapperInput.js.map +1 -0
  76. package/dist/index.js +1 -1
  77. package/dist/index.js.map +1 -1
  78. package/dist/panels/model/ModelPanelFactory.js +11 -7
  79. package/dist/panels/model/ModelPanelFactory.js.map +1 -1
  80. package/dist/panels/model/ModelPanelWidget.js +21 -4
  81. package/dist/panels/model/ModelPanelWidget.js.map +1 -1
  82. package/dist/panels/query/QueryPanelFactory.js +4 -0
  83. package/dist/panels/query/QueryPanelFactory.js.map +1 -1
  84. package/dist/panels/query/QueryPanelWidget.js +6 -3
  85. package/dist/panels/query/QueryPanelWidget.js.map +1 -1
  86. package/dist/panels/query/TableControlsWidget.js +42 -9
  87. package/dist/panels/query/TableControlsWidget.js.map +1 -1
  88. package/dist/tsconfig.tsbuildinfo +1 -1
  89. package/dist-module/bundle.js +83 -27
  90. package/dist-module/bundle.js.map +1 -1
  91. package/package.json +8 -6
  92. package/src/DataBrowserModule.ts +3 -1
  93. package/src/actions/schema-definitions/CreateModelAction.ts +2 -1
  94. package/src/actions/schema-definitions/QuerySchemaModelAction.ts +1 -1
  95. package/src/core/AbstractConnection.ts +18 -1
  96. package/src/core/SchemaModelDefinition.ts +71 -14
  97. package/src/core/SchemaModelObject.ts +62 -46
  98. package/src/core/query/AbstractQuery.ts +10 -21
  99. package/src/core/query/AbstractSerializableQuery.ts +23 -0
  100. package/src/core/query/Page.ts +7 -14
  101. package/src/core/query/filters.ts +30 -0
  102. package/src/core/query/query-changed/ChangedModelQuery.ts +35 -0
  103. package/src/core/query/query-simple/SimplePage.ts +29 -0
  104. package/src/core/query/query-simple/SimpleQuery.tsx +163 -0
  105. package/src/core/query/widgets/BelongsToDisplayWidget.tsx +64 -18
  106. package/src/core/query/widgets/CellDisplayWidget.tsx +33 -14
  107. package/src/core/query/widgets/ColumnDisplayWidget.tsx +36 -0
  108. package/src/core/query/widgets/SmartBelongsToDisplayWidget.tsx +46 -0
  109. package/src/core/query/widgets/SmartCellDisplayWidget.tsx +29 -0
  110. package/src/core/query/widgets/SmartColumnWidget.tsx +46 -0
  111. package/src/core/query/widgets/SmartFilterWidget.tsx +80 -0
  112. package/src/entities/QueryEntityDefinition.ts +6 -6
  113. package/src/entities/SchemaModelObjectEntityDefinition.ts +34 -8
  114. package/src/forms/SchemaModelForm.tsx +145 -96
  115. package/src/forms/TypeEngine.ts +160 -0
  116. package/src/forms/inputs/DirtyWrapperInput.tsx +75 -0
  117. package/src/index.ts +1 -1
  118. package/src/panels/model/ModelPanelFactory.tsx +11 -9
  119. package/src/panels/model/ModelPanelWidget.tsx +45 -9
  120. package/src/panels/query/QueryPanelFactory.tsx +5 -0
  121. package/src/panels/query/QueryPanelWidget.tsx +6 -3
  122. package/src/panels/query/TableControlsWidget.tsx +85 -17
  123. package/dist/core/query/SimpleQuery.js.map +0 -1
  124. package/src/core/query/SimpleQuery.tsx +0 -120
@@ -1,3 +1,4 @@
1
+ import { JourneyAPIAdapter } from '@journeyapps/db';
1
2
  import { SchemaModelObject } from './SchemaModelObject';
2
3
  import { BaseObserver } from '@journeyapps-labs/common-utils';
3
4
  import { queue } from 'async';
@@ -9,22 +10,45 @@ export class SchemaModelDefinition extends BaseObserver {
9
10
  this.enqueued = new Set();
10
11
  this.queue = queue(async (id) => {
11
12
  let collection = await this.getCollection();
12
- let model = await collection.first(id);
13
- if (model) {
14
- let object = new SchemaModelObject({
15
- model,
16
- definition: this
17
- });
18
- this.cache.set(id, object);
13
+ try {
14
+ let models = await this.executeQuery(collection.where(`id = ?`, id));
15
+ if (models[0]) {
16
+ this.cache.set(id, models[0]);
17
+ this.enqueued.delete(id);
18
+ this.iterateListeners((cb) => { var _a; return (_a = cb.resolved) === null || _a === void 0 ? void 0 : _a.call(cb, { object: models[0] }); });
19
+ }
20
+ else {
21
+ this.enqueued.delete(id);
22
+ this.iterateListeners((cb) => { var _a; return (_a = cb.failed) === null || _a === void 0 ? void 0 : _a.call(cb, { object_id: id }); });
23
+ }
24
+ }
25
+ catch (ex) {
19
26
  this.enqueued.delete(id);
20
- this.iterateListeners((cb) => { var _a; return (_a = cb.resolved) === null || _a === void 0 ? void 0 : _a.call(cb, { object }); });
27
+ this.iterateListeners((cb) => { var _a; return (_a = cb.failed) === null || _a === void 0 ? void 0 : _a.call(cb, { object_id: id }); });
28
+ throw ex;
21
29
  }
22
30
  }, 6);
23
31
  }
24
- async resolve(id) {
25
- if (this.cache.has(id)) {
26
- return this.cache.get(id);
27
- }
32
+ async search(text) {
33
+ let collection = await this.getCollection();
34
+ let adapter = collection.adapter;
35
+ // @ts-ignore
36
+ let res = await adapter.apiPost(`${adapter.credentials.api4Url()}objects/${this.definition.name}/search.json`, {
37
+ query: text
38
+ });
39
+ return res.objects
40
+ .map((o) => {
41
+ return JourneyAPIAdapter.apiToInternalFormat(this.definition, o);
42
+ })
43
+ .map((o) => {
44
+ return new SchemaModelObject({
45
+ definition: this,
46
+ model: o,
47
+ adapter: collection.adapter
48
+ });
49
+ });
50
+ }
51
+ async load(id) {
28
52
  if (!this.enqueued.has(id)) {
29
53
  this.enqueued.add(id);
30
54
  this.queue.push(id);
@@ -36,10 +60,22 @@ export class SchemaModelDefinition extends BaseObserver {
36
60
  l1();
37
61
  resolve(object);
38
62
  }
63
+ },
64
+ failed: ({ object_id }) => {
65
+ if (object_id === id) {
66
+ l1();
67
+ resolve(null);
68
+ }
39
69
  }
40
70
  });
41
71
  });
42
72
  }
73
+ async resolve(id) {
74
+ if (this.cache.has(id)) {
75
+ return this.cache.get(id);
76
+ }
77
+ return this.load(id);
78
+ }
43
79
  get key() {
44
80
  return this.definition.name;
45
81
  }
@@ -55,6 +91,24 @@ export class SchemaModelDefinition extends BaseObserver {
55
91
  get definition() {
56
92
  return this.options.definition;
57
93
  }
94
+ async executeQuery(query) {
95
+ let collection = await this.getCollection();
96
+ let results = await collection.adapter.executeQuery(query);
97
+ return results.map((m) => {
98
+ if (!this.cache.has(m.id)) {
99
+ const model = new SchemaModelObject({
100
+ definition: this,
101
+ model: m,
102
+ adapter: collection.adapter
103
+ });
104
+ this.cache.set(m.id, model);
105
+ return model;
106
+ }
107
+ let model = this.cache.get(m.id);
108
+ model.setData(m);
109
+ return model;
110
+ });
111
+ }
58
112
  async getCollection() {
59
113
  const conn = await this.connection.getConnection();
60
114
  return conn[this.definition.name];
@@ -63,7 +117,7 @@ export class SchemaModelDefinition extends BaseObserver {
63
117
  const collection = await this.getCollection();
64
118
  return new SchemaModelObject({
65
119
  definition: this,
66
- model: collection.create()
120
+ adapter: collection.adapter
67
121
  });
68
122
  }
69
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaModelDefinition.js","sourceRoot":"","sources":["../../src/core/SchemaModelDefinition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SchemaModelDefinition.js","sourceRoot":"","sources":["../../src/core/SchemaModelDefinition.ts"],"names":[],"mappings":"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"}
@@ -1,70 +1,110 @@
1
1
  import { __classPrivateFieldGet, __classPrivateFieldSet, __esDecorate, __runInitializers } from "tslib";
2
- import { inject, MediaEngine } from '@journeyapps-labs/reactor-mod';
2
+ import { DatabaseObject } from '@journeyapps/db';
3
+ import { action, observable } from 'mobx';
3
4
  let SchemaModelObject = (() => {
4
- var _a, _SchemaModelObject_mediaEngine_accessor_storage;
5
- let _mediaEngine_decorators;
6
- let _mediaEngine_initializers = [];
7
- let _mediaEngine_extraInitializers = [];
5
+ var _a, _SchemaModelObject_data_accessor_storage, _SchemaModelObject_model_accessor_storage, _SchemaModelObject_updated_at_accessor_storage, _SchemaModelObject_patch_accessor_storage;
6
+ let _instanceExtraInitializers = [];
7
+ let _data_decorators;
8
+ let _data_initializers = [];
9
+ let _data_extraInitializers = [];
10
+ let _model_decorators;
11
+ let _model_initializers = [];
12
+ let _model_extraInitializers = [];
13
+ let _updated_at_decorators;
14
+ let _updated_at_initializers = [];
15
+ let _updated_at_extraInitializers = [];
16
+ let _patch_decorators;
17
+ let _patch_initializers = [];
18
+ let _patch_extraInitializers = [];
19
+ let _setData_decorators;
8
20
  return _a = class SchemaModelObject {
9
- get mediaEngine() { return __classPrivateFieldGet(this, _SchemaModelObject_mediaEngine_accessor_storage, "f"); }
10
- set mediaEngine(value) { __classPrivateFieldSet(this, _SchemaModelObject_mediaEngine_accessor_storage, value, "f"); }
21
+ get data() { return __classPrivateFieldGet(this, _SchemaModelObject_data_accessor_storage, "f"); }
22
+ set data(value) { __classPrivateFieldSet(this, _SchemaModelObject_data_accessor_storage, value, "f"); }
23
+ get model() { return __classPrivateFieldGet(this, _SchemaModelObject_model_accessor_storage, "f"); }
24
+ set model(value) { __classPrivateFieldSet(this, _SchemaModelObject_model_accessor_storage, value, "f"); }
25
+ get updated_at() { return __classPrivateFieldGet(this, _SchemaModelObject_updated_at_accessor_storage, "f"); }
26
+ set updated_at(value) { __classPrivateFieldSet(this, _SchemaModelObject_updated_at_accessor_storage, value, "f"); }
27
+ get patch() { return __classPrivateFieldGet(this, _SchemaModelObject_patch_accessor_storage, "f"); }
28
+ set patch(value) { __classPrivateFieldSet(this, _SchemaModelObject_patch_accessor_storage, value, "f"); }
11
29
  constructor(options) {
30
+ this.options = (__runInitializers(this, _instanceExtraInitializers), options);
31
+ _SchemaModelObject_data_accessor_storage.set(this, __runInitializers(this, _data_initializers, void 0));
32
+ _SchemaModelObject_model_accessor_storage.set(this, (__runInitializers(this, _data_extraInitializers), __runInitializers(this, _model_initializers, void 0)));
33
+ _SchemaModelObject_updated_at_accessor_storage.set(this, (__runInitializers(this, _model_extraInitializers), __runInitializers(this, _updated_at_initializers, void 0)));
34
+ _SchemaModelObject_patch_accessor_storage.set(this, (__runInitializers(this, _updated_at_extraInitializers), __runInitializers(this, _patch_initializers, void 0)));
35
+ __runInitializers(this, _patch_extraInitializers);
12
36
  this.options = options;
13
- _SchemaModelObject_mediaEngine_accessor_storage.set(this, __runInitializers(this, _mediaEngine_initializers, void 0));
14
- this._mediaCache = __runInitializers(this, _mediaEngine_extraInitializers);
15
- this._mediaCache = new Map();
16
- }
17
- get definition() {
18
- return this.options.definition;
19
- }
20
- get model() {
21
- return this.options.model;
37
+ if (options.model) {
38
+ this.setData(options.model);
39
+ }
40
+ this.patch = new Map();
22
41
  }
23
- async displayValue() {
42
+ async applyPatches() {
24
43
  if (!this.model) {
25
- return null;
26
- }
27
- let val = this.model.toString();
28
- if (val) {
29
- return val;
44
+ const collection = await this.definition.getCollection();
45
+ this.model = collection.create();
30
46
  }
31
- /*
32
- there are scenarios where the FormatStringScope has not yet completed setting up its state +
33
- parsing the format string directive. We therefore poll for a bit until we get the value. Ideally
34
- we need a better way to determine when the scope is ready, but could not find one yet.
35
- */
36
- for (let i = 0; i < 10; i++) {
37
- await new Promise((resolve) => setTimeout(resolve, 40));
38
- let val = this.model.toString();
39
- if (val) {
40
- return val;
47
+ for (let entry of this.patch.entries()) {
48
+ if (this.definition.definition.belongsTo[entry[0]]) {
49
+ this.model[entry[0]](entry[1].model);
50
+ }
51
+ else {
52
+ this.model[entry[0]] = entry[1];
41
53
  }
42
54
  }
43
- return null;
55
+ this.patch.clear();
56
+ }
57
+ async save() {
58
+ await this.definition.connection.batchSave([this]);
44
59
  }
45
- async getMedia(field) {
46
- if (this._mediaCache.has(field)) {
47
- return this._mediaCache.get(field);
60
+ clearEdits() {
61
+ this.patch.clear();
62
+ }
63
+ revert(field) {
64
+ this.patch.delete(field);
65
+ }
66
+ set(field, value) {
67
+ var _b;
68
+ if (((_b = this.model) === null || _b === void 0 ? void 0 : _b[field]) === value) {
69
+ this.patch.delete(field);
48
70
  }
49
- let media = this.model[field];
50
- if (!(media === null || media === void 0 ? void 0 : media.uploaded())) {
51
- return null;
71
+ else {
72
+ this.patch.set(field, value);
52
73
  }
53
- let url = new URL(media.url());
54
- let mediaObject = this.mediaEngine.getMediaTypeForPath(url.pathname).generateMedia({
55
- content: await media.toArrayBuffer(),
56
- name: media.id,
57
- uid: media.id
58
- });
59
- this._mediaCache.set(field, mediaObject);
60
- return mediaObject;
74
+ }
75
+ setData(data) {
76
+ this.data = data;
77
+ this.model = new DatabaseObject(this.options.adapter, this.definition.definition, data.id);
78
+ // @ts-ignore
79
+ this.model.resolve(data);
80
+ this.updated_at = new Date(data._updated_at);
81
+ }
82
+ async reload() {
83
+ await this.definition.load(this.id);
84
+ }
85
+ get definition() {
86
+ return this.options.definition;
87
+ }
88
+ get id() {
89
+ return this.data.id;
61
90
  }
62
91
  },
63
- _SchemaModelObject_mediaEngine_accessor_storage = new WeakMap(),
92
+ _SchemaModelObject_data_accessor_storage = new WeakMap(),
93
+ _SchemaModelObject_model_accessor_storage = new WeakMap(),
94
+ _SchemaModelObject_updated_at_accessor_storage = new WeakMap(),
95
+ _SchemaModelObject_patch_accessor_storage = new WeakMap(),
64
96
  (() => {
65
97
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
66
- _mediaEngine_decorators = [inject(MediaEngine)];
67
- __esDecorate(_a, null, _mediaEngine_decorators, { kind: "accessor", name: "mediaEngine", static: false, private: false, access: { has: obj => "mediaEngine" in obj, get: obj => obj.mediaEngine, set: (obj, value) => { obj.mediaEngine = value; } }, metadata: _metadata }, _mediaEngine_initializers, _mediaEngine_extraInitializers);
98
+ _data_decorators = [observable];
99
+ _model_decorators = [observable];
100
+ _updated_at_decorators = [observable];
101
+ _patch_decorators = [observable];
102
+ _setData_decorators = [action];
103
+ __esDecorate(_a, null, _data_decorators, { kind: "accessor", name: "data", static: false, private: false, access: { has: obj => "data" in obj, get: obj => obj.data, set: (obj, value) => { obj.data = value; } }, metadata: _metadata }, _data_initializers, _data_extraInitializers);
104
+ __esDecorate(_a, null, _model_decorators, { kind: "accessor", name: "model", static: false, private: false, access: { has: obj => "model" in obj, get: obj => obj.model, set: (obj, value) => { obj.model = value; } }, metadata: _metadata }, _model_initializers, _model_extraInitializers);
105
+ __esDecorate(_a, null, _updated_at_decorators, { kind: "accessor", name: "updated_at", static: false, private: false, access: { has: obj => "updated_at" in obj, get: obj => obj.updated_at, set: (obj, value) => { obj.updated_at = value; } }, metadata: _metadata }, _updated_at_initializers, _updated_at_extraInitializers);
106
+ __esDecorate(_a, null, _patch_decorators, { kind: "accessor", name: "patch", static: false, private: false, access: { has: obj => "patch" in obj, get: obj => obj.patch, set: (obj, value) => { obj.patch = value; } }, metadata: _metadata }, _patch_initializers, _patch_extraInitializers);
107
+ __esDecorate(_a, null, _setData_decorators, { kind: "method", name: "setData", static: false, private: false, access: { has: obj => "setData" in obj, get: obj => obj.setData }, metadata: _metadata }, null, _instanceExtraInitializers);
68
108
  if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
69
109
  })(),
70
110
  _a;
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaModelObject.js","sourceRoot":"","sources":["../../src/core/SchemaModelObject.ts"],"names":[],"mappings":";AAEA,OAAO,EAAiB,MAAM,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;IAOtE,iBAAiB;;;;;sBAAjB,iBAAiB;YAE5B,IAAS,WAAW,iGAAc;YAAlC,IAAS,WAAW,sGAAc;YAIlC,YAAmB,OAAiC;gBAAjC,YAAO,GAAP,OAAO,CAA0B;gBAJ3C,sHAAyB;gBAE1B,gBAAW,2DAA6B;gBAG9C,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;YAC/B,CAAC;YAED,IAAI,UAAU;gBACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACjC,CAAC;YAED,IAAI,KAAK;gBACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC5B,CAAC;YAED,KAAK,CAAC,YAAY;gBAChB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;oBAChB,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAChC,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,GAAG,CAAC;gBACb,CAAC;gBACD;;;;mBAIG;gBACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAChC,IAAI,GAAG,EAAE,CAAC;wBACR,OAAO,GAAG,CAAC;oBACb,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,KAAK,CAAC,QAAQ,CAAC,KAAa;gBAC1B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC;gBACD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAgB,CAAC;gBAC7C,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,EAAE,CAAA,EAAE,CAAC;oBACvB,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC/B,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC;oBACjF,OAAO,EAAE,MAAM,KAAK,CAAC,aAAa,EAAE;oBACpC,IAAI,EAAE,KAAK,CAAC,EAAE;oBACd,GAAG,EAAE,KAAK,CAAC,EAAE;iBACd,CAAC,CAAC;gBAEH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBACzC,OAAO,WAAW,CAAC;YACrB,CAAC;;;;;uCAzDA,MAAM,CAAC,WAAW,CAAC;YACpB,oLAAS,WAAW,6BAAX,WAAW,iGAAc;;;;;SAFvB,iBAAiB"}
1
+ {"version":3,"file":"SchemaModelObject.js","sourceRoot":"","sources":["../../src/core/SchemaModelObject.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,8 @@ export class AbstractQuery {
5
5
  this.connection = connection;
6
6
  this.id = v4();
7
7
  }
8
- serialize() {
9
- return {
10
- type: this.type,
11
- connection_id: this.connection.id
12
- };
13
- }
14
- async deserialize(connectionStore, data) {
15
- this.connection = await connectionStore.waitForReadyForConnection(data.connection_id);
8
+ async batchSave() {
9
+ await this.connection.batchSave(this.getDirtyObjects());
16
10
  }
17
11
  }
18
12
  //# sourceMappingURL=AbstractQuery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractQuery.js","sourceRoot":"","sources":["../../../src/core/query/AbstractQuery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAS1B,MAAM,OAAgB,aAAa;IAGjC,YACY,IAAY,EACZ,UAA8B;QAD9B,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAoB;QAExC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;IACjB,CAAC;IAYD,SAAS;QACP,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;SAC7B,CAAC;IACT,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,eAAgC,EAAE,IAAO;QACzD,IAAI,CAAC,UAAU,GAAG,MAAM,eAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxF,CAAC;CACF"}
1
+ {"version":3,"file":"AbstractQuery.js","sourceRoot":"","sources":["../../../src/core/query/AbstractQuery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAI1B,MAAM,OAAgB,aAAa;IAGjC,YACS,IAAY,EACZ,UAA8B;QAD9B,SAAI,GAAJ,IAAI,CAAQ;QACZ,eAAU,GAAV,UAAU,CAAoB;QAErC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAC1D,CAAC;CAaF"}
@@ -0,0 +1,13 @@
1
+ import { AbstractQuery } from './AbstractQuery';
2
+ export class AbstractSerializableQuery extends AbstractQuery {
3
+ serialize() {
4
+ return {
5
+ type: this.type,
6
+ connection_id: this.connection.id
7
+ };
8
+ }
9
+ async deserialize(connectionStore, data) {
10
+ this.connection = await connectionStore.waitForReadyForConnection(data.connection_id);
11
+ }
12
+ }
13
+ //# sourceMappingURL=AbstractSerializableQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractSerializableQuery.js","sourceRoot":"","sources":["../../../src/core/query/AbstractSerializableQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQhD,MAAM,OAAgB,yBAEpB,SAAQ,aAAa;IACrB,SAAS;QACP,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;SAC7B,CAAC;IACT,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,eAAgC,EAAE,IAAO;QACzD,IAAI,CAAC,UAAU,GAAG,MAAM,eAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxF,CAAC;CACF"}
@@ -1,5 +1,4 @@
1
1
  import { __classPrivateFieldGet, __classPrivateFieldSet, __esDecorate, __runInitializers } from "tslib";
2
- import { SchemaModelObject } from '../SchemaModelObject';
3
2
  import { observable } from 'mobx';
4
3
  let Page = (() => {
5
4
  var _a, _Page_models_accessor_storage, _Page_loading_accessor_storage;
@@ -26,17 +25,13 @@ let Page = (() => {
26
25
  get index() {
27
26
  return this.options.index;
28
27
  }
29
- async load() {
30
- this.loading = true;
31
- let collection = await this.options.collection();
32
- let models = await collection.all().limit(this.options.limit).skip(this.options.offset).toArray();
33
- this.models = models.map((m) => {
34
- return new SchemaModelObject({
35
- definition: this.options.definition,
36
- model: m
37
- });
28
+ reset() {
29
+ this.models.forEach((m) => {
30
+ m.patch.clear();
38
31
  });
39
- this.loading = false;
32
+ }
33
+ getDirtyObjects() {
34
+ return this.models.filter((m) => m.patch.size > 0);
40
35
  }
41
36
  asRows() {
42
37
  return this.models.map((m) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../src/core/query/Page.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;IAgBrB,IAAI;;;;;;;;sBAAJ,IAAI;YAEf,IAAS,MAAM,+EAAsB;YAArC,IAAS,MAAM,oFAAsB;YAGrC,IAAS,OAAO,gFAAU;YAA1B,IAAS,OAAO,qFAAU;YAE1B,YAAsB,OAAoB;gBAApB,YAAO,GAAP,OAAO,CAAa;gBALjC,+FAA4B;gBAG5B,uJAAiB;;gBAEJ,YAAO,GAAP,OAAO,CAAa;gBACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;aAClB;YAED,IAAI,KAAK;gBACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC5B,CAAC;YAED,KAAK,CAAC,IAAI;gBACR,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBACjD,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;gBAClG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC7B,OAAO,IAAI,iBAAiB,CAAC;wBAC3B,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;wBACnC,KAAK,EAAE,CAAC;qBACT,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,CAAC;YAED,MAAM;gBACJ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC3B,OAAO;wBACL,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;wBACf,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;wBACnC,KAAK,EAAE,CAAC;qBACT,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;;;;;;kCArCA,UAAU;mCAGV,UAAU;YAFX,qKAAS,MAAM,6BAAN,MAAM,uFAAsB;YAGrC,wKAAS,OAAO,6BAAP,OAAO,yFAAU;;;;;SALf,IAAI"}
1
+ {"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../src/core/query/Page.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;IAarB,IAAI;;;;;;;;sBAAJ,IAAI;YAEf,IAAS,MAAM,+EAAsB;YAArC,IAAS,MAAM,oFAAsB;YAGrC,IAAS,OAAO,gFAAU;YAA1B,IAAS,OAAO,qFAAU;YAE1B,YAAsB,OAAoB;gBAApB,YAAO,GAAP,OAAO,CAAa;gBALjC,+FAA4B;gBAG5B,uJAAiB;;gBAEJ,YAAO,GAAP,OAAO,CAAa;gBACxC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;aAClB;YAED,IAAI,KAAK;gBACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC5B,CAAC;YAED,KAAK;gBACH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBACxB,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAClB,CAAC,CAAC,CAAC;YACL,CAAC;YAED,eAAe;gBACb,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YACrD,CAAC;YAED,MAAM;gBACJ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC3B,OAAO;wBACL,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;wBACf,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;wBACnC,KAAK,EAAE,CAAC;qBACT,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;;;;;;kCAlCA,UAAU;mCAGV,UAAU;YAFX,qKAAS,MAAM,6BAAN,MAAM,uFAAsB;YAGrC,wKAAS,OAAO,6BAAP,OAAO,yFAAU;;;;;SALf,IAAI"}
@@ -0,0 +1,17 @@
1
+ export class AbstractFilter {
2
+ }
3
+ export var Condition;
4
+ (function (Condition) {
5
+ Condition["EQUALS"] = "=";
6
+ })(Condition || (Condition = {}));
7
+ export class SimpleFilter extends AbstractFilter {
8
+ constructor(variable, statements) {
9
+ super();
10
+ this.variable = variable;
11
+ this.statements = statements;
12
+ }
13
+ augment(query) {
14
+ return query.where(this.statements.map((s) => `${this.variable.name} ${s.condition} ?`).join(' or '), ...this.statements.map((s) => s.arg));
15
+ }
16
+ }
17
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../src/core/query/filters.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,cAAc;CAEnC;AAED,MAAM,CAAN,IAAY,SAEX;AAFD,WAAY,SAAS;IACnB,yBAAY,CAAA;AACd,CAAC,EAFW,SAAS,KAAT,SAAS,QAEpB;AAOD,MAAM,OAAO,YAAa,SAAQ,cAAc;IAC9C,YACS,QAAkB,EAClB,UAAuB;QAE9B,KAAK,EAAE,CAAC;QAHD,aAAQ,GAAR,QAAQ,CAAU;QAClB,eAAU,GAAV,UAAU,CAAa;IAGhC,CAAC;IAED,OAAO,CAAC,KAAY;QAClB,OAAO,KAAK,CAAC,KAAK,CAChB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EACjF,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CACrC,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ import { AbstractQuery } from '../AbstractQuery';
2
+ import { Page } from '../Page';
3
+ export class ChangedModelQuery extends AbstractQuery {
4
+ constructor(query) {
5
+ super(query.type, query.connection);
6
+ this.query = query;
7
+ }
8
+ getDirtyObjects() {
9
+ return this.query.getDirtyObjects();
10
+ }
11
+ getSimpleName() {
12
+ return `Changed models`;
13
+ }
14
+ async load() { }
15
+ getColumns() {
16
+ return this.query.getColumns();
17
+ }
18
+ get totalPages() {
19
+ return 1;
20
+ }
21
+ getPage(number) {
22
+ let page = new Page({
23
+ definition: this.query.options.definition,
24
+ index: 0
25
+ });
26
+ page.loading = false;
27
+ page.models = this.query.getDirtyObjects();
28
+ return page;
29
+ }
30
+ }
31
+ //# sourceMappingURL=ChangedModelQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangedModelQuery.js","sourceRoot":"","sources":["../../../../src/core/query/query-changed/ChangedModelQuery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAClD,YAAsB,KAAkB;QACtC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QADhB,UAAK,GAAL,KAAK,CAAa;IAExC,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;IACtC,CAAC;IACD,aAAa;QACX,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,KAAK,CAAC,IAAI,KAAkB,CAAC;IAE7B,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,UAAU;QACZ,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,MAAc;QACpB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC;YAClB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU;YACzC,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ import { Page } from '../Page';
2
+ export class SimplePage extends Page {
3
+ constructor(options2) {
4
+ super(options2);
5
+ this.options2 = options2;
6
+ }
7
+ async load() {
8
+ this.loading = true;
9
+ let collection = await this.options.definition.getCollection();
10
+ let query = collection.all();
11
+ this.options2.filters.forEach((f) => {
12
+ query = f.augment(query);
13
+ });
14
+ this.models = await this.options.definition.executeQuery(query.limit(this.options2.limit).skip(this.options2.offset));
15
+ this.loading = false;
16
+ }
17
+ }
18
+ //# sourceMappingURL=SimplePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimplePage.js","sourceRoot":"","sources":["../../../../src/core/query/query-simple/SimplePage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAe,MAAM,SAAS,CAAC;AAS5C,MAAM,OAAO,UAAW,SAAQ,IAAI;IAClC,YAAsB,QAA2B;QAC/C,KAAK,CAAC,QAAQ,CAAC,CAAC;QADI,aAAQ,GAAR,QAAQ,CAAmB;IAEjD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAC/D,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAClC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CACtD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC5D,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;CACF"}