Fraser commited on
Commit
09cc536
Β·
1 Parent(s): c0fc1ad
Files changed (1) hide show
  1. src/lib/db/trainerScanning.ts +14 -38
src/lib/db/trainerScanning.ts CHANGED
@@ -7,13 +7,6 @@ export async function initializeTrainerScanProgress(imagePaths: string[]): Promi
7
  console.log('πŸ” initializeTrainerScanProgress: Starting with', imagePaths.length, 'paths');
8
  console.log('πŸ” initializeTrainerScanProgress: First few paths:', imagePaths.slice(0, 3));
9
 
10
- console.log('πŸ” initializeTrainerScanProgress: Creating transaction...');
11
- const tx = db.transaction([TRAINER_SCAN_STORE], 'readwrite');
12
- console.log('πŸ” initializeTrainerScanProgress: Transaction created');
13
-
14
- const store = tx.objectStore(TRAINER_SCAN_STORE);
15
- console.log('πŸ” initializeTrainerScanProgress: Got object store');
16
-
17
  let processedCount = 0;
18
  let skippedCount = 0;
19
 
@@ -67,9 +60,9 @@ export async function initializeTrainerScanProgress(imagePaths: string[]): Promi
67
  const remoteUrl = `https://huggingface.co/datasets/Fraser/piclets/resolve/main/${imagePath}`;
68
  console.log(`πŸ” initializeTrainerScanProgress: Remote URL: ${remoteUrl}`);
69
 
70
- // Check if this path already exists to avoid duplicates
71
  console.log(`πŸ” initializeTrainerScanProgress: Checking for existing record...`);
72
- const existing = await store.get(imagePath);
73
  console.log(`πŸ” initializeTrainerScanProgress: Existing record:`, existing ? 'found' : 'not found');
74
 
75
  if (!existing) {
@@ -82,7 +75,7 @@ export async function initializeTrainerScanProgress(imagePaths: string[]): Promi
82
  };
83
 
84
  console.log(`πŸ” initializeTrainerScanProgress: Adding record:`, progressRecord);
85
- await store.add(progressRecord);
86
  console.log(`πŸ” initializeTrainerScanProgress: Record added successfully`);
87
  processedCount++;
88
  } else {
@@ -110,10 +103,6 @@ export async function initializeTrainerScanProgress(imagePaths: string[]): Promi
110
 
111
  console.log(`βœ… Trainer scan initialization complete: ${processedCount} records processed, ${skippedCount} skipped`);
112
 
113
- console.log('πŸ” initializeTrainerScanProgress: Completing transaction...');
114
- await tx.complete;
115
- console.log('πŸ” initializeTrainerScanProgress: Transaction completed successfully');
116
-
117
  } catch (error) {
118
  console.error('❌ initializeTrainerScanProgress: Fatal error during initialization:', error);
119
  console.error('❌ initializeTrainerScanProgress: Error details:', {
@@ -126,22 +115,13 @@ export async function initializeTrainerScanProgress(imagePaths: string[]): Promi
126
 
127
  // Get next pending image to process
128
  export async function getNextPendingImage(): Promise<TrainerScanProgress | null> {
129
- const tx = db.transaction([TRAINER_SCAN_STORE], 'readonly');
130
- const store = tx.objectStore(TRAINER_SCAN_STORE);
131
-
132
- // Get all pending records
133
- const pendingRecords: TrainerScanProgress[] = [];
134
- let cursor = await store.openCursor();
135
-
136
- while (cursor) {
137
- if (cursor.value.status === 'pending') {
138
- pendingRecords.push(cursor.value);
139
- }
140
- cursor = await cursor.continue();
141
  }
142
-
143
- // Return the first pending record (if any)
144
- return pendingRecords.length > 0 ? pendingRecords[0] : null;
145
  }
146
 
147
  // Update scan progress status
@@ -149,16 +129,12 @@ export async function updateScanProgress(
149
  imagePath: string,
150
  updates: Partial<Omit<TrainerScanProgress, 'id' | 'imagePath'>>
151
  ): Promise<void> {
152
- const tx = db.transaction([TRAINER_SCAN_STORE], 'readwrite');
153
- const store = tx.objectStore(TRAINER_SCAN_STORE);
154
-
155
- const existing = await store.get(imagePath);
156
- if (existing) {
157
- const updated = { ...existing, ...updates };
158
- await store.put(updated);
159
  }
160
-
161
- await tx.complete;
162
  }
163
 
164
  // Mark image processing as started
 
7
  console.log('πŸ” initializeTrainerScanProgress: Starting with', imagePaths.length, 'paths');
8
  console.log('πŸ” initializeTrainerScanProgress: First few paths:', imagePaths.slice(0, 3));
9
 
 
 
 
 
 
 
 
10
  let processedCount = 0;
11
  let skippedCount = 0;
12
 
 
60
  const remoteUrl = `https://huggingface.co/datasets/Fraser/piclets/resolve/main/${imagePath}`;
61
  console.log(`πŸ” initializeTrainerScanProgress: Remote URL: ${remoteUrl}`);
62
 
63
+ // Check if this path already exists to avoid duplicates (using Dexie syntax)
64
  console.log(`πŸ” initializeTrainerScanProgress: Checking for existing record...`);
65
+ const existing = await db.trainerScanProgress.get(imagePath);
66
  console.log(`πŸ” initializeTrainerScanProgress: Existing record:`, existing ? 'found' : 'not found');
67
 
68
  if (!existing) {
 
75
  };
76
 
77
  console.log(`πŸ” initializeTrainerScanProgress: Adding record:`, progressRecord);
78
+ await db.trainerScanProgress.add(progressRecord);
79
  console.log(`πŸ” initializeTrainerScanProgress: Record added successfully`);
80
  processedCount++;
81
  } else {
 
103
 
104
  console.log(`βœ… Trainer scan initialization complete: ${processedCount} records processed, ${skippedCount} skipped`);
105
 
 
 
 
 
106
  } catch (error) {
107
  console.error('❌ initializeTrainerScanProgress: Fatal error during initialization:', error);
108
  console.error('❌ initializeTrainerScanProgress: Error details:', {
 
115
 
116
  // Get next pending image to process
117
  export async function getNextPendingImage(): Promise<TrainerScanProgress | null> {
118
+ try {
119
+ const pendingRecord = await db.trainerScanProgress.where('status').equals('pending').first();
120
+ return pendingRecord || null;
121
+ } catch (error) {
122
+ console.error('❌ Failed to get next pending image:', error);
123
+ return null;
 
 
 
 
 
 
124
  }
 
 
 
125
  }
126
 
127
  // Update scan progress status
 
129
  imagePath: string,
130
  updates: Partial<Omit<TrainerScanProgress, 'id' | 'imagePath'>>
131
  ): Promise<void> {
132
+ try {
133
+ await db.trainerScanProgress.update(imagePath, updates);
134
+ } catch (error) {
135
+ console.error(`❌ Failed to update scan progress for ${imagePath}:`, error);
136
+ throw error;
 
 
137
  }
 
 
138
  }
139
 
140
  // Mark image processing as started