UNPKG

@thisisagile/easy

Version:

Straightforward library for building domain-driven microservice architectures

70 lines (69 loc) 2.07 kB
import { Gateway } from "../chunk-7ULNXC33.mjs"; import { toPageList } from "../chunk-TORB7XB3.mjs"; import { when } from "../chunk-XAIHCZT4.mjs"; import "../chunk-OFGI5FLG.mjs"; import "../chunk-NCEWAKOZ.mjs"; import "../chunk-Q3WMGUO2.mjs"; import "../chunk-5HENJTR6.mjs"; import { Exception } from "../chunk-FKZ4MOTX.mjs"; import "../chunk-WSBULPUZ.mjs"; import "../chunk-JVDKV5HE.mjs"; import "../chunk-WTFW6DLP.mjs"; import "../chunk-NDCIZJXB.mjs"; import "../chunk-MCCIBDEH.mjs"; import "../chunk-H2762RTS.mjs"; import "../chunk-A7C3XND3.mjs"; import "../chunk-JSON7A4X.mjs"; import "../chunk-CO2AFYVD.mjs"; import "../chunk-BDA5LB4S.mjs"; import "../chunk-SJGQU3OG.mjs"; import "../chunk-ZHXKBOK2.mjs"; import "../chunk-ZPNFXK7Y.mjs"; import "../chunk-DXQSIBC7.mjs"; import "../chunk-PIRWVOO2.mjs"; import { isDefined } from "../chunk-DEJ7A5PY.mjs"; import "../chunk-4N72FQFX.mjs"; // src/data/InMemoryGateway.ts var InMemoryGateway = class extends Gateway { constructor(data) { super(); this.data = data; } all(options) { return this.data.then((d) => toPageList(d, d)); } byId(id) { return this.data.then((d) => d.byId(id)).then((d) => d ? { ...d } : void 0); } by = (key, value) => { return this.data.then((d) => d.filter((i) => i[key] === value)); }; exists(id) { return this.byId(id).then((d) => isDefined(d)); } add(item) { return when(item).not.contains((i) => i.id).reject(Exception.IsMissingId).then((i) => this.exists(i.id)).then((ex) => when(ex).isTrue.reject(Exception.AlreadyExists)).then(() => this.data.then((d) => d.add(item))).then(() => ({ ...item })); } remove(id) { return this.data.then( (d) => when(d.findIndex((i) => i.id === id)).with((i) => i < 0).reject(Exception.DoesNotExist).then((i) => d.splice(i, 1)) ).then(() => true); } update(item) { return when(item).not.contains((i) => i.id).reject(Exception.IsMissingId).then((i) => this.remove(i.id).then(() => this.add(i))); } }; export { InMemoryGateway }; //# sourceMappingURL=InMemoryGateway.mjs.map