From 2002ac670aed71714e5c3c5b834f2e42c9b4a19f Mon Sep 17 00:00:00 2001 From: Julien Calixte Date: Sat, 16 May 2026 23:47:59 +0200 Subject: [PATCH] feat(data): expose bulkUpdate on PouchDB wrapper Wraps PouchDB.bulkDocs so callers can flush many docs in one worker round trip, avoiding the read-before-write that data.update does per document. --- src/data/data.ts | 3 +++ src/data/data.worker.ts | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/data/data.ts b/src/data/data.ts index 25612ab..4e1cf2a 100644 --- a/src/data/data.ts +++ b/src/data/data.ts @@ -7,6 +7,9 @@ import { Model } from "./models/Model" export interface DataApi { add
(model: Model
): Promise update
>(model: T): Promise + bulkUpdate
>( + models: T[] + ): Promise remove(id: string): Promise get
>(id: string): Promise getOrCreate
>( diff --git a/src/data/data.worker.ts b/src/data/data.worker.ts index 4271fb1..fb6f02e 100644 --- a/src/data/data.worker.ts +++ b/src/data/data.worker.ts @@ -67,6 +67,19 @@ class Data { } } + public async bulkUpdate
>( + models: T[] + ): Promise { + if (!this.locale || !models.length) return false + try { + const result = await this.locale.bulkDocs(models) + return result.every((r) => "ok" in r && r.ok) + } catch (error) { + console.warn(error) + return false + } + } + public async remove(id: string): Promise { try { const doc = await this.get(id)