Update src/data/d1-repository.mjs
Browse files- 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" };
|