zotero-bridge 1.1.3 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-en.md +18 -1
- package/README.md +18 -1
- package/dist/database.d.ts +30 -0
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +193 -38
- package/dist/database.js.map +1 -1
- package/package.json +1 -1
- package/src/database.ts +207 -36
package/README-en.md
CHANGED
|
@@ -37,7 +37,24 @@ ZoteroBridge is a Model Context Protocol (MCP) server that connects directly to
|
|
|
37
37
|
---
|
|
38
38
|
|
|
39
39
|
## � Changelog
|
|
40
|
-
|
|
40
|
+
### v1.1.4 (2026-02-01)
|
|
41
|
+
|
|
42
|
+
🔧 **Critical Fixes - Database Compatibility**
|
|
43
|
+
- ✅ Fixed duplicate query inconsistency - `findItemByDOI/ISBN` now always returns the most recently modified item
|
|
44
|
+
- ✅ Fixed `itemTags.type` field - this field is NOT NULL and must be provided
|
|
45
|
+
- ✅ Dynamic retrieval of `note`/`attachment` itemTypeID instead of hardcoding
|
|
46
|
+
- ✅ All queries now exclude items in the `deletedItems` table
|
|
47
|
+
|
|
48
|
+
🚀 **New Features**
|
|
49
|
+
- ✨ Added transaction support (`beginTransaction/commitTransaction/rollbackTransaction`)
|
|
50
|
+
- ✨ `mergeItems` now uses transactions to ensure data consistency
|
|
51
|
+
- ✨ `mergeItems` now includes attachment transfer functionality
|
|
52
|
+
- ✨ Duplicate queries now return `_duplicateWarning` information
|
|
53
|
+
|
|
54
|
+
🛡️ **Security Improvements**
|
|
55
|
+
- All write operations check Zotero process status first
|
|
56
|
+
- Automatic database backup before modifications
|
|
57
|
+
- Batch operations protected by transactions
|
|
41
58
|
### v1.1.3 (2026-02-01)
|
|
42
59
|
|
|
43
60
|
🔧 **Fixes**
|
package/README.md
CHANGED
|
@@ -386,7 +386,24 @@ zotero-bridge --readonly
|
|
|
386
386
|
---
|
|
387
387
|
|
|
388
388
|
## 📝 更新日志
|
|
389
|
-
|
|
389
|
+
### v1.1.4 (2026-02-01)
|
|
390
|
+
|
|
391
|
+
🔧 **重要修复 - 数据库兼容性**
|
|
392
|
+
- ✅ 修复重复项查询不一致问题 - `findItemByDOI/ISBN` 现在始终返回最新修改的条目
|
|
393
|
+
- ✅ 修复 `itemTags.type` 字段 - 该字段为 NOT NULL,必须提供值
|
|
394
|
+
- ✅ 动态获取 `note`/`attachment` 的 itemTypeID,不再硬编码
|
|
395
|
+
- ✅ 所有查询现在排除 `deletedItems` 表中的已删除条目
|
|
396
|
+
|
|
397
|
+
🚀 **新功能**
|
|
398
|
+
- ✨ 添加事务支持 (`beginTransaction/commitTransaction/rollbackTransaction`)
|
|
399
|
+
- ✨ `mergeItems` 现在使用事务保证数据一致性
|
|
400
|
+
- ✨ `mergeItems` 新增附件转移功能
|
|
401
|
+
- ✨ 重复项查询现在返回 `_duplicateWarning` 警告信息
|
|
402
|
+
|
|
403
|
+
🛡️ **安全性改进**
|
|
404
|
+
- 所有写操作前检查 Zotero 进程状态
|
|
405
|
+
- 自动创建数据库备份
|
|
406
|
+
- 批量操作使用事务保护
|
|
390
407
|
### v1.1.2 (2025-02-01)
|
|
391
408
|
- 更新所有依赖到最新版本
|
|
392
409
|
- 修复 Zod 4.x 兼容性问题
|
package/dist/database.d.ts
CHANGED
|
@@ -113,6 +113,24 @@ export declare class ZoteroDatabase {
|
|
|
113
113
|
* Execute a statement (INSERT, UPDATE, DELETE)
|
|
114
114
|
*/
|
|
115
115
|
private execute;
|
|
116
|
+
/**
|
|
117
|
+
* Begin a transaction for batch operations
|
|
118
|
+
* IMPORTANT: Always use try-finally to ensure commit/rollback
|
|
119
|
+
*/
|
|
120
|
+
beginTransaction(): void;
|
|
121
|
+
/**
|
|
122
|
+
* Commit the current transaction
|
|
123
|
+
*/
|
|
124
|
+
commitTransaction(): void;
|
|
125
|
+
/**
|
|
126
|
+
* Rollback the current transaction
|
|
127
|
+
*/
|
|
128
|
+
rollbackTransaction(): void;
|
|
129
|
+
/**
|
|
130
|
+
* Execute a function within a transaction
|
|
131
|
+
* Automatically commits on success, rolls back on error
|
|
132
|
+
*/
|
|
133
|
+
withTransaction<T>(fn: () => T): T;
|
|
116
134
|
/**
|
|
117
135
|
* Get all collections
|
|
118
136
|
*/
|
|
@@ -161,6 +179,7 @@ export declare class ZoteroDatabase {
|
|
|
161
179
|
* Add tag to item
|
|
162
180
|
*
|
|
163
181
|
* Following Zotero's pattern: modifying item tags should update item metadata
|
|
182
|
+
* Note: itemTags.type is required (NOT NULL) - 0=user tag, 1=automatic
|
|
164
183
|
*/
|
|
165
184
|
addTagToItem(itemID: number, tagName: string, type?: number): boolean;
|
|
166
185
|
/**
|
|
@@ -194,6 +213,7 @@ export declare class ZoteroDatabase {
|
|
|
194
213
|
getItemByKey(key: string): ZoteroItem | null;
|
|
195
214
|
/**
|
|
196
215
|
* Search items by title
|
|
216
|
+
* Excludes deleted items and non-searchable types (attachments, notes)
|
|
197
217
|
*/
|
|
198
218
|
searchItems(query: string, limit?: number, libraryID?: number): any[];
|
|
199
219
|
/**
|
|
@@ -240,14 +260,17 @@ export declare class ZoteroDatabase {
|
|
|
240
260
|
getStoragePath(): string;
|
|
241
261
|
/**
|
|
242
262
|
* Find item by DOI
|
|
263
|
+
* Returns the most recently modified item if duplicates exist
|
|
243
264
|
*/
|
|
244
265
|
findItemByDOI(doi: string): any | null;
|
|
245
266
|
/**
|
|
246
267
|
* Find item by ISBN
|
|
268
|
+
* Returns the most recently modified item if duplicates exist
|
|
247
269
|
*/
|
|
248
270
|
findItemByISBN(isbn: string): any | null;
|
|
249
271
|
/**
|
|
250
272
|
* Find item by any identifier (DOI, ISBN, PMID, arXiv, etc.)
|
|
273
|
+
* Returns the most recently modified item if duplicates exist
|
|
251
274
|
*/
|
|
252
275
|
findItemByIdentifier(identifier: string, type?: string): any | null;
|
|
253
276
|
/**
|
|
@@ -331,6 +354,11 @@ export declare class ZoteroDatabase {
|
|
|
331
354
|
};
|
|
332
355
|
/**
|
|
333
356
|
* Find duplicate items based on title, DOI, or ISBN
|
|
357
|
+
*
|
|
358
|
+
* Note: itemTypeID values vary by Zotero version:
|
|
359
|
+
* - attachment = 3
|
|
360
|
+
* - note = 28 (in newer versions) or 1 (in older versions)
|
|
361
|
+
* We exclude both attachments and notes from duplicate detection
|
|
334
362
|
*/
|
|
335
363
|
findDuplicates(field?: 'title' | 'doi' | 'isbn', libraryID?: number): any[];
|
|
336
364
|
/**
|
|
@@ -368,12 +396,14 @@ export declare class ZoteroDatabase {
|
|
|
368
396
|
};
|
|
369
397
|
/**
|
|
370
398
|
* Merge items by transferring notes and tags from source items to target
|
|
399
|
+
* Uses transaction to ensure data consistency
|
|
371
400
|
*/
|
|
372
401
|
mergeItems(targetItemID: number, sourceItemIDs: number[]): {
|
|
373
402
|
success: boolean;
|
|
374
403
|
transferred: {
|
|
375
404
|
notes: number;
|
|
376
405
|
tags: number;
|
|
406
|
+
attachments: number;
|
|
377
407
|
};
|
|
378
408
|
errors: string[];
|
|
379
409
|
};
|
package/dist/database.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAkB,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;AAM9D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAA8B;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,iBAAiB,CAAkB;gBAE/B,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAe;IAKtD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqC3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAMnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsC9B;;;OAGG;IACH,IAAI,IAAI,IAAI;IAmCZ;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,UAAU,IAAI,IAAI;IAclB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,aAAa,CAAC;IAOrC;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAkBhB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAKhB;;OAEG;IACH,OAAO,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
package/dist/database.js
CHANGED
|
@@ -279,6 +279,55 @@ export class ZoteroDatabase {
|
|
|
279
279
|
lastInsertRowid: lastId?.id || 0
|
|
280
280
|
};
|
|
281
281
|
}
|
|
282
|
+
/**
|
|
283
|
+
* Begin a transaction for batch operations
|
|
284
|
+
* IMPORTANT: Always use try-finally to ensure commit/rollback
|
|
285
|
+
*/
|
|
286
|
+
beginTransaction() {
|
|
287
|
+
if (!this.db) {
|
|
288
|
+
throw new Error('Database not connected');
|
|
289
|
+
}
|
|
290
|
+
this.db.run('BEGIN TRANSACTION');
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Commit the current transaction
|
|
294
|
+
*/
|
|
295
|
+
commitTransaction() {
|
|
296
|
+
if (!this.db) {
|
|
297
|
+
throw new Error('Database not connected');
|
|
298
|
+
}
|
|
299
|
+
this.db.run('COMMIT');
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Rollback the current transaction
|
|
303
|
+
*/
|
|
304
|
+
rollbackTransaction() {
|
|
305
|
+
if (!this.db) {
|
|
306
|
+
throw new Error('Database not connected');
|
|
307
|
+
}
|
|
308
|
+
try {
|
|
309
|
+
this.db.run('ROLLBACK');
|
|
310
|
+
}
|
|
311
|
+
catch (e) {
|
|
312
|
+
// Ignore if no transaction is active
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Execute a function within a transaction
|
|
317
|
+
* Automatically commits on success, rolls back on error
|
|
318
|
+
*/
|
|
319
|
+
withTransaction(fn) {
|
|
320
|
+
this.beginTransaction();
|
|
321
|
+
try {
|
|
322
|
+
const result = fn();
|
|
323
|
+
this.commitTransaction();
|
|
324
|
+
return result;
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
this.rollbackTransaction();
|
|
328
|
+
throw error;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
282
331
|
// ============================================
|
|
283
332
|
// Collection (Directory) Operations
|
|
284
333
|
// ============================================
|
|
@@ -419,6 +468,7 @@ export class ZoteroDatabase {
|
|
|
419
468
|
* Add tag to item
|
|
420
469
|
*
|
|
421
470
|
* Following Zotero's pattern: modifying item tags should update item metadata
|
|
471
|
+
* Note: itemTags.type is required (NOT NULL) - 0=user tag, 1=automatic
|
|
422
472
|
*/
|
|
423
473
|
addTagToItem(itemID, tagName, type = 0) {
|
|
424
474
|
// Get or create tag
|
|
@@ -430,7 +480,8 @@ export class ZoteroDatabase {
|
|
|
430
480
|
if (existing) {
|
|
431
481
|
return false;
|
|
432
482
|
}
|
|
433
|
-
|
|
483
|
+
// itemTags.type is NOT NULL, must provide value
|
|
484
|
+
this.execute('INSERT INTO itemTags (itemID, tagID, type) VALUES (?, ?, ?)', [itemID, tagID, type]);
|
|
434
485
|
// CRITICAL: Update item metadata for Zotero compatibility
|
|
435
486
|
this.updateItemMetadata(itemID);
|
|
436
487
|
if (!this.readonly) {
|
|
@@ -532,8 +583,13 @@ export class ZoteroDatabase {
|
|
|
532
583
|
}
|
|
533
584
|
/**
|
|
534
585
|
* Search items by title
|
|
586
|
+
* Excludes deleted items and non-searchable types (attachments, notes)
|
|
535
587
|
*/
|
|
536
588
|
searchItems(query, limit = 50, libraryID = 1) {
|
|
589
|
+
// Get note and attachment type IDs dynamically
|
|
590
|
+
const noteType = this.queryOne("SELECT itemTypeID FROM itemTypes WHERE typeName = 'note'");
|
|
591
|
+
const attachType = this.queryOne("SELECT itemTypeID FROM itemTypes WHERE typeName = 'attachment'");
|
|
592
|
+
const excludeTypes = [noteType?.itemTypeID || 28, attachType?.itemTypeID || 3];
|
|
537
593
|
return this.queryAll(`
|
|
538
594
|
SELECT DISTINCT i.itemID, i.key, i.itemTypeID, i.dateAdded, i.dateModified,
|
|
539
595
|
iv.value as title
|
|
@@ -544,9 +600,11 @@ export class ZoteroDatabase {
|
|
|
544
600
|
WHERE f.fieldName = 'title'
|
|
545
601
|
AND iv.value LIKE ?
|
|
546
602
|
AND i.libraryID = ?
|
|
603
|
+
AND i.itemTypeID NOT IN (?, ?)
|
|
604
|
+
AND i.itemID NOT IN (SELECT itemID FROM deletedItems)
|
|
547
605
|
ORDER BY i.dateModified DESC
|
|
548
606
|
LIMIT ?
|
|
549
|
-
`, [`%${query}%`, libraryID, limit]);
|
|
607
|
+
`, [`%${query}%`, libraryID, excludeTypes[0], excludeTypes[1], limit]);
|
|
550
608
|
}
|
|
551
609
|
/**
|
|
552
610
|
* Get item details with all fields
|
|
@@ -749,11 +807,13 @@ export class ZoteroDatabase {
|
|
|
749
807
|
// ============================================
|
|
750
808
|
/**
|
|
751
809
|
* Find item by DOI
|
|
810
|
+
* Returns the most recently modified item if duplicates exist
|
|
752
811
|
*/
|
|
753
812
|
findItemByDOI(doi) {
|
|
754
813
|
// Normalize DOI (remove common prefixes)
|
|
755
814
|
const normalizedDOI = doi.replace(/^https?:\/\/doi\.org\//i, '').replace(/^doi:/i, '').trim();
|
|
756
|
-
|
|
815
|
+
// First check for duplicates
|
|
816
|
+
const allMatches = this.queryAll(`
|
|
757
817
|
SELECT DISTINCT i.itemID, i.key, i.itemTypeID, i.dateAdded, i.dateModified,
|
|
758
818
|
iv.value as doi
|
|
759
819
|
FROM items i
|
|
@@ -761,19 +821,31 @@ export class ZoteroDatabase {
|
|
|
761
821
|
JOIN itemDataValues iv ON id.valueID = iv.valueID
|
|
762
822
|
JOIN fields f ON id.fieldID = f.fieldID
|
|
763
823
|
WHERE f.fieldName = 'DOI' AND LOWER(iv.value) = LOWER(?)
|
|
824
|
+
ORDER BY i.dateModified DESC
|
|
764
825
|
`, [normalizedDOI]);
|
|
765
|
-
if (
|
|
766
|
-
return
|
|
826
|
+
if (allMatches.length === 0) {
|
|
827
|
+
return null;
|
|
767
828
|
}
|
|
768
|
-
|
|
829
|
+
const result = this.getItemDetails(allMatches[0].itemID);
|
|
830
|
+
// Warn about duplicates
|
|
831
|
+
if (allMatches.length > 1) {
|
|
832
|
+
result._duplicateWarning = {
|
|
833
|
+
message: `Found ${allMatches.length} items with same DOI`,
|
|
834
|
+
duplicateItemIDs: allMatches.map((m) => m.itemID),
|
|
835
|
+
usingItemID: allMatches[0].itemID
|
|
836
|
+
};
|
|
837
|
+
}
|
|
838
|
+
return result;
|
|
769
839
|
}
|
|
770
840
|
/**
|
|
771
841
|
* Find item by ISBN
|
|
842
|
+
* Returns the most recently modified item if duplicates exist
|
|
772
843
|
*/
|
|
773
844
|
findItemByISBN(isbn) {
|
|
774
845
|
// Normalize ISBN (remove hyphens and spaces)
|
|
775
846
|
const normalizedISBN = isbn.replace(/[-\s]/g, '').trim();
|
|
776
|
-
|
|
847
|
+
// First check for duplicates
|
|
848
|
+
const allMatches = this.queryAll(`
|
|
777
849
|
SELECT DISTINCT i.itemID, i.key, i.itemTypeID, i.dateAdded, i.dateModified,
|
|
778
850
|
iv.value as isbn
|
|
779
851
|
FROM items i
|
|
@@ -781,14 +853,25 @@ export class ZoteroDatabase {
|
|
|
781
853
|
JOIN itemDataValues iv ON id.valueID = iv.valueID
|
|
782
854
|
JOIN fields f ON id.fieldID = f.fieldID
|
|
783
855
|
WHERE f.fieldName = 'ISBN' AND REPLACE(REPLACE(iv.value, '-', ''), ' ', '') = ?
|
|
856
|
+
ORDER BY i.dateModified DESC
|
|
784
857
|
`, [normalizedISBN]);
|
|
785
|
-
if (
|
|
786
|
-
return
|
|
858
|
+
if (allMatches.length === 0) {
|
|
859
|
+
return null;
|
|
787
860
|
}
|
|
788
|
-
|
|
861
|
+
const result = this.getItemDetails(allMatches[0].itemID);
|
|
862
|
+
// Warn about duplicates
|
|
863
|
+
if (allMatches.length > 1) {
|
|
864
|
+
result._duplicateWarning = {
|
|
865
|
+
message: `Found ${allMatches.length} items with same ISBN`,
|
|
866
|
+
duplicateItemIDs: allMatches.map((m) => m.itemID),
|
|
867
|
+
usingItemID: allMatches[0].itemID
|
|
868
|
+
};
|
|
869
|
+
}
|
|
870
|
+
return result;
|
|
789
871
|
}
|
|
790
872
|
/**
|
|
791
873
|
* Find item by any identifier (DOI, ISBN, PMID, arXiv, etc.)
|
|
874
|
+
* Returns the most recently modified item if duplicates exist
|
|
792
875
|
*/
|
|
793
876
|
findItemByIdentifier(identifier, type) {
|
|
794
877
|
const fieldMap = {
|
|
@@ -806,16 +889,26 @@ export class ZoteroDatabase {
|
|
|
806
889
|
else if (type.toLowerCase() === 'isbn') {
|
|
807
890
|
return this.findItemByISBN(identifier);
|
|
808
891
|
}
|
|
809
|
-
|
|
892
|
+
// For other identifier types, also check for duplicates
|
|
893
|
+
const allMatches = this.queryAll(`
|
|
810
894
|
SELECT DISTINCT i.itemID, i.key
|
|
811
895
|
FROM items i
|
|
812
896
|
JOIN itemData id ON i.itemID = id.itemID
|
|
813
897
|
JOIN itemDataValues iv ON id.valueID = iv.valueID
|
|
814
898
|
JOIN fields f ON id.fieldID = f.fieldID
|
|
815
899
|
WHERE f.fieldName = ? AND iv.value LIKE ?
|
|
900
|
+
ORDER BY i.dateModified DESC
|
|
816
901
|
`, [fieldName, `%${identifier}%`]);
|
|
817
|
-
if (
|
|
818
|
-
|
|
902
|
+
if (allMatches.length > 0) {
|
|
903
|
+
const result = this.getItemDetails(allMatches[0].itemID);
|
|
904
|
+
if (allMatches.length > 1) {
|
|
905
|
+
result._duplicateWarning = {
|
|
906
|
+
message: `Found ${allMatches.length} items with same ${fieldName}`,
|
|
907
|
+
duplicateItemIDs: allMatches.map((m) => m.itemID),
|
|
908
|
+
usingItemID: allMatches[0].itemID
|
|
909
|
+
};
|
|
910
|
+
}
|
|
911
|
+
return result;
|
|
819
912
|
}
|
|
820
913
|
}
|
|
821
914
|
// Try all identifier types
|
|
@@ -1205,8 +1298,17 @@ export class ZoteroDatabase {
|
|
|
1205
1298
|
// ============================================
|
|
1206
1299
|
/**
|
|
1207
1300
|
* Find duplicate items based on title, DOI, or ISBN
|
|
1301
|
+
*
|
|
1302
|
+
* Note: itemTypeID values vary by Zotero version:
|
|
1303
|
+
* - attachment = 3
|
|
1304
|
+
* - note = 28 (in newer versions) or 1 (in older versions)
|
|
1305
|
+
* We exclude both attachments and notes from duplicate detection
|
|
1208
1306
|
*/
|
|
1209
1307
|
findDuplicates(field = 'title', libraryID = 1) {
|
|
1308
|
+
// Get note and attachment type IDs dynamically
|
|
1309
|
+
const noteType = this.queryOne("SELECT itemTypeID FROM itemTypes WHERE typeName = 'note'");
|
|
1310
|
+
const attachType = this.queryOne("SELECT itemTypeID FROM itemTypes WHERE typeName = 'attachment'");
|
|
1311
|
+
const excludeTypes = [noteType?.itemTypeID || 28, attachType?.itemTypeID || 3].join(',');
|
|
1210
1312
|
if (field === 'title') {
|
|
1211
1313
|
// Find items with the same title
|
|
1212
1314
|
return this.queryAll(`
|
|
@@ -1220,7 +1322,8 @@ export class ZoteroDatabase {
|
|
|
1220
1322
|
JOIN fields f ON id.fieldID = f.fieldID
|
|
1221
1323
|
WHERE f.fieldName = 'title'
|
|
1222
1324
|
AND i.libraryID = ?
|
|
1223
|
-
AND i.itemTypeID NOT IN (
|
|
1325
|
+
AND i.itemTypeID NOT IN (${excludeTypes})
|
|
1326
|
+
AND i.itemID NOT IN (SELECT itemID FROM deletedItems)
|
|
1224
1327
|
GROUP BY iv.value
|
|
1225
1328
|
HAVING COUNT(*) > 1
|
|
1226
1329
|
ORDER BY count DESC
|
|
@@ -1239,6 +1342,7 @@ export class ZoteroDatabase {
|
|
|
1239
1342
|
WHERE f.fieldName = 'DOI'
|
|
1240
1343
|
AND i.libraryID = ?
|
|
1241
1344
|
AND iv.value != ''
|
|
1345
|
+
AND i.itemID NOT IN (SELECT itemID FROM deletedItems)
|
|
1242
1346
|
GROUP BY LOWER(iv.value)
|
|
1243
1347
|
HAVING COUNT(*) > 1
|
|
1244
1348
|
ORDER BY count DESC
|
|
@@ -1257,6 +1361,7 @@ export class ZoteroDatabase {
|
|
|
1257
1361
|
WHERE f.fieldName = 'ISBN'
|
|
1258
1362
|
AND i.libraryID = ?
|
|
1259
1363
|
AND iv.value != ''
|
|
1364
|
+
AND i.itemID NOT IN (SELECT itemID FROM deletedItems)
|
|
1260
1365
|
GROUP BY REPLACE(REPLACE(iv.value, '-', ''), ' ', '')
|
|
1261
1366
|
HAVING COUNT(*) > 1
|
|
1262
1367
|
ORDER BY count DESC
|
|
@@ -1450,51 +1555,101 @@ export class ZoteroDatabase {
|
|
|
1450
1555
|
}
|
|
1451
1556
|
/**
|
|
1452
1557
|
* Merge items by transferring notes and tags from source items to target
|
|
1558
|
+
* Uses transaction to ensure data consistency
|
|
1453
1559
|
*/
|
|
1454
1560
|
mergeItems(targetItemID, sourceItemIDs) {
|
|
1455
1561
|
const errors = [];
|
|
1456
1562
|
let notesTransferred = 0;
|
|
1457
1563
|
let tagsTransferred = 0;
|
|
1458
|
-
|
|
1564
|
+
let attachmentsTransferred = 0;
|
|
1565
|
+
// Verify target exists and is not deleted
|
|
1459
1566
|
const target = this.getItemDetails(targetItemID);
|
|
1460
1567
|
if (!target) {
|
|
1461
1568
|
return {
|
|
1462
1569
|
success: false,
|
|
1463
|
-
transferred: { notes: 0, tags: 0 },
|
|
1570
|
+
transferred: { notes: 0, tags: 0, attachments: 0 },
|
|
1464
1571
|
errors: ['Target item not found']
|
|
1465
1572
|
};
|
|
1466
1573
|
}
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1574
|
+
// Check if target is in deletedItems
|
|
1575
|
+
const targetDeleted = this.queryOne('SELECT 1 FROM deletedItems WHERE itemID = ?', [targetItemID]);
|
|
1576
|
+
if (targetDeleted) {
|
|
1577
|
+
return {
|
|
1578
|
+
success: false,
|
|
1579
|
+
transferred: { notes: 0, tags: 0, attachments: 0 },
|
|
1580
|
+
errors: ['Target item is in trash']
|
|
1581
|
+
};
|
|
1582
|
+
}
|
|
1583
|
+
// Use transaction for atomic operation
|
|
1584
|
+
this.beginTransaction();
|
|
1585
|
+
try {
|
|
1586
|
+
for (const sourceID of sourceItemIDs) {
|
|
1587
|
+
if (sourceID === targetItemID)
|
|
1588
|
+
continue;
|
|
1589
|
+
// Verify source exists
|
|
1590
|
+
const source = this.queryOne('SELECT itemID FROM items WHERE itemID = ?', [sourceID]);
|
|
1591
|
+
if (!source) {
|
|
1592
|
+
errors.push(`Source item ${sourceID} not found`);
|
|
1593
|
+
continue;
|
|
1476
1594
|
}
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1595
|
+
// Transfer notes
|
|
1596
|
+
try {
|
|
1597
|
+
const notes = this.getItemNotes(sourceID);
|
|
1598
|
+
for (const note of notes) {
|
|
1599
|
+
this.addItemNote(targetItemID, note.note, `[Merged] ${note.title || ''}`);
|
|
1600
|
+
notesTransferred++;
|
|
1601
|
+
}
|
|
1602
|
+
}
|
|
1603
|
+
catch (error) {
|
|
1604
|
+
errors.push(`Failed to transfer notes from ${sourceID}: ${error}`);
|
|
1605
|
+
}
|
|
1606
|
+
// Transfer tags
|
|
1607
|
+
try {
|
|
1608
|
+
const tags = this.getItemTags(sourceID);
|
|
1609
|
+
for (const tag of tags) {
|
|
1610
|
+
this.addTagToItem(targetItemID, tag.name, tag.type);
|
|
1611
|
+
tagsTransferred++;
|
|
1612
|
+
}
|
|
1613
|
+
}
|
|
1614
|
+
catch (error) {
|
|
1615
|
+
errors.push(`Failed to transfer tags from ${sourceID}: ${error}`);
|
|
1616
|
+
}
|
|
1617
|
+
// Transfer attachments (update parentItemID)
|
|
1618
|
+
try {
|
|
1619
|
+
const attachments = this.queryAll(`
|
|
1620
|
+
SELECT itemID FROM itemAttachments WHERE parentItemID = ?
|
|
1621
|
+
`, [sourceID]);
|
|
1622
|
+
for (const att of attachments) {
|
|
1623
|
+
this.execute(`
|
|
1624
|
+
UPDATE itemAttachments SET parentItemID = ? WHERE itemID = ?
|
|
1625
|
+
`, [targetItemID, att.itemID]);
|
|
1626
|
+
attachmentsTransferred++;
|
|
1627
|
+
}
|
|
1628
|
+
}
|
|
1629
|
+
catch (error) {
|
|
1630
|
+
errors.push(`Failed to transfer attachments from ${sourceID}: ${error}`);
|
|
1487
1631
|
}
|
|
1488
1632
|
}
|
|
1489
|
-
|
|
1490
|
-
|
|
1633
|
+
this.commitTransaction();
|
|
1634
|
+
if (!this.readonly) {
|
|
1635
|
+
this.save();
|
|
1491
1636
|
}
|
|
1492
1637
|
}
|
|
1638
|
+
catch (error) {
|
|
1639
|
+
this.rollbackTransaction();
|
|
1640
|
+
errors.push(`Transaction failed: ${error}`);
|
|
1641
|
+
return {
|
|
1642
|
+
success: false,
|
|
1643
|
+
transferred: { notes: 0, tags: 0, attachments: 0 },
|
|
1644
|
+
errors
|
|
1645
|
+
};
|
|
1646
|
+
}
|
|
1493
1647
|
return {
|
|
1494
1648
|
success: errors.length === 0,
|
|
1495
1649
|
transferred: {
|
|
1496
1650
|
notes: notesTransferred,
|
|
1497
|
-
tags: tagsTransferred
|
|
1651
|
+
tags: tagsTransferred,
|
|
1652
|
+
attachments: attachmentsTransferred
|
|
1498
1653
|
},
|
|
1499
1654
|
errors
|
|
1500
1655
|
};
|
package/dist/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/database.ts
CHANGED
|
@@ -352,6 +352,57 @@ export class ZoteroDatabase {
|
|
|
352
352
|
};
|
|
353
353
|
}
|
|
354
354
|
|
|
355
|
+
/**
|
|
356
|
+
* Begin a transaction for batch operations
|
|
357
|
+
* IMPORTANT: Always use try-finally to ensure commit/rollback
|
|
358
|
+
*/
|
|
359
|
+
beginTransaction(): void {
|
|
360
|
+
if (!this.db) {
|
|
361
|
+
throw new Error('Database not connected');
|
|
362
|
+
}
|
|
363
|
+
this.db.run('BEGIN TRANSACTION');
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Commit the current transaction
|
|
368
|
+
*/
|
|
369
|
+
commitTransaction(): void {
|
|
370
|
+
if (!this.db) {
|
|
371
|
+
throw new Error('Database not connected');
|
|
372
|
+
}
|
|
373
|
+
this.db.run('COMMIT');
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* Rollback the current transaction
|
|
378
|
+
*/
|
|
379
|
+
rollbackTransaction(): void {
|
|
380
|
+
if (!this.db) {
|
|
381
|
+
throw new Error('Database not connected');
|
|
382
|
+
}
|
|
383
|
+
try {
|
|
384
|
+
this.db.run('ROLLBACK');
|
|
385
|
+
} catch (e) {
|
|
386
|
+
// Ignore if no transaction is active
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Execute a function within a transaction
|
|
392
|
+
* Automatically commits on success, rolls back on error
|
|
393
|
+
*/
|
|
394
|
+
withTransaction<T>(fn: () => T): T {
|
|
395
|
+
this.beginTransaction();
|
|
396
|
+
try {
|
|
397
|
+
const result = fn();
|
|
398
|
+
this.commitTransaction();
|
|
399
|
+
return result;
|
|
400
|
+
} catch (error) {
|
|
401
|
+
this.rollbackTransaction();
|
|
402
|
+
throw error;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
355
406
|
// ============================================
|
|
356
407
|
// Collection (Directory) Operations
|
|
357
408
|
// ============================================
|
|
@@ -518,6 +569,7 @@ export class ZoteroDatabase {
|
|
|
518
569
|
* Add tag to item
|
|
519
570
|
*
|
|
520
571
|
* Following Zotero's pattern: modifying item tags should update item metadata
|
|
572
|
+
* Note: itemTags.type is required (NOT NULL) - 0=user tag, 1=automatic
|
|
521
573
|
*/
|
|
522
574
|
addTagToItem(itemID: number, tagName: string, type: number = 0): boolean {
|
|
523
575
|
// Get or create tag
|
|
@@ -532,7 +584,8 @@ export class ZoteroDatabase {
|
|
|
532
584
|
return false;
|
|
533
585
|
}
|
|
534
586
|
|
|
535
|
-
|
|
587
|
+
// itemTags.type is NOT NULL, must provide value
|
|
588
|
+
this.execute('INSERT INTO itemTags (itemID, tagID, type) VALUES (?, ?, ?)', [itemID, tagID, type]);
|
|
536
589
|
|
|
537
590
|
// CRITICAL: Update item metadata for Zotero compatibility
|
|
538
591
|
this.updateItemMetadata(itemID);
|
|
@@ -657,8 +710,14 @@ export class ZoteroDatabase {
|
|
|
657
710
|
|
|
658
711
|
/**
|
|
659
712
|
* Search items by title
|
|
713
|
+
* Excludes deleted items and non-searchable types (attachments, notes)
|
|
660
714
|
*/
|
|
661
715
|
searchItems(query: string, limit: number = 50, libraryID: number = 1): any[] {
|
|
716
|
+
// Get note and attachment type IDs dynamically
|
|
717
|
+
const noteType = this.queryOne("SELECT itemTypeID FROM itemTypes WHERE typeName = 'note'");
|
|
718
|
+
const attachType = this.queryOne("SELECT itemTypeID FROM itemTypes WHERE typeName = 'attachment'");
|
|
719
|
+
const excludeTypes = [noteType?.itemTypeID || 28, attachType?.itemTypeID || 3];
|
|
720
|
+
|
|
662
721
|
return this.queryAll(`
|
|
663
722
|
SELECT DISTINCT i.itemID, i.key, i.itemTypeID, i.dateAdded, i.dateModified,
|
|
664
723
|
iv.value as title
|
|
@@ -669,9 +728,11 @@ export class ZoteroDatabase {
|
|
|
669
728
|
WHERE f.fieldName = 'title'
|
|
670
729
|
AND iv.value LIKE ?
|
|
671
730
|
AND i.libraryID = ?
|
|
731
|
+
AND i.itemTypeID NOT IN (?, ?)
|
|
732
|
+
AND i.itemID NOT IN (SELECT itemID FROM deletedItems)
|
|
672
733
|
ORDER BY i.dateModified DESC
|
|
673
734
|
LIMIT ?
|
|
674
|
-
`, [`%${query}%`, libraryID, limit]);
|
|
735
|
+
`, [`%${query}%`, libraryID, excludeTypes[0], excludeTypes[1], limit]);
|
|
675
736
|
}
|
|
676
737
|
|
|
677
738
|
/**
|
|
@@ -914,12 +975,14 @@ export class ZoteroDatabase {
|
|
|
914
975
|
|
|
915
976
|
/**
|
|
916
977
|
* Find item by DOI
|
|
978
|
+
* Returns the most recently modified item if duplicates exist
|
|
917
979
|
*/
|
|
918
980
|
findItemByDOI(doi: string): any | null {
|
|
919
981
|
// Normalize DOI (remove common prefixes)
|
|
920
982
|
const normalizedDOI = doi.replace(/^https?:\/\/doi\.org\//i, '').replace(/^doi:/i, '').trim();
|
|
921
983
|
|
|
922
|
-
|
|
984
|
+
// First check for duplicates
|
|
985
|
+
const allMatches = this.queryAll(`
|
|
923
986
|
SELECT DISTINCT i.itemID, i.key, i.itemTypeID, i.dateAdded, i.dateModified,
|
|
924
987
|
iv.value as doi
|
|
925
988
|
FROM items i
|
|
@@ -927,22 +990,37 @@ export class ZoteroDatabase {
|
|
|
927
990
|
JOIN itemDataValues iv ON id.valueID = iv.valueID
|
|
928
991
|
JOIN fields f ON id.fieldID = f.fieldID
|
|
929
992
|
WHERE f.fieldName = 'DOI' AND LOWER(iv.value) = LOWER(?)
|
|
993
|
+
ORDER BY i.dateModified DESC
|
|
930
994
|
`, [normalizedDOI]);
|
|
931
995
|
|
|
932
|
-
if (
|
|
933
|
-
return
|
|
996
|
+
if (allMatches.length === 0) {
|
|
997
|
+
return null;
|
|
998
|
+
}
|
|
999
|
+
|
|
1000
|
+
const result = this.getItemDetails(allMatches[0].itemID);
|
|
1001
|
+
|
|
1002
|
+
// Warn about duplicates
|
|
1003
|
+
if (allMatches.length > 1) {
|
|
1004
|
+
result._duplicateWarning = {
|
|
1005
|
+
message: `Found ${allMatches.length} items with same DOI`,
|
|
1006
|
+
duplicateItemIDs: allMatches.map((m: any) => m.itemID),
|
|
1007
|
+
usingItemID: allMatches[0].itemID
|
|
1008
|
+
};
|
|
934
1009
|
}
|
|
935
|
-
|
|
1010
|
+
|
|
1011
|
+
return result;
|
|
936
1012
|
}
|
|
937
1013
|
|
|
938
1014
|
/**
|
|
939
1015
|
* Find item by ISBN
|
|
1016
|
+
* Returns the most recently modified item if duplicates exist
|
|
940
1017
|
*/
|
|
941
1018
|
findItemByISBN(isbn: string): any | null {
|
|
942
1019
|
// Normalize ISBN (remove hyphens and spaces)
|
|
943
1020
|
const normalizedISBN = isbn.replace(/[-\s]/g, '').trim();
|
|
944
1021
|
|
|
945
|
-
|
|
1022
|
+
// First check for duplicates
|
|
1023
|
+
const allMatches = this.queryAll(`
|
|
946
1024
|
SELECT DISTINCT i.itemID, i.key, i.itemTypeID, i.dateAdded, i.dateModified,
|
|
947
1025
|
iv.value as isbn
|
|
948
1026
|
FROM items i
|
|
@@ -950,16 +1028,30 @@ export class ZoteroDatabase {
|
|
|
950
1028
|
JOIN itemDataValues iv ON id.valueID = iv.valueID
|
|
951
1029
|
JOIN fields f ON id.fieldID = f.fieldID
|
|
952
1030
|
WHERE f.fieldName = 'ISBN' AND REPLACE(REPLACE(iv.value, '-', ''), ' ', '') = ?
|
|
1031
|
+
ORDER BY i.dateModified DESC
|
|
953
1032
|
`, [normalizedISBN]);
|
|
954
1033
|
|
|
955
|
-
if (
|
|
956
|
-
return
|
|
1034
|
+
if (allMatches.length === 0) {
|
|
1035
|
+
return null;
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
const result = this.getItemDetails(allMatches[0].itemID);
|
|
1039
|
+
|
|
1040
|
+
// Warn about duplicates
|
|
1041
|
+
if (allMatches.length > 1) {
|
|
1042
|
+
result._duplicateWarning = {
|
|
1043
|
+
message: `Found ${allMatches.length} items with same ISBN`,
|
|
1044
|
+
duplicateItemIDs: allMatches.map((m: any) => m.itemID),
|
|
1045
|
+
usingItemID: allMatches[0].itemID
|
|
1046
|
+
};
|
|
957
1047
|
}
|
|
958
|
-
|
|
1048
|
+
|
|
1049
|
+
return result;
|
|
959
1050
|
}
|
|
960
1051
|
|
|
961
1052
|
/**
|
|
962
1053
|
* Find item by any identifier (DOI, ISBN, PMID, arXiv, etc.)
|
|
1054
|
+
* Returns the most recently modified item if duplicates exist
|
|
963
1055
|
*/
|
|
964
1056
|
findItemByIdentifier(identifier: string, type?: string): any | null {
|
|
965
1057
|
const fieldMap: Record<string, string> = {
|
|
@@ -979,17 +1071,27 @@ export class ZoteroDatabase {
|
|
|
979
1071
|
return this.findItemByISBN(identifier);
|
|
980
1072
|
}
|
|
981
1073
|
|
|
982
|
-
|
|
1074
|
+
// For other identifier types, also check for duplicates
|
|
1075
|
+
const allMatches = this.queryAll(`
|
|
983
1076
|
SELECT DISTINCT i.itemID, i.key
|
|
984
1077
|
FROM items i
|
|
985
1078
|
JOIN itemData id ON i.itemID = id.itemID
|
|
986
1079
|
JOIN itemDataValues iv ON id.valueID = iv.valueID
|
|
987
1080
|
JOIN fields f ON id.fieldID = f.fieldID
|
|
988
1081
|
WHERE f.fieldName = ? AND iv.value LIKE ?
|
|
1082
|
+
ORDER BY i.dateModified DESC
|
|
989
1083
|
`, [fieldName, `%${identifier}%`]);
|
|
990
1084
|
|
|
991
|
-
if (
|
|
992
|
-
|
|
1085
|
+
if (allMatches.length > 0) {
|
|
1086
|
+
const result = this.getItemDetails(allMatches[0].itemID);
|
|
1087
|
+
if (allMatches.length > 1) {
|
|
1088
|
+
result._duplicateWarning = {
|
|
1089
|
+
message: `Found ${allMatches.length} items with same ${fieldName}`,
|
|
1090
|
+
duplicateItemIDs: allMatches.map((m: any) => m.itemID),
|
|
1091
|
+
usingItemID: allMatches[0].itemID
|
|
1092
|
+
};
|
|
1093
|
+
}
|
|
1094
|
+
return result;
|
|
993
1095
|
}
|
|
994
1096
|
}
|
|
995
1097
|
|
|
@@ -1416,8 +1518,18 @@ export class ZoteroDatabase {
|
|
|
1416
1518
|
|
|
1417
1519
|
/**
|
|
1418
1520
|
* Find duplicate items based on title, DOI, or ISBN
|
|
1521
|
+
*
|
|
1522
|
+
* Note: itemTypeID values vary by Zotero version:
|
|
1523
|
+
* - attachment = 3
|
|
1524
|
+
* - note = 28 (in newer versions) or 1 (in older versions)
|
|
1525
|
+
* We exclude both attachments and notes from duplicate detection
|
|
1419
1526
|
*/
|
|
1420
1527
|
findDuplicates(field: 'title' | 'doi' | 'isbn' = 'title', libraryID: number = 1): any[] {
|
|
1528
|
+
// Get note and attachment type IDs dynamically
|
|
1529
|
+
const noteType = this.queryOne("SELECT itemTypeID FROM itemTypes WHERE typeName = 'note'");
|
|
1530
|
+
const attachType = this.queryOne("SELECT itemTypeID FROM itemTypes WHERE typeName = 'attachment'");
|
|
1531
|
+
const excludeTypes = [noteType?.itemTypeID || 28, attachType?.itemTypeID || 3].join(',');
|
|
1532
|
+
|
|
1421
1533
|
if (field === 'title') {
|
|
1422
1534
|
// Find items with the same title
|
|
1423
1535
|
return this.queryAll(`
|
|
@@ -1431,7 +1543,8 @@ export class ZoteroDatabase {
|
|
|
1431
1543
|
JOIN fields f ON id.fieldID = f.fieldID
|
|
1432
1544
|
WHERE f.fieldName = 'title'
|
|
1433
1545
|
AND i.libraryID = ?
|
|
1434
|
-
AND i.itemTypeID NOT IN (
|
|
1546
|
+
AND i.itemTypeID NOT IN (${excludeTypes})
|
|
1547
|
+
AND i.itemID NOT IN (SELECT itemID FROM deletedItems)
|
|
1435
1548
|
GROUP BY iv.value
|
|
1436
1549
|
HAVING COUNT(*) > 1
|
|
1437
1550
|
ORDER BY count DESC
|
|
@@ -1449,6 +1562,7 @@ export class ZoteroDatabase {
|
|
|
1449
1562
|
WHERE f.fieldName = 'DOI'
|
|
1450
1563
|
AND i.libraryID = ?
|
|
1451
1564
|
AND iv.value != ''
|
|
1565
|
+
AND i.itemID NOT IN (SELECT itemID FROM deletedItems)
|
|
1452
1566
|
GROUP BY LOWER(iv.value)
|
|
1453
1567
|
HAVING COUNT(*) > 1
|
|
1454
1568
|
ORDER BY count DESC
|
|
@@ -1466,6 +1580,7 @@ export class ZoteroDatabase {
|
|
|
1466
1580
|
WHERE f.fieldName = 'ISBN'
|
|
1467
1581
|
AND i.libraryID = ?
|
|
1468
1582
|
AND iv.value != ''
|
|
1583
|
+
AND i.itemID NOT IN (SELECT itemID FROM deletedItems)
|
|
1469
1584
|
GROUP BY REPLACE(REPLACE(iv.value, '-', ''), ' ', '')
|
|
1470
1585
|
HAVING COUNT(*) > 1
|
|
1471
1586
|
ORDER BY count DESC
|
|
@@ -1686,60 +1801,116 @@ export class ZoteroDatabase {
|
|
|
1686
1801
|
|
|
1687
1802
|
/**
|
|
1688
1803
|
* Merge items by transferring notes and tags from source items to target
|
|
1804
|
+
* Uses transaction to ensure data consistency
|
|
1689
1805
|
*/
|
|
1690
1806
|
mergeItems(targetItemID: number, sourceItemIDs: number[]): {
|
|
1691
1807
|
success: boolean;
|
|
1692
1808
|
transferred: {
|
|
1693
1809
|
notes: number;
|
|
1694
1810
|
tags: number;
|
|
1811
|
+
attachments: number;
|
|
1695
1812
|
};
|
|
1696
1813
|
errors: string[];
|
|
1697
1814
|
} {
|
|
1698
1815
|
const errors: string[] = [];
|
|
1699
1816
|
let notesTransferred = 0;
|
|
1700
1817
|
let tagsTransferred = 0;
|
|
1818
|
+
let attachmentsTransferred = 0;
|
|
1701
1819
|
|
|
1702
|
-
// Verify target exists
|
|
1820
|
+
// Verify target exists and is not deleted
|
|
1703
1821
|
const target = this.getItemDetails(targetItemID);
|
|
1704
1822
|
if (!target) {
|
|
1705
1823
|
return {
|
|
1706
1824
|
success: false,
|
|
1707
|
-
transferred: { notes: 0, tags: 0 },
|
|
1825
|
+
transferred: { notes: 0, tags: 0, attachments: 0 },
|
|
1708
1826
|
errors: ['Target item not found']
|
|
1709
1827
|
};
|
|
1710
1828
|
}
|
|
1711
1829
|
|
|
1712
|
-
|
|
1713
|
-
|
|
1830
|
+
// Check if target is in deletedItems
|
|
1831
|
+
const targetDeleted = this.queryOne('SELECT 1 FROM deletedItems WHERE itemID = ?', [targetItemID]);
|
|
1832
|
+
if (targetDeleted) {
|
|
1833
|
+
return {
|
|
1834
|
+
success: false,
|
|
1835
|
+
transferred: { notes: 0, tags: 0, attachments: 0 },
|
|
1836
|
+
errors: ['Target item is in trash']
|
|
1837
|
+
};
|
|
1838
|
+
}
|
|
1839
|
+
|
|
1840
|
+
// Use transaction for atomic operation
|
|
1841
|
+
this.beginTransaction();
|
|
1842
|
+
|
|
1843
|
+
try {
|
|
1844
|
+
for (const sourceID of sourceItemIDs) {
|
|
1845
|
+
if (sourceID === targetItemID) continue;
|
|
1846
|
+
|
|
1847
|
+
// Verify source exists
|
|
1848
|
+
const source = this.queryOne('SELECT itemID FROM items WHERE itemID = ?', [sourceID]);
|
|
1849
|
+
if (!source) {
|
|
1850
|
+
errors.push(`Source item ${sourceID} not found`);
|
|
1851
|
+
continue;
|
|
1852
|
+
}
|
|
1714
1853
|
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1854
|
+
// Transfer notes
|
|
1855
|
+
try {
|
|
1856
|
+
const notes = this.getItemNotes(sourceID);
|
|
1857
|
+
for (const note of notes) {
|
|
1858
|
+
this.addItemNote(targetItemID, note.note, `[Merged] ${note.title || ''}`);
|
|
1859
|
+
notesTransferred++;
|
|
1860
|
+
}
|
|
1861
|
+
} catch (error) {
|
|
1862
|
+
errors.push(`Failed to transfer notes from ${sourceID}: ${error}`);
|
|
1721
1863
|
}
|
|
1722
|
-
} catch (error) {
|
|
1723
|
-
errors.push(`Failed to transfer notes from ${sourceID}: ${error}`);
|
|
1724
|
-
}
|
|
1725
1864
|
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1865
|
+
// Transfer tags
|
|
1866
|
+
try {
|
|
1867
|
+
const tags = this.getItemTags(sourceID);
|
|
1868
|
+
for (const tag of tags) {
|
|
1869
|
+
this.addTagToItem(targetItemID, tag.name, tag.type);
|
|
1870
|
+
tagsTransferred++;
|
|
1871
|
+
}
|
|
1872
|
+
} catch (error) {
|
|
1873
|
+
errors.push(`Failed to transfer tags from ${sourceID}: ${error}`);
|
|
1732
1874
|
}
|
|
1733
|
-
|
|
1734
|
-
|
|
1875
|
+
|
|
1876
|
+
// Transfer attachments (update parentItemID)
|
|
1877
|
+
try {
|
|
1878
|
+
const attachments = this.queryAll(`
|
|
1879
|
+
SELECT itemID FROM itemAttachments WHERE parentItemID = ?
|
|
1880
|
+
`, [sourceID]);
|
|
1881
|
+
|
|
1882
|
+
for (const att of attachments) {
|
|
1883
|
+
this.execute(`
|
|
1884
|
+
UPDATE itemAttachments SET parentItemID = ? WHERE itemID = ?
|
|
1885
|
+
`, [targetItemID, att.itemID]);
|
|
1886
|
+
attachmentsTransferred++;
|
|
1887
|
+
}
|
|
1888
|
+
} catch (error) {
|
|
1889
|
+
errors.push(`Failed to transfer attachments from ${sourceID}: ${error}`);
|
|
1890
|
+
}
|
|
1891
|
+
}
|
|
1892
|
+
|
|
1893
|
+
this.commitTransaction();
|
|
1894
|
+
|
|
1895
|
+
if (!this.readonly) {
|
|
1896
|
+
this.save();
|
|
1735
1897
|
}
|
|
1898
|
+
} catch (error) {
|
|
1899
|
+
this.rollbackTransaction();
|
|
1900
|
+
errors.push(`Transaction failed: ${error}`);
|
|
1901
|
+
return {
|
|
1902
|
+
success: false,
|
|
1903
|
+
transferred: { notes: 0, tags: 0, attachments: 0 },
|
|
1904
|
+
errors
|
|
1905
|
+
};
|
|
1736
1906
|
}
|
|
1737
1907
|
|
|
1738
1908
|
return {
|
|
1739
1909
|
success: errors.length === 0,
|
|
1740
1910
|
transferred: {
|
|
1741
1911
|
notes: notesTransferred,
|
|
1742
|
-
tags: tagsTransferred
|
|
1912
|
+
tags: tagsTransferred,
|
|
1913
|
+
attachments: attachmentsTransferred
|
|
1743
1914
|
},
|
|
1744
1915
|
errors
|
|
1745
1916
|
};
|