@rolster/vinegar 3.1.0 → 3.2.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.
package/dist/cjs/index.js CHANGED
@@ -76,7 +76,7 @@ function v4(options, buf, offset) {
76
76
  return unsafeStringify(rnds);
77
77
  }
78
78
 
79
- function isModelHidden(model) {
79
+ function modelIsHideable(model) {
80
80
  return typeof model === 'object' && 'hidden' in model && 'hiddenAt' in model;
81
81
  }
82
82
  class AbstractEntityManager {
@@ -84,7 +84,7 @@ class AbstractEntityManager {
84
84
  class EntityManager {
85
85
  constructor(dataSource) {
86
86
  this.dataSource = dataSource;
87
- this.links = [];
87
+ this.persists = [];
88
88
  this.refreshs = [];
89
89
  this.syncs = [];
90
90
  this.destroys = [];
@@ -93,8 +93,8 @@ class EntityManager {
93
93
  this.uuid = v4();
94
94
  this.relations = new Map();
95
95
  }
96
- persist(link) {
97
- this.links.push(link);
96
+ persist(persist) {
97
+ this.persists.push(persist);
98
98
  }
99
99
  refresh(refresh) {
100
100
  const { entity, model, relationable } = refresh;
@@ -107,12 +107,11 @@ class EntityManager {
107
107
  this.syncs.push(sync);
108
108
  }
109
109
  destroy(entity) {
110
- const optional = this.select(entity);
111
- if (optional.isPresent()) {
112
- const model = optional.get();
113
- isModelHidden(model)
114
- ? this.hiddens.push(model)
115
- : this.destroys.push(model);
110
+ const result = this.select(entity);
111
+ if (!result.isError) {
112
+ modelIsHideable(result.value)
113
+ ? this.hiddens.push(result.value)
114
+ : this.destroys.push(result.value);
116
115
  }
117
116
  }
118
117
  procedure(procedure) {
@@ -126,7 +125,10 @@ class EntityManager {
126
125
  return entity;
127
126
  }
128
127
  select(entity) {
129
- return commons.Optional.build(this.relations.has(entity) ? this.relations.get(entity) : undefined);
128
+ const model = this.relations.get(entity);
129
+ return model
130
+ ? commons.ResultFactory.success(model)
131
+ : commons.ResultFactory.failure('Not found');
130
132
  }
131
133
  async flush() {
132
134
  const results = [
@@ -142,7 +144,7 @@ class EntityManager {
142
144
  }
143
145
  dispose() {
144
146
  this.relations.clear();
145
- this.links = [];
147
+ this.persists = [];
146
148
  this.refreshs = [];
147
149
  this.syncs = [];
148
150
  this.destroys = [];
@@ -150,9 +152,9 @@ class EntityManager {
150
152
  this.procedures = [];
151
153
  }
152
154
  persistAll() {
153
- return Promise.all(this.links.map(async (link) => {
154
- const model = await commons.fromPromise(link.create(this));
155
- link.relationable && this.relation(link.entity, model);
155
+ return Promise.all(this.persists.map(async (persist) => {
156
+ const model = await commons.fromPromise(persist.create(this));
157
+ persist.relationable && this.relation(persist.entity, model);
156
158
  return this.dataSource.insert(model);
157
159
  }));
158
160
  }
@@ -185,7 +187,7 @@ class EntityManager {
185
187
  }
186
188
  }
187
189
 
188
- function isModelEditable(model) {
190
+ function modelIsEditable(model) {
189
191
  return typeof model === 'object' && 'updatedAt' in model;
190
192
  }
191
193
  class Entity {
@@ -193,7 +195,7 @@ class Entity {
193
195
  this.uuid = uuid;
194
196
  }
195
197
  }
196
- class EntityLink {
198
+ class EntityPersist {
197
199
  constructor(entity, relationable = true) {
198
200
  this.entity = entity;
199
201
  this.relationable = relationable;
@@ -220,8 +222,7 @@ class EntitySync {
220
222
  this.dirty = this.createDirtyFromModel(model);
221
223
  }
222
224
  verify(manager) {
223
- this.sync(manager);
224
- return this.createDirty();
225
+ return this.verifySync(manager);
225
226
  }
226
227
  createDirtyFromModel(model) {
227
228
  const dirty = {};
@@ -230,7 +231,8 @@ class EntitySync {
230
231
  });
231
232
  return dirty;
232
233
  }
233
- createDirty() {
234
+ verifySync(manager) {
235
+ this.sync(manager); // Sync data Entity/Model
234
236
  const _model = this.createDirtyFromModel(this.model);
235
237
  const _dirty = {};
236
238
  Object.entries(_model).forEach(([key, value]) => {
@@ -239,7 +241,7 @@ class EntitySync {
239
241
  }
240
242
  });
241
243
  const requiredUpdate = Object.keys(_dirty).length > 0;
242
- if (requiredUpdate && isModelEditable(this.model)) {
244
+ if (requiredUpdate && modelIsEditable(this.model)) {
243
245
  _dirty['updatedAt'] = new Date();
244
246
  }
245
247
  return requiredUpdate ? _dirty : undefined;
@@ -270,8 +272,8 @@ exports.AbstractPersistentUnit = AbstractPersistentUnit;
270
272
  exports.AbstractProcedure = AbstractProcedure;
271
273
  exports.AbstractRepository = AbstractRepository;
272
274
  exports.Entity = Entity;
273
- exports.EntityLink = EntityLink;
274
275
  exports.EntityManager = EntityManager;
276
+ exports.EntityPersist = EntityPersist;
275
277
  exports.EntityRefresh = EntityRefresh;
276
278
  exports.EntitySync = EntitySync;
277
279
  exports.PersistentUnitResult = PersistentUnitResult;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../esm/database.js","../esm/datasource.js","../../node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/uuid/dist/esm-browser/native.js","../../node_modules/uuid/dist/esm-browser/v4.js","../esm/entity-manager.js","../esm/entity.js","../esm/persistent-unit.js","../esm/procedure.js","../esm/repository.js","../esm/result.js"],"sourcesContent":["export class AbstractEntityDatabase {\n}\n//# sourceMappingURL=database.js.map","export class AbstractEntityDataSource {\n}\n//# sourceMappingURL=datasource.js.map","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import { Optional, fromPromise } from '@rolster/commons';\nimport { v4 as uuid } from 'uuid';\nfunction isModelHidden(model) {\n return typeof model === 'object' && 'hidden' in model && 'hiddenAt' in model;\n}\nexport class AbstractEntityManager {\n}\nexport class EntityManager {\n constructor(dataSource) {\n this.dataSource = dataSource;\n this.links = [];\n this.refreshs = [];\n this.syncs = [];\n this.destroys = [];\n this.hiddens = [];\n this.procedures = [];\n this.uuid = uuid();\n this.relations = new Map();\n }\n persist(link) {\n this.links.push(link);\n }\n refresh(refresh) {\n const { entity, model, relationable } = refresh;\n relationable && this.relation(entity, model);\n this.refreshs.push(refresh);\n }\n sync(sync) {\n const { entity, model, relationable } = sync;\n relationable && this.relation(entity, model);\n this.syncs.push(sync);\n }\n destroy(entity) {\n const optional = this.select(entity);\n if (optional.isPresent()) {\n const model = optional.get();\n isModelHidden(model)\n ? this.hiddens.push(model)\n : this.destroys.push(model);\n }\n }\n procedure(procedure) {\n this.procedures.push(procedure);\n }\n relation(entity, model) {\n this.relations.set(entity, model);\n }\n link(entity, model) {\n this.relation(entity, model);\n return entity;\n }\n select(entity) {\n return Optional.build(this.relations.has(entity) ? this.relations.get(entity) : undefined);\n }\n async flush() {\n const results = [\n ...(await this.persistAll()),\n ...(await this.refreshAll()),\n ...(await this.syncAll()),\n ...(await this.hiddenAll()),\n ...(await this.destroyAll()),\n ...(await this.procedureAll())\n ];\n this.dispose();\n return results;\n }\n dispose() {\n this.relations.clear();\n this.links = [];\n this.refreshs = [];\n this.syncs = [];\n this.destroys = [];\n this.hiddens = [];\n this.procedures = [];\n }\n persistAll() {\n return Promise.all(this.links.map(async (link) => {\n const model = await fromPromise(link.create(this));\n link.relationable && this.relation(link.entity, model);\n return this.dataSource.insert(model);\n }));\n }\n refreshAll() {\n return Promise.all(this.refreshs.map((refresh) => {\n refresh.setManager(this);\n return this.dataSource.refresh(refresh);\n }));\n }\n syncAll() {\n return Promise.all(this.syncs\n .filter(({ model }) => !this.destroys.includes(model))\n .reduce((syncs, sync) => {\n const dirty = sync.verify(this);\n dirty && syncs.push([sync.model, dirty]);\n return syncs;\n }, [])\n .map(([model, dirty]) => {\n return this.dataSource.update(model, dirty);\n }));\n }\n destroyAll() {\n return Promise.all(this.destroys.map((destroy) => this.dataSource.delete(destroy)));\n }\n hiddenAll() {\n return Promise.all(this.hiddens.map((hidden) => this.dataSource.hidden(hidden)));\n }\n procedureAll() {\n return Promise.all(this.procedures.map((procedure) => this.dataSource.procedure(procedure)));\n }\n}\n//# sourceMappingURL=entity-manager.js.map","function isModelEditable(model) {\n return typeof model === 'object' && 'updatedAt' in model;\n}\nexport class Entity {\n constructor(uuid) {\n this.uuid = uuid;\n }\n}\nexport class EntityLink {\n constructor(entity, relationable = true) {\n this.entity = entity;\n this.relationable = relationable;\n }\n}\nexport class EntityRefresh {\n constructor(entity, model, relationable = true) {\n this.entity = entity;\n this.model = model;\n this.relationable = relationable;\n }\n setManager(manager) {\n this.manager = manager;\n }\n async execute() {\n this.refresh(this.manager);\n }\n}\nexport class EntitySync {\n constructor(entity, model, relationable = true) {\n this.entity = entity;\n this.model = model;\n this.relationable = relationable;\n this.dirty = this.createDirtyFromModel(model);\n }\n verify(manager) {\n this.sync(manager);\n return this.createDirty();\n }\n createDirtyFromModel(model) {\n const dirty = {};\n Object.entries(model).forEach(([key, value]) => {\n dirty[key] = value;\n });\n return dirty;\n }\n createDirty() {\n const _model = this.createDirtyFromModel(this.model);\n const _dirty = {};\n Object.entries(_model).forEach(([key, value]) => {\n if (_model[key] !== this.dirty[key]) {\n _dirty[key] = value;\n }\n });\n const requiredUpdate = Object.keys(_dirty).length > 0;\n if (requiredUpdate && isModelEditable(this.model)) {\n _dirty['updatedAt'] = new Date();\n }\n return requiredUpdate ? _dirty : undefined;\n }\n}\n//# sourceMappingURL=entity.js.map","export class AbstractPersistentUnit {\n}\n//# sourceMappingURL=persistent-unit.js.map","export class AbstractProcedure {\n}\n//# sourceMappingURL=procedure.js.map","export class AbstractRepository {\n}\n//# sourceMappingURL=repository.js.map","export class PersistentUnitResult {\n constructor(code, error, model) {\n this.code = code;\n this.error = error;\n this.model = model;\n }\n}\n//# sourceMappingURL=result.js.map"],"names":["uuid","Optional","fromPromise"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../esm/database.js","../esm/datasource.js","../../node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/uuid/dist/esm-browser/native.js","../../node_modules/uuid/dist/esm-browser/v4.js","../esm/entity-manager.js","../esm/entity.js","../esm/persistent-unit.js","../esm/procedure.js","../esm/repository.js","../esm/result.js"],"sourcesContent":["export class AbstractEntityDatabase {\n}\n//# sourceMappingURL=database.js.map","export class AbstractEntityDataSource {\n}\n//# sourceMappingURL=datasource.js.map","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import { ResultFactory, fromPromise } from '@rolster/commons';\nimport { v4 as uuid } from 'uuid';\nfunction modelIsHideable(model) {\n return typeof model === 'object' && 'hidden' in model && 'hiddenAt' in model;\n}\nexport class AbstractEntityManager {\n}\nexport class EntityManager {\n constructor(dataSource) {\n this.dataSource = dataSource;\n this.persists = [];\n this.refreshs = [];\n this.syncs = [];\n this.destroys = [];\n this.hiddens = [];\n this.procedures = [];\n this.uuid = uuid();\n this.relations = new Map();\n }\n persist(persist) {\n this.persists.push(persist);\n }\n refresh(refresh) {\n const { entity, model, relationable } = refresh;\n relationable && this.relation(entity, model);\n this.refreshs.push(refresh);\n }\n sync(sync) {\n const { entity, model, relationable } = sync;\n relationable && this.relation(entity, model);\n this.syncs.push(sync);\n }\n destroy(entity) {\n const result = this.select(entity);\n if (!result.isError) {\n modelIsHideable(result.value)\n ? this.hiddens.push(result.value)\n : this.destroys.push(result.value);\n }\n }\n procedure(procedure) {\n this.procedures.push(procedure);\n }\n relation(entity, model) {\n this.relations.set(entity, model);\n }\n link(entity, model) {\n this.relation(entity, model);\n return entity;\n }\n select(entity) {\n const model = this.relations.get(entity);\n return model\n ? ResultFactory.success(model)\n : ResultFactory.failure('Not found');\n }\n async flush() {\n const results = [\n ...(await this.persistAll()),\n ...(await this.refreshAll()),\n ...(await this.syncAll()),\n ...(await this.hiddenAll()),\n ...(await this.destroyAll()),\n ...(await this.procedureAll())\n ];\n this.dispose();\n return results;\n }\n dispose() {\n this.relations.clear();\n this.persists = [];\n this.refreshs = [];\n this.syncs = [];\n this.destroys = [];\n this.hiddens = [];\n this.procedures = [];\n }\n persistAll() {\n return Promise.all(this.persists.map(async (persist) => {\n const model = await fromPromise(persist.create(this));\n persist.relationable && this.relation(persist.entity, model);\n return this.dataSource.insert(model);\n }));\n }\n refreshAll() {\n return Promise.all(this.refreshs.map((refresh) => {\n refresh.setManager(this);\n return this.dataSource.refresh(refresh);\n }));\n }\n syncAll() {\n return Promise.all(this.syncs\n .filter(({ model }) => !this.destroys.includes(model))\n .reduce((syncs, sync) => {\n const dirty = sync.verify(this);\n dirty && syncs.push([sync.model, dirty]);\n return syncs;\n }, [])\n .map(([model, dirty]) => {\n return this.dataSource.update(model, dirty);\n }));\n }\n destroyAll() {\n return Promise.all(this.destroys.map((destroy) => this.dataSource.delete(destroy)));\n }\n hiddenAll() {\n return Promise.all(this.hiddens.map((hidden) => this.dataSource.hidden(hidden)));\n }\n procedureAll() {\n return Promise.all(this.procedures.map((procedure) => this.dataSource.procedure(procedure)));\n }\n}\n//# sourceMappingURL=entity-manager.js.map","function modelIsEditable(model) {\n return typeof model === 'object' && 'updatedAt' in model;\n}\nexport class Entity {\n constructor(uuid) {\n this.uuid = uuid;\n }\n}\nexport class EntityPersist {\n constructor(entity, relationable = true) {\n this.entity = entity;\n this.relationable = relationable;\n }\n}\nexport class EntityRefresh {\n constructor(entity, model, relationable = true) {\n this.entity = entity;\n this.model = model;\n this.relationable = relationable;\n }\n setManager(manager) {\n this.manager = manager;\n }\n async execute() {\n this.refresh(this.manager);\n }\n}\nexport class EntitySync {\n constructor(entity, model, relationable = true) {\n this.entity = entity;\n this.model = model;\n this.relationable = relationable;\n this.dirty = this.createDirtyFromModel(model);\n }\n verify(manager) {\n return this.verifySync(manager);\n }\n createDirtyFromModel(model) {\n const dirty = {};\n Object.entries(model).forEach(([key, value]) => {\n dirty[key] = value;\n });\n return dirty;\n }\n verifySync(manager) {\n this.sync(manager); // Sync data Entity/Model\n const _model = this.createDirtyFromModel(this.model);\n const _dirty = {};\n Object.entries(_model).forEach(([key, value]) => {\n if (_model[key] !== this.dirty[key]) {\n _dirty[key] = value;\n }\n });\n const requiredUpdate = Object.keys(_dirty).length > 0;\n if (requiredUpdate && modelIsEditable(this.model)) {\n _dirty['updatedAt'] = new Date();\n }\n return requiredUpdate ? _dirty : undefined;\n }\n}\n//# sourceMappingURL=entity.js.map","export class AbstractPersistentUnit {\n}\n//# sourceMappingURL=persistent-unit.js.map","export class AbstractProcedure {\n}\n//# sourceMappingURL=procedure.js.map","export class AbstractRepository {\n}\n//# sourceMappingURL=repository.js.map","export class PersistentUnitResult {\n constructor(code, error, model) {\n this.code = code;\n this.error = error;\n this.model = model;\n }\n}\n//# sourceMappingURL=result.js.map"],"names":["uuid","ResultFactory","fromPromise"],"mappings":";;;;;;AAAO,MAAM,sBAAsB,CAAC;AACpC;;ACDO,MAAM,wBAAwB,CAAC;AACtC;;ACAA,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;AAC9B,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AACM,SAAS,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE;AACjD,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AACnC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AACnC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AACnC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AACnC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AACnC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;AACnD;;AC1BA,IAAI,eAAe,CAAC;AACpB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAClB,SAAS,GAAG,GAAG;AAC9B,IAAI,IAAI,CAAC,eAAe,EAAE;AAC1B,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AACtE,YAAY,MAAM,IAAI,KAAK,CAAC,0GAA0G,CAAC,CAAC;AACxI,SAAS;AACT,QAAQ,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9D,KAAK;AACL,IAAI,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAClC;;ACVA,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxG,aAAe,EAAE,UAAU,EAAE;;ACE7B,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE;AAClC,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AAC/C,QAAQ,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC5B,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;AAC5D,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE;AAC1B,QAAQ,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AAC7D,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;AACtC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;AACtC,IAAI,IAAI,GAAG,EAAE;AACb,QAAQ,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;AAC7B,QAAQ,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE;AACpD,YAAY,MAAM,IAAI,UAAU,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC;AACrG,SAAS;AACT,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;AACrC,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AACjC;;ACvBA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,CAAC;AACjF,CAAC;AACM,MAAM,qBAAqB,CAAC;AACnC,CAAC;AACM,MAAM,aAAa,CAAC;AAC3B,IAAI,WAAW,CAAC,UAAU,EAAE;AAC5B,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAGA,EAAI,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,CAAC,OAAO,EAAE;AACrB,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,OAAO,CAAC,OAAO,EAAE;AACrB,QAAQ,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;AACxD,QAAQ,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;AACrD,QAAQ,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,CAAC,MAAM,EAAE;AACpB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC7B,YAAY,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;AACzC,kBAAkB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACjD,kBAAkB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnD,SAAS;AACT,KAAK;AACL,IAAI,SAAS,CAAC,SAAS,EAAE;AACzB,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;AAC5B,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACrC,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,MAAM,CAAC,MAAM,EAAE;AACnB,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACjD,QAAQ,OAAO,KAAK;AACpB,cAAcC,qBAAa,CAAC,OAAO,CAAC,KAAK,CAAC;AAC1C,cAAcA,qBAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACjD,KAAK;AACL,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,IAAI,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxC,YAAY,IAAI,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxC,YAAY,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACrC,YAAY,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;AACvC,YAAY,IAAI,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxC,YAAY,IAAI,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1C,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;AACvB,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,OAAO,KAAK;AAChE,YAAY,MAAM,KAAK,GAAG,MAAMC,mBAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,YAAY,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACzE,YAAY,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjD,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK;AAC1D,YAAY,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACrC,YAAY,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACpD,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AACrC,aAAa,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClE,aAAa,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK;AACrC,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5C,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACrD,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS,EAAE,EAAE,CAAC;AACd,aAAa,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK;AACrC,YAAY,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxD,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5F,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzF,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrG,KAAK;AACL;;AC/GA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,IAAI,KAAK,CAAC;AAC7D,CAAC;AACM,MAAM,MAAM,CAAC;AACpB,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,KAAK;AACL,CAAC;AACM,MAAM,aAAa,CAAC;AAC3B,IAAI,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE;AAC7C,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC,KAAK;AACL,CAAC;AACM,MAAM,aAAa,CAAC;AAC3B,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE;AACpD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC,KAAK;AACL,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,KAAK;AACL,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,KAAK;AACL,CAAC;AACM,MAAM,UAAU,CAAC;AACxB,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE;AACpD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,MAAM,CAAC,OAAO,EAAE;AACpB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,oBAAoB,CAAC,KAAK,EAAE;AAChC,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC;AACzB,QAAQ,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACxD,YAAY,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC/B,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3B,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7D,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACzD,YAAY,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAgB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACpC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,QAAQ,IAAI,cAAc,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3D,YAAY,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AACnD,KAAK;AACL;;AC3DO,MAAM,sBAAsB,CAAC;AACpC;;ACDO,MAAM,iBAAiB,CAAC;AAC/B;;ACDO,MAAM,kBAAkB,CAAC;AAChC;;ACDO,MAAM,oBAAoB,CAAC;AAClC,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AACpC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,KAAK;AACL;;;;;;;;;;;;;;;"}
package/dist/es/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Optional, fromPromise } from '@rolster/commons';
1
+ import { ResultFactory, fromPromise } from '@rolster/commons';
2
2
 
3
3
  class AbstractEntityDatabase {
4
4
  }
@@ -72,7 +72,7 @@ function v4(options, buf, offset) {
72
72
  return unsafeStringify(rnds);
73
73
  }
74
74
 
75
- function isModelHidden(model) {
75
+ function modelIsHideable(model) {
76
76
  return typeof model === 'object' && 'hidden' in model && 'hiddenAt' in model;
77
77
  }
78
78
  class AbstractEntityManager {
@@ -80,7 +80,7 @@ class AbstractEntityManager {
80
80
  class EntityManager {
81
81
  constructor(dataSource) {
82
82
  this.dataSource = dataSource;
83
- this.links = [];
83
+ this.persists = [];
84
84
  this.refreshs = [];
85
85
  this.syncs = [];
86
86
  this.destroys = [];
@@ -89,8 +89,8 @@ class EntityManager {
89
89
  this.uuid = v4();
90
90
  this.relations = new Map();
91
91
  }
92
- persist(link) {
93
- this.links.push(link);
92
+ persist(persist) {
93
+ this.persists.push(persist);
94
94
  }
95
95
  refresh(refresh) {
96
96
  const { entity, model, relationable } = refresh;
@@ -103,12 +103,11 @@ class EntityManager {
103
103
  this.syncs.push(sync);
104
104
  }
105
105
  destroy(entity) {
106
- const optional = this.select(entity);
107
- if (optional.isPresent()) {
108
- const model = optional.get();
109
- isModelHidden(model)
110
- ? this.hiddens.push(model)
111
- : this.destroys.push(model);
106
+ const result = this.select(entity);
107
+ if (!result.isError) {
108
+ modelIsHideable(result.value)
109
+ ? this.hiddens.push(result.value)
110
+ : this.destroys.push(result.value);
112
111
  }
113
112
  }
114
113
  procedure(procedure) {
@@ -122,7 +121,10 @@ class EntityManager {
122
121
  return entity;
123
122
  }
124
123
  select(entity) {
125
- return Optional.build(this.relations.has(entity) ? this.relations.get(entity) : undefined);
124
+ const model = this.relations.get(entity);
125
+ return model
126
+ ? ResultFactory.success(model)
127
+ : ResultFactory.failure('Not found');
126
128
  }
127
129
  async flush() {
128
130
  const results = [
@@ -138,7 +140,7 @@ class EntityManager {
138
140
  }
139
141
  dispose() {
140
142
  this.relations.clear();
141
- this.links = [];
143
+ this.persists = [];
142
144
  this.refreshs = [];
143
145
  this.syncs = [];
144
146
  this.destroys = [];
@@ -146,9 +148,9 @@ class EntityManager {
146
148
  this.procedures = [];
147
149
  }
148
150
  persistAll() {
149
- return Promise.all(this.links.map(async (link) => {
150
- const model = await fromPromise(link.create(this));
151
- link.relationable && this.relation(link.entity, model);
151
+ return Promise.all(this.persists.map(async (persist) => {
152
+ const model = await fromPromise(persist.create(this));
153
+ persist.relationable && this.relation(persist.entity, model);
152
154
  return this.dataSource.insert(model);
153
155
  }));
154
156
  }
@@ -181,7 +183,7 @@ class EntityManager {
181
183
  }
182
184
  }
183
185
 
184
- function isModelEditable(model) {
186
+ function modelIsEditable(model) {
185
187
  return typeof model === 'object' && 'updatedAt' in model;
186
188
  }
187
189
  class Entity {
@@ -189,7 +191,7 @@ class Entity {
189
191
  this.uuid = uuid;
190
192
  }
191
193
  }
192
- class EntityLink {
194
+ class EntityPersist {
193
195
  constructor(entity, relationable = true) {
194
196
  this.entity = entity;
195
197
  this.relationable = relationable;
@@ -216,8 +218,7 @@ class EntitySync {
216
218
  this.dirty = this.createDirtyFromModel(model);
217
219
  }
218
220
  verify(manager) {
219
- this.sync(manager);
220
- return this.createDirty();
221
+ return this.verifySync(manager);
221
222
  }
222
223
  createDirtyFromModel(model) {
223
224
  const dirty = {};
@@ -226,7 +227,8 @@ class EntitySync {
226
227
  });
227
228
  return dirty;
228
229
  }
229
- createDirty() {
230
+ verifySync(manager) {
231
+ this.sync(manager); // Sync data Entity/Model
230
232
  const _model = this.createDirtyFromModel(this.model);
231
233
  const _dirty = {};
232
234
  Object.entries(_model).forEach(([key, value]) => {
@@ -235,7 +237,7 @@ class EntitySync {
235
237
  }
236
238
  });
237
239
  const requiredUpdate = Object.keys(_dirty).length > 0;
238
- if (requiredUpdate && isModelEditable(this.model)) {
240
+ if (requiredUpdate && modelIsEditable(this.model)) {
239
241
  _dirty['updatedAt'] = new Date();
240
242
  }
241
243
  return requiredUpdate ? _dirty : undefined;
@@ -259,5 +261,5 @@ class PersistentUnitResult {
259
261
  }
260
262
  }
261
263
 
262
- export { AbstractEntityDataSource, AbstractEntityDatabase, AbstractEntityManager, AbstractPersistentUnit, AbstractProcedure, AbstractRepository, Entity, EntityLink, EntityManager, EntityRefresh, EntitySync, PersistentUnitResult };
264
+ export { AbstractEntityDataSource, AbstractEntityDatabase, AbstractEntityManager, AbstractPersistentUnit, AbstractProcedure, AbstractRepository, Entity, EntityManager, EntityPersist, EntityRefresh, EntitySync, PersistentUnitResult };
263
265
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../esm/database.js","../esm/datasource.js","../../node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/uuid/dist/esm-browser/native.js","../../node_modules/uuid/dist/esm-browser/v4.js","../esm/entity-manager.js","../esm/entity.js","../esm/persistent-unit.js","../esm/procedure.js","../esm/repository.js","../esm/result.js"],"sourcesContent":["export class AbstractEntityDatabase {\n}\n//# sourceMappingURL=database.js.map","export class AbstractEntityDataSource {\n}\n//# sourceMappingURL=datasource.js.map","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import { Optional, fromPromise } from '@rolster/commons';\nimport { v4 as uuid } from 'uuid';\nfunction isModelHidden(model) {\n return typeof model === 'object' && 'hidden' in model && 'hiddenAt' in model;\n}\nexport class AbstractEntityManager {\n}\nexport class EntityManager {\n constructor(dataSource) {\n this.dataSource = dataSource;\n this.links = [];\n this.refreshs = [];\n this.syncs = [];\n this.destroys = [];\n this.hiddens = [];\n this.procedures = [];\n this.uuid = uuid();\n this.relations = new Map();\n }\n persist(link) {\n this.links.push(link);\n }\n refresh(refresh) {\n const { entity, model, relationable } = refresh;\n relationable && this.relation(entity, model);\n this.refreshs.push(refresh);\n }\n sync(sync) {\n const { entity, model, relationable } = sync;\n relationable && this.relation(entity, model);\n this.syncs.push(sync);\n }\n destroy(entity) {\n const optional = this.select(entity);\n if (optional.isPresent()) {\n const model = optional.get();\n isModelHidden(model)\n ? this.hiddens.push(model)\n : this.destroys.push(model);\n }\n }\n procedure(procedure) {\n this.procedures.push(procedure);\n }\n relation(entity, model) {\n this.relations.set(entity, model);\n }\n link(entity, model) {\n this.relation(entity, model);\n return entity;\n }\n select(entity) {\n return Optional.build(this.relations.has(entity) ? this.relations.get(entity) : undefined);\n }\n async flush() {\n const results = [\n ...(await this.persistAll()),\n ...(await this.refreshAll()),\n ...(await this.syncAll()),\n ...(await this.hiddenAll()),\n ...(await this.destroyAll()),\n ...(await this.procedureAll())\n ];\n this.dispose();\n return results;\n }\n dispose() {\n this.relations.clear();\n this.links = [];\n this.refreshs = [];\n this.syncs = [];\n this.destroys = [];\n this.hiddens = [];\n this.procedures = [];\n }\n persistAll() {\n return Promise.all(this.links.map(async (link) => {\n const model = await fromPromise(link.create(this));\n link.relationable && this.relation(link.entity, model);\n return this.dataSource.insert(model);\n }));\n }\n refreshAll() {\n return Promise.all(this.refreshs.map((refresh) => {\n refresh.setManager(this);\n return this.dataSource.refresh(refresh);\n }));\n }\n syncAll() {\n return Promise.all(this.syncs\n .filter(({ model }) => !this.destroys.includes(model))\n .reduce((syncs, sync) => {\n const dirty = sync.verify(this);\n dirty && syncs.push([sync.model, dirty]);\n return syncs;\n }, [])\n .map(([model, dirty]) => {\n return this.dataSource.update(model, dirty);\n }));\n }\n destroyAll() {\n return Promise.all(this.destroys.map((destroy) => this.dataSource.delete(destroy)));\n }\n hiddenAll() {\n return Promise.all(this.hiddens.map((hidden) => this.dataSource.hidden(hidden)));\n }\n procedureAll() {\n return Promise.all(this.procedures.map((procedure) => this.dataSource.procedure(procedure)));\n }\n}\n//# sourceMappingURL=entity-manager.js.map","function isModelEditable(model) {\n return typeof model === 'object' && 'updatedAt' in model;\n}\nexport class Entity {\n constructor(uuid) {\n this.uuid = uuid;\n }\n}\nexport class EntityLink {\n constructor(entity, relationable = true) {\n this.entity = entity;\n this.relationable = relationable;\n }\n}\nexport class EntityRefresh {\n constructor(entity, model, relationable = true) {\n this.entity = entity;\n this.model = model;\n this.relationable = relationable;\n }\n setManager(manager) {\n this.manager = manager;\n }\n async execute() {\n this.refresh(this.manager);\n }\n}\nexport class EntitySync {\n constructor(entity, model, relationable = true) {\n this.entity = entity;\n this.model = model;\n this.relationable = relationable;\n this.dirty = this.createDirtyFromModel(model);\n }\n verify(manager) {\n this.sync(manager);\n return this.createDirty();\n }\n createDirtyFromModel(model) {\n const dirty = {};\n Object.entries(model).forEach(([key, value]) => {\n dirty[key] = value;\n });\n return dirty;\n }\n createDirty() {\n const _model = this.createDirtyFromModel(this.model);\n const _dirty = {};\n Object.entries(_model).forEach(([key, value]) => {\n if (_model[key] !== this.dirty[key]) {\n _dirty[key] = value;\n }\n });\n const requiredUpdate = Object.keys(_dirty).length > 0;\n if (requiredUpdate && isModelEditable(this.model)) {\n _dirty['updatedAt'] = new Date();\n }\n return requiredUpdate ? _dirty : undefined;\n }\n}\n//# sourceMappingURL=entity.js.map","export class AbstractPersistentUnit {\n}\n//# sourceMappingURL=persistent-unit.js.map","export class AbstractProcedure {\n}\n//# sourceMappingURL=procedure.js.map","export class AbstractRepository {\n}\n//# sourceMappingURL=repository.js.map","export class PersistentUnitResult {\n constructor(code, error, model) {\n this.code = code;\n this.error = error;\n this.model = model;\n }\n}\n//# sourceMappingURL=result.js.map"],"names":["uuid"],"mappings":";;AAAO,MAAM,sBAAsB,CAAC;AACpC;;ACDO,MAAM,wBAAwB,CAAC;AACtC;;ACAA,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;AAC9B,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AACM,SAAS,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE;AACjD,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClC,QAAQ,GAAG;AACX,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AACnC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AACnC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AACnC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AACnC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AACnC,QAAQ,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;AACnD;;AC1BA,IAAI,eAAe,CAAC;AACpB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAClB,SAAS,GAAG,GAAG;AAC9B,IAAI,IAAI,CAAC,eAAe,EAAE;AAC1B,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AACtE,YAAY,MAAM,IAAI,KAAK,CAAC,0GAA0G,CAAC,CAAC;AACxI,SAAS;AACT,QAAQ,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9D,KAAK;AACL,IAAI,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAClC;;ACVA,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxG,aAAe,EAAE,UAAU,EAAE;;ACE7B,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE;AAClC,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE;AAC/C,QAAQ,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;AAC5B,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;AAC5D,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE;AAC1B,QAAQ,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;AAC7D,KAAK;AACL,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;AACtC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC;AACtC,IAAI,IAAI,GAAG,EAAE;AACb,QAAQ,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;AAC7B,QAAQ,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE;AACpD,YAAY,MAAM,IAAI,UAAU,CAAC,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC;AACrG,SAAS;AACT,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;AACrC,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,SAAS;AACT,QAAQ,OAAO,GAAG,CAAC;AACnB,KAAK;AACL,IAAI,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AACjC;;ACvBA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,IAAI,UAAU,IAAI,KAAK,CAAC;AACjF,CAAC;AACM,MAAM,qBAAqB,CAAC;AACnC,CAAC;AACM,MAAM,aAAa,CAAC;AAC3B,IAAI,WAAW,CAAC,UAAU,EAAE;AAC5B,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AACrC,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAGA,EAAI,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AACnC,KAAK;AACL,IAAI,OAAO,CAAC,IAAI,EAAE;AAClB,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,CAAC,OAAO,EAAE;AACrB,QAAQ,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;AACxD,QAAQ,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,KAAK;AACL,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,QAAQ,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;AACrD,QAAQ,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACrD,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,KAAK;AACL,IAAI,OAAO,CAAC,MAAM,EAAE;AACpB,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7C,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE;AAClC,YAAY,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;AACzC,YAAY,aAAa,CAAC,KAAK,CAAC;AAChC,kBAAkB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1C,kBAAkB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,SAAS;AACT,KAAK;AACL,IAAI,SAAS,CAAC,SAAS,EAAE;AACzB,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxC,KAAK;AACL,IAAI,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;AAC5B,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACrC,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,MAAM,CAAC,MAAM,EAAE;AACnB,QAAQ,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC;AACnG,KAAK;AACL,IAAI,MAAM,KAAK,GAAG;AAClB,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,IAAI,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxC,YAAY,IAAI,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxC,YAAY,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AACrC,YAAY,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;AACvC,YAAY,IAAI,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;AACxC,YAAY,IAAI,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;AAC1C,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;AACvB,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AACxB,QAAQ,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC3B,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAC1B,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK;AAC1D,YAAY,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,YAAY,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACnE,YAAY,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjD,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK;AAC1D,YAAY,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACrC,YAAY,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACpD,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,OAAO,GAAG;AACd,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AACrC,aAAa,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClE,aAAa,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK;AACrC,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5C,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACrD,YAAY,OAAO,KAAK,CAAC;AACzB,SAAS,EAAE,EAAE,CAAC;AACd,aAAa,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK;AACrC,YAAY,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxD,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK;AACL,IAAI,UAAU,GAAG;AACjB,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5F,KAAK;AACL,IAAI,SAAS,GAAG;AAChB,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzF,KAAK;AACL,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrG,KAAK;AACL;;AC7GA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,IAAI,KAAK,CAAC;AAC7D,CAAC;AACM,MAAM,MAAM,CAAC;AACpB,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,KAAK;AACL,CAAC;AACM,MAAM,UAAU,CAAC;AACxB,IAAI,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE;AAC7C,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC,KAAK;AACL,CAAC;AACM,MAAM,aAAa,CAAC;AAC3B,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE;AACpD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC,KAAK;AACL,IAAI,UAAU,CAAC,OAAO,EAAE;AACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,KAAK;AACL,IAAI,MAAM,OAAO,GAAG;AACpB,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,KAAK;AACL,CAAC;AACM,MAAM,UAAU,CAAC;AACxB,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,EAAE;AACpD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACtD,KAAK;AACL,IAAI,MAAM,CAAC,OAAO,EAAE;AACpB,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3B,QAAQ,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAClC,KAAK;AACL,IAAI,oBAAoB,CAAC,KAAK,EAAE;AAChC,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC;AACzB,QAAQ,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACxD,YAAY,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC/B,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,WAAW,GAAG;AAClB,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7D,QAAQ,MAAM,MAAM,GAAG,EAAE,CAAC;AAC1B,QAAQ,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACzD,YAAY,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACjD,gBAAgB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACpC,aAAa;AACb,SAAS,CAAC,CAAC;AACX,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,QAAQ,IAAI,cAAc,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3D,YAAY,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;AAC7C,SAAS;AACT,QAAQ,OAAO,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AACnD,KAAK;AACL;;AC3DO,MAAM,sBAAsB,CAAC;AACpC;;ACDO,MAAM,iBAAiB,CAAC;AAC/B;;ACDO,MAAM,kBAAkB,CAAC;AAChC;;ACDO,MAAM,oBAAoB,CAAC;AAClC,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AACpC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAC3B,KAAK;AACL;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../esm/database.js","../esm/datasource.js","../../node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/uuid/dist/esm-browser/native.js","../../node_modules/uuid/dist/esm-browser/v4.js","../esm/entity-manager.js","../esm/entity.js","../esm/persistent-unit.js","../esm/procedure.js","../esm/repository.js","../esm/result.js"],"sourcesContent":["export class AbstractEntityDatabase {\n}\n//# sourceMappingURL=database.js.map","export class AbstractEntityDataSource {\n}\n//# sourceMappingURL=datasource.js.map","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import { ResultFactory, fromPromise } from '@rolster/commons';\nimport { v4 as uuid } from 'uuid';\nfunction modelIsHideable(model) {\n return typeof model === 'object' && 'hidden' in model && 'hiddenAt' in model;\n}\nexport class AbstractEntityManager {\n}\nexport class EntityManager {\n constructor(dataSource) {\n this.dataSource = dataSource;\n this.persists = [];\n this.refreshs = [];\n this.syncs = [];\n this.destroys = [];\n this.hiddens = [];\n this.procedures = [];\n this.uuid = uuid();\n this.relations = new Map();\n }\n persist(persist) {\n this.persists.push(persist);\n }\n refresh(refresh) {\n const { entity, model, relationable } = refresh;\n relationable && this.relation(entity, model);\n this.refreshs.push(refresh);\n }\n sync(sync) {\n const { entity, model, relationable } = sync;\n relationable && this.relation(entity, model);\n this.syncs.push(sync);\n }\n destroy(entity) {\n const result = this.select(entity);\n if (!result.isError) {\n modelIsHideable(result.value)\n ? this.hiddens.push(result.value)\n : this.destroys.push(result.value);\n }\n }\n procedure(procedure) {\n this.procedures.push(procedure);\n }\n relation(entity, model) {\n this.relations.set(entity, model);\n }\n link(entity, model) {\n this.relation(entity, model);\n return entity;\n }\n select(entity) {\n const model = this.relations.get(entity);\n return model\n ? ResultFactory.success(model)\n : ResultFactory.failure('Not found');\n }\n async flush() {\n const results = [\n ...(await this.persistAll()),\n ...(await this.refreshAll()),\n ...(await this.syncAll()),\n ...(await this.hiddenAll()),\n ...(await this.destroyAll()),\n ...(await this.procedureAll())\n ];\n this.dispose();\n return results;\n }\n dispose() {\n this.relations.clear();\n this.persists = [];\n this.refreshs = [];\n this.syncs = [];\n this.destroys = [];\n this.hiddens = [];\n this.procedures = [];\n }\n persistAll() {\n return Promise.all(this.persists.map(async (persist) => {\n const model = await fromPromise(persist.create(this));\n persist.relationable && this.relation(persist.entity, model);\n return this.dataSource.insert(model);\n }));\n }\n refreshAll() {\n return Promise.all(this.refreshs.map((refresh) => {\n refresh.setManager(this);\n return this.dataSource.refresh(refresh);\n }));\n }\n syncAll() {\n return Promise.all(this.syncs\n .filter(({ model }) => !this.destroys.includes(model))\n .reduce((syncs, sync) => {\n const dirty = sync.verify(this);\n dirty && syncs.push([sync.model, dirty]);\n return syncs;\n }, [])\n .map(([model, dirty]) => {\n return this.dataSource.update(model, dirty);\n }));\n }\n destroyAll() {\n return Promise.all(this.destroys.map((destroy) => this.dataSource.delete(destroy)));\n }\n hiddenAll() {\n return Promise.all(this.hiddens.map((hidden) => this.dataSource.hidden(hidden)));\n }\n procedureAll() {\n return Promise.all(this.procedures.map((procedure) => this.dataSource.procedure(procedure)));\n }\n}\n//# sourceMappingURL=entity-manager.js.map","function modelIsEditable(model) {\n return typeof model === 'object' && 'updatedAt' in model;\n}\nexport class Entity {\n constructor(uuid) {\n this.uuid = uuid;\n }\n}\nexport class EntityPersist {\n constructor(entity, relationable = true) {\n this.entity = entity;\n this.relationable = relationable;\n }\n}\nexport class EntityRefresh {\n constructor(entity, model, relationable = true) {\n this.entity = entity;\n this.model = model;\n this.relationable = relationable;\n }\n setManager(manager) {\n this.manager = manager;\n }\n async execute() {\n this.refresh(this.manager);\n }\n}\nexport class EntitySync {\n constructor(entity, model, relationable = true) {\n this.entity = entity;\n this.model = model;\n this.relationable = relationable;\n this.dirty = this.createDirtyFromModel(model);\n }\n verify(manager) {\n return this.verifySync(manager);\n }\n createDirtyFromModel(model) {\n const dirty = {};\n Object.entries(model).forEach(([key, value]) => {\n dirty[key] = value;\n });\n return dirty;\n }\n verifySync(manager) {\n this.sync(manager); // Sync data Entity/Model\n const _model = this.createDirtyFromModel(this.model);\n const _dirty = {};\n Object.entries(_model).forEach(([key, value]) => {\n if (_model[key] !== this.dirty[key]) {\n _dirty[key] = value;\n }\n });\n const requiredUpdate = Object.keys(_dirty).length > 0;\n if (requiredUpdate && modelIsEditable(this.model)) {\n _dirty['updatedAt'] = new Date();\n }\n return requiredUpdate ? _dirty : undefined;\n }\n}\n//# sourceMappingURL=entity.js.map","export class AbstractPersistentUnit {\n}\n//# sourceMappingURL=persistent-unit.js.map","export class AbstractProcedure {\n}\n//# sourceMappingURL=procedure.js.map","export class AbstractRepository {\n}\n//# sourceMappingURL=repository.js.map","export class PersistentUnitResult {\n constructor(code, error, model) {\n this.code = code;\n this.error = error;\n this.model = model;\n }\n}\n//# sourceMappingURL=result.js.map"],"names":["uuid"],"mappings":"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"}
@@ -1,29 +1,29 @@
1
- import { Optional } from '@rolster/commons';
1
+ import { Result } from '@rolster/commons';
2
2
  import { AbstractEntityDataSource } from './datasource';
3
- import { EntityLink, EntitySync, EntityRefresh } from './entity';
3
+ import { EntityPersist, EntityRefresh, EntitySync } from './entity';
4
4
  import { AbstractProcedure } from './procedure';
5
5
  import { PersistentUnitResult } from './result';
6
- import { AbstractModel, AbstractEntity, QueryEntityManager } from './types';
7
- type VinegarLink = EntityLink<AbstractEntity, AbstractModel>;
6
+ import { AbstractEntity, AbstractModel, QueryEntityManager } from './types';
7
+ type VinegarPersist = EntityPersist<AbstractEntity, AbstractModel>;
8
8
  type VinegarRefresh = EntityRefresh<AbstractEntity, AbstractModel>;
9
9
  type VinegarSync = EntitySync<AbstractEntity, AbstractModel>;
10
10
  export declare abstract class AbstractEntityManager implements QueryEntityManager {
11
11
  abstract uuid: string;
12
- abstract persist(options: VinegarLink): void;
12
+ abstract persist(options: VinegarPersist): void;
13
13
  abstract refresh(options: VinegarRefresh): void;
14
14
  abstract sync(options: VinegarSync): void;
15
15
  abstract destroy(entity: AbstractEntity): void;
16
16
  abstract procedure(procedure: AbstractProcedure): void;
17
17
  abstract relation(entity: AbstractEntity, model: AbstractModel): void;
18
18
  abstract link<E extends AbstractEntity>(entity: E, model: AbstractModel): E;
19
- abstract select<T extends AbstractModel>(entity: AbstractEntity): Optional<T>;
19
+ abstract select<T extends AbstractModel>(entity: AbstractEntity): Result<T>;
20
20
  abstract flush(): Promise<PersistentUnitResult[]>;
21
21
  abstract dispose(): void;
22
22
  }
23
23
  export declare class EntityManager<D extends AbstractEntityDataSource = AbstractEntityDataSource> implements AbstractEntityManager {
24
24
  protected dataSource: D;
25
25
  private relations;
26
- private links;
26
+ private persists;
27
27
  private refreshs;
28
28
  private syncs;
29
29
  private destroys;
@@ -31,14 +31,14 @@ export declare class EntityManager<D extends AbstractEntityDataSource = Abstract
31
31
  private procedures;
32
32
  readonly uuid: string;
33
33
  constructor(dataSource: D);
34
- persist(link: VinegarLink): void;
34
+ persist(persist: VinegarPersist): void;
35
35
  refresh(refresh: VinegarRefresh): void;
36
36
  sync(sync: VinegarSync): void;
37
37
  destroy(entity: AbstractEntity): void;
38
38
  procedure(procedure: AbstractProcedure): void;
39
39
  relation(entity: AbstractEntity, model: AbstractModel): void;
40
40
  link<E extends AbstractEntity>(entity: E, model: AbstractModel): E;
41
- select<M extends AbstractModel>(entity: AbstractEntity): Optional<M>;
41
+ select<M extends AbstractModel>(entity: AbstractEntity): Result<M>;
42
42
  flush(): Promise<PersistentUnitResult[]>;
43
43
  dispose(): void;
44
44
  private persistAll;
@@ -1,6 +1,6 @@
1
- import { Optional, fromPromise } from '@rolster/commons';
1
+ import { ResultFactory, fromPromise } from '@rolster/commons';
2
2
  import { v4 as uuid } from 'uuid';
3
- function isModelHidden(model) {
3
+ function modelIsHideable(model) {
4
4
  return typeof model === 'object' && 'hidden' in model && 'hiddenAt' in model;
5
5
  }
6
6
  export class AbstractEntityManager {
@@ -8,7 +8,7 @@ export class AbstractEntityManager {
8
8
  export class EntityManager {
9
9
  constructor(dataSource) {
10
10
  this.dataSource = dataSource;
11
- this.links = [];
11
+ this.persists = [];
12
12
  this.refreshs = [];
13
13
  this.syncs = [];
14
14
  this.destroys = [];
@@ -17,8 +17,8 @@ export class EntityManager {
17
17
  this.uuid = uuid();
18
18
  this.relations = new Map();
19
19
  }
20
- persist(link) {
21
- this.links.push(link);
20
+ persist(persist) {
21
+ this.persists.push(persist);
22
22
  }
23
23
  refresh(refresh) {
24
24
  const { entity, model, relationable } = refresh;
@@ -31,12 +31,11 @@ export class EntityManager {
31
31
  this.syncs.push(sync);
32
32
  }
33
33
  destroy(entity) {
34
- const optional = this.select(entity);
35
- if (optional.isPresent()) {
36
- const model = optional.get();
37
- isModelHidden(model)
38
- ? this.hiddens.push(model)
39
- : this.destroys.push(model);
34
+ const result = this.select(entity);
35
+ if (!result.isError) {
36
+ modelIsHideable(result.value)
37
+ ? this.hiddens.push(result.value)
38
+ : this.destroys.push(result.value);
40
39
  }
41
40
  }
42
41
  procedure(procedure) {
@@ -50,7 +49,10 @@ export class EntityManager {
50
49
  return entity;
51
50
  }
52
51
  select(entity) {
53
- return Optional.build(this.relations.has(entity) ? this.relations.get(entity) : undefined);
52
+ const model = this.relations.get(entity);
53
+ return model
54
+ ? ResultFactory.success(model)
55
+ : ResultFactory.failure('Not found');
54
56
  }
55
57
  async flush() {
56
58
  const results = [
@@ -66,7 +68,7 @@ export class EntityManager {
66
68
  }
67
69
  dispose() {
68
70
  this.relations.clear();
69
- this.links = [];
71
+ this.persists = [];
70
72
  this.refreshs = [];
71
73
  this.syncs = [];
72
74
  this.destroys = [];
@@ -74,9 +76,9 @@ export class EntityManager {
74
76
  this.procedures = [];
75
77
  }
76
78
  persistAll() {
77
- return Promise.all(this.links.map(async (link) => {
78
- const model = await fromPromise(link.create(this));
79
- link.relationable && this.relation(link.entity, model);
79
+ return Promise.all(this.persists.map(async (persist) => {
80
+ const model = await fromPromise(persist.create(this));
81
+ persist.relationable && this.relation(persist.entity, model);
80
82
  return this.dataSource.insert(model);
81
83
  }));
82
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entity-manager.js","sourceRoot":"","sources":["../../src/entity-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity-manager.js","sourceRoot":"","sources":["../../src/entity-manager.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ export declare class Entity implements AbstractEntity {
3
3
  readonly uuid: string;
4
4
  constructor(uuid: string);
5
5
  }
6
- export declare abstract class EntityLink<E extends AbstractEntity, M extends AbstractModel> {
6
+ export declare abstract class EntityPersist<E extends AbstractEntity, M extends AbstractModel> {
7
7
  readonly entity: E;
8
8
  readonly relationable: boolean;
9
9
  constructor(entity: E, relationable?: boolean);
@@ -28,5 +28,5 @@ export declare abstract class EntitySync<E extends AbstractEntity, M extends Abs
28
28
  abstract sync(manager: QueryEntityManager): void;
29
29
  verify(manager: QueryEntityManager): Undefined<DirtyModel>;
30
30
  private createDirtyFromModel;
31
- private createDirty;
31
+ private verifySync;
32
32
  }
@@ -1,4 +1,4 @@
1
- function isModelEditable(model) {
1
+ function modelIsEditable(model) {
2
2
  return typeof model === 'object' && 'updatedAt' in model;
3
3
  }
4
4
  export class Entity {
@@ -6,7 +6,7 @@ export class Entity {
6
6
  this.uuid = uuid;
7
7
  }
8
8
  }
9
- export class EntityLink {
9
+ export class EntityPersist {
10
10
  constructor(entity, relationable = true) {
11
11
  this.entity = entity;
12
12
  this.relationable = relationable;
@@ -33,8 +33,7 @@ export class EntitySync {
33
33
  this.dirty = this.createDirtyFromModel(model);
34
34
  }
35
35
  verify(manager) {
36
- this.sync(manager);
37
- return this.createDirty();
36
+ return this.verifySync(manager);
38
37
  }
39
38
  createDirtyFromModel(model) {
40
39
  const dirty = {};
@@ -43,7 +42,8 @@ export class EntitySync {
43
42
  });
44
43
  return dirty;
45
44
  }
46
- createDirty() {
45
+ verifySync(manager) {
46
+ this.sync(manager); // Sync data Entity/Model
47
47
  const _model = this.createDirtyFromModel(this.model);
48
48
  const _dirty = {};
49
49
  Object.entries(_model).forEach(([key, value]) => {
@@ -52,7 +52,7 @@ export class EntitySync {
52
52
  }
53
53
  });
54
54
  const requiredUpdate = Object.keys(_dirty).length > 0;
55
- if (requiredUpdate && isModelEditable(this.model)) {
55
+ if (requiredUpdate && modelIsEditable(this.model)) {
56
56
  _dirty['updatedAt'] = new Date();
57
57
  }
58
58
  return requiredUpdate ? _dirty : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/entity.ts"],"names":[],"mappings":"AASA,SAAS,eAAe,CAAC,KAAU;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,IAAI,KAAK,CAAC;AAC3D,CAAC;AAED,MAAM,OAAO,MAAM;IACjB,YAA4B,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;CAC7C;AAED,MAAM,OAAgB,UAAU;IAI9B,YACkB,MAAS,EACT,eAAe,IAAI;QADnB,WAAM,GAAN,MAAM,CAAG;QACT,iBAAY,GAAZ,YAAY,CAAO;IAClC,CAAC;CAGL;AAED,MAAM,OAAgB,aAAa;IAOjC,YACkB,MAAS,EACT,KAAQ,EACR,eAAe,IAAI;QAFnB,WAAM,GAAN,MAAM,CAAG;QACT,UAAK,GAAL,KAAK,CAAG;QACR,iBAAY,GAAZ,YAAY,CAAO;IAClC,CAAC;IAIG,UAAU,CAAC,OAA2B;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAgB,UAAU;IAM9B,YACkB,MAAS,EACT,KAAQ,EACR,eAAe,IAAI;QAFnB,WAAM,GAAN,MAAM,CAAG;QACT,UAAK,GAAL,KAAK,CAAG;QACR,iBAAY,GAAZ,YAAY,CAAO;QAEnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAIM,MAAM,CAAC,OAA2B;QACvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEO,oBAAoB,CAAC,KAAQ;QACnC,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,WAAW;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,MAAM,GAAe,EAAE,CAAC;QAE9B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC9C,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAEtD,IAAI,cAAc,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACnC,CAAC;QAED,OAAO,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7C,CAAC;CACF"}
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/entity.ts"],"names":[],"mappings":"AASA,SAAS,eAAe,CAAC,KAAU;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,IAAI,KAAK,CAAC;AAC3D,CAAC;AAED,MAAM,OAAO,MAAM;IACjB,YAA4B,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;CAC7C;AAED,MAAM,OAAgB,aAAa;IAIjC,YACkB,MAAS,EACT,eAAe,IAAI;QADnB,WAAM,GAAN,MAAM,CAAG;QACT,iBAAY,GAAZ,YAAY,CAAO;IAClC,CAAC;CAGL;AAED,MAAM,OAAgB,aAAa;IAOjC,YACkB,MAAS,EACT,KAAQ,EACR,eAAe,IAAI;QAFnB,WAAM,GAAN,MAAM,CAAG;QACT,UAAK,GAAL,KAAK,CAAG;QACR,iBAAY,GAAZ,YAAY,CAAO;IAClC,CAAC;IAIG,UAAU,CAAC,OAA2B;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAgB,UAAU;IAM9B,YACkB,MAAS,EACT,KAAQ,EACR,eAAe,IAAI;QAFnB,WAAM,GAAN,MAAM,CAAG;QACT,UAAK,GAAL,KAAK,CAAG;QACR,iBAAY,GAAZ,YAAY,CAAO;QAEnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAIM,MAAM,CAAC,OAA2B;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAEO,oBAAoB,CAAC,KAAQ;QACnC,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,UAAU,CAAC,OAA2B;QAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB;QAE7C,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,MAAM,GAAe,EAAE,CAAC;QAE9B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC9C,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAEtD,IAAI,cAAc,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACnC,CAAC;QAED,OAAO,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7C,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { Optional } from '@rolster/commons';
1
+ import { Result } from '@rolster/commons';
2
2
  export type DirtyModel = Record<string, any>;
3
3
  export interface AbstractModel {
4
4
  id: number;
@@ -20,5 +20,5 @@ export interface Transaction {
20
20
  execute(): Promise<void>;
21
21
  }
22
22
  export interface QueryEntityManager {
23
- select<T extends AbstractModel>(entity: AbstractEntity): Optional<T>;
23
+ select<M extends AbstractModel>(entity: AbstractEntity): Result<M>;
24
24
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rolster/vinegar",
3
- "version": "3.1.0",
3
+ "version": "3.2.0",
4
4
  "description": "Container package of basic classes to implement a clean architecture.",
5
5
  "module": "dist/esm/index.js",
6
6
  "main": "dist/cjs/index.js",