Add migrate to event store

This commit is contained in:
Jon Staab
2024-09-05 17:05:36 -07:00
parent b9c73ea826
commit c30bdd6534
+14 -3
View File
@@ -97,7 +97,10 @@ export const throttled = <T>(delay: number, store: Readable<T>) =>
// Event related stores
export const createEventStore = (repository: Repository): Writable<TrustedEvent[]> => {
export const createEventStore = (
repository: Repository,
migrate?: (events: TrustedEvent[]) => TrustedEvent[],
): Writable<TrustedEvent[]> => {
let subs: Subscriber<TrustedEvent[]>[] = []
const onUpdate = () => {
@@ -108,9 +111,17 @@ export const createEventStore = (repository: Repository): Writable<TrustedEvent[
}
}
const setEvents = (events: TrustedEvent[]) => {
if (migrate) {
events = migrate(events)
}
repository.load(events)
}
return {
set: (events: TrustedEvent[]) => repository.load(events),
update: (f: Updater<TrustedEvent[]>) => repository.load(f(repository.dump())),
set: (events: TrustedEvent[]) => setEvents(events),
update: (f: Updater<TrustedEvent[]>) => setEvents(f(repository.dump())),
subscribe: (f: Subscriber<TrustedEvent[]>) => {
f(repository.dump())