Skip to content

Commit

Permalink
fix: call save on primary adapter after load on secondary has finished
Browse files Browse the repository at this point in the history
  • Loading branch information
maxnowack committed Apr 4, 2024
1 parent 123837c commit ae1a4ae
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions packages/signaldb/src/persistence/combinePersistenceAdapters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ export function createTemporaryFallbackExecutor<Args extends Array<any>, ReturnV
firstResolvingPromiseFn: (...args: Args) => Promise<ReturnVal>,
secondResolvingPromiseFn: (...args: Args) => Promise<ReturnVal>,
options?: {
onResolve?: () => void,
onResolve?: (returnValue: ReturnVal) => void,
cacheTimeout?: number,
},
): (...args: Args) => Promise<ReturnVal> {
const cacheTimeout = options?.cacheTimeout ?? 0
let isResolved = false
let resolvedValue: ReturnVal | null = null
let timeout: NodeJS.Timeout | null = null
let secondaryPromise: Promise<ReturnVal> | null = null
return (...args: Args) => {
Expand All @@ -23,11 +24,13 @@ export function createTemporaryFallbackExecutor<Args extends Array<any>, ReturnV
if (cacheTimeout > 0) {
timeout = setTimeout(() => {
isResolved = false
resolvedValue = null
secondaryPromise = null
}, cacheTimeout)
}
isResolved = true
if (options?.onResolve) options.onResolve()
resolvedValue = result
if (options?.onResolve) options.onResolve(resolvedValue)
return result
})
} else if (isResolved) {
Expand Down Expand Up @@ -56,9 +59,13 @@ export default function combinePersistenceAdapters<
() => secondaryAdapter.load(),
{
cacheTimeout: 100,
onResolve: () => {
if (!handleChange) return
void handleChange()
onResolve: (result) => {
if (handleChange) void handleChange()
void primaryAdapter.save(result.items || [], {
added: result.changes?.added || [],
modified: result.changes?.modified || [],
removed: result.changes?.removed || [],
})
},
},
)
Expand Down

0 comments on commit ae1a4ae

Please sign in to comment.