ghuser1 commited on
Commit
405dbb1
·
verified ·
1 Parent(s): ab1d25f

Update src/data/d1-repository.mjs

Browse files
Files changed (1) hide show
  1. src/data/d1-repository.mjs +22 -0
src/data/d1-repository.mjs CHANGED
@@ -26,6 +26,9 @@ export function createD1Repository({ db }) {
26
  async createFolder(folder) {
27
  return createFolder(db, folder);
28
  },
 
 
 
29
  async deleteFolder(id) {
30
  return deleteFolder(db, id);
31
  },
@@ -190,6 +193,25 @@ async function createFolder(db, folder) {
190
  return getFolder(db, id);
191
  }
192
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
193
  async function deleteFolder(db, id) {
194
  const folder = await getFolder(db, id);
195
  if (!folder || folder.id === "notes") return { status: "missing" };
 
26
  async createFolder(folder) {
27
  return createFolder(db, folder);
28
  },
29
+ async updateFolder(id, patch) {
30
+ return updateFolder(db, id, patch);
31
+ },
32
  async deleteFolder(id) {
33
  return deleteFolder(db, id);
34
  },
 
193
  return getFolder(db, id);
194
  }
195
 
196
+ async function updateFolder(db, id, patch) {
197
+ const existing = await getFolder(db, id);
198
+ if (!existing || existing.id === "notes") return { status: "missing" };
199
+ const expectedVersion = Number(patch.version);
200
+ if (expectedVersion && expectedVersion !== existing.version) {
201
+ return { status: "conflict", folder: existing };
202
+ }
203
+
204
+ const nextName = String(patch.name ?? existing.name).trim() || existing.name;
205
+ const nextUpdatedAt = Number(patch.updatedAt || Date.now());
206
+ const nextVersion = existing.version + 1;
207
+ await db.prepare(`
208
+ UPDATE folders
209
+ SET name = ?, updated_at = ?, version = ?
210
+ WHERE id = ?
211
+ `).bind(nextName, nextUpdatedAt, nextVersion, id).run();
212
+ return { status: "ok", folder: await getFolder(db, id) };
213
+ }
214
+
215
  async function deleteFolder(db, id) {
216
  const folder = await getFolder(db, id);
217
  if (!folder || folder.id === "notes") return { status: "missing" };