@thisisagile/easy
Version:
Straightforward library for building domain-driven microservice architectures
70 lines (69 loc) • 2.07 kB
JavaScript
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