diff --git a/internal/discorddesktop/import.go b/internal/discorddesktop/import.go index b304a36d..d7f1ed75 100644 --- a/internal/discorddesktop/import.go +++ b/internal/discorddesktop/import.go @@ -118,7 +118,7 @@ type scanTotals struct { type unresolvedMessages map[string]string -const wiretapFileIndexScope = "wiretap:file_index:v1" +const wiretapFileIndexScope = "wiretap:file_index:v2" const ( fileStatusImported = "imported" @@ -686,7 +686,7 @@ func checkpointScannedCandidates(ctx context.Context, st *store.Store, opts Opti return err } for _, candidate := range candidates { - state.current[candidate.relKey] = importedFingerprint(candidate.fingerprint) + state.current[candidate.relKey] = skippedFingerprint(candidate.fingerprint) } if err := saveFileIndex(ctx, st, opts, state.current); err != nil { return err diff --git a/internal/discorddesktop/import_helpers_test.go b/internal/discorddesktop/import_helpers_test.go index 911705dc..1725a547 100644 --- a/internal/discorddesktop/import_helpers_test.go +++ b/internal/discorddesktop/import_helpers_test.go @@ -172,6 +172,7 @@ func TestSnapshotFinalizeAndCommitBranches(t *testing.T) { require.NoError(t, checkpointScannedCandidates(ctx, s, Options{DryRun: true}, state, candidates, stats)) require.NoError(t, checkpointScannedCandidates(ctx, s, Options{}, state, candidates, stats)) + require.False(t, isImportedFingerprint(state.current["Cache_Data/entry"])) } func TestRouteHintCollectionBranches(t *testing.T) { diff --git a/internal/discorddesktop/import_pipeline_test.go b/internal/discorddesktop/import_pipeline_test.go index d466f8d4..522eaad2 100644 --- a/internal/discorddesktop/import_pipeline_test.go +++ b/internal/discorddesktop/import_pipeline_test.go @@ -231,8 +231,22 @@ func TestImportCheckpointsUnresolvableRouteBearingCacheMisses(t *testing.T) { stats, err = Import(ctx, st, Options{Path: dir}) require.NoError(t, err) - require.Equal(t, 0, stats.FilesScanned) - require.Equal(t, 1, stats.FilesUnchanged) + require.Equal(t, 1, stats.FilesScanned) + require.Equal(t, 1, stats.SkippedMessages) + require.Equal(t, 0, stats.FilesUnchanged) + + require.NoError(t, os.WriteFile(filepath.Join(cachePath, "entry_001"), bytesf(`https://discord.com/channels/999999999999999996/%s +{"id":"%s","guild_id":"999999999999999996","type":0,"name":"later-resolved"} +`, channelID, channelID), 0o600)) + stats, err = Import(ctx, st, Options{Path: dir}) + require.NoError(t, err) + require.Equal(t, 2, stats.FilesScanned) + require.Equal(t, 1, stats.Messages) + + results, err = st.SearchMessages(ctx, store.SearchOptions{Query: "permanent unresolved", Limit: 10}) + require.NoError(t, err) + require.Len(t, results, 1) + require.Equal(t, "later-resolved", results[0].ChannelName) } func TestImportDoesNotAppendEventsForSkippedMixedBatch(t *testing.T) { @@ -269,8 +283,8 @@ https://discord.com/api/v9/channels/%s/messages?limit=50 stats, err = Import(ctx, st, Options{Path: dir}) require.NoError(t, err) - require.Equal(t, 0, stats.FilesScanned) - require.Equal(t, 1, stats.FilesUnchanged) + require.Equal(t, 1, stats.FilesScanned) + require.Equal(t, 0, stats.FilesUnchanged) requireMessageCount(t, ctx, st, "message_events", 0) }