diff --git a/CadSearchGui/Indexer.cs b/CadSearchGui/Indexer.cs index e04bc1e..c7c74c6 100644 --- a/CadSearchGui/Indexer.cs +++ b/CadSearchGui/Indexer.cs @@ -65,9 +65,25 @@ public static class Indexer schemaCmd.ExecuteNonQuery(); } + // Le cartelle "temp_*" (temp_paris, temp_davide, temp_studi esterni, ...) sono lavori + // personali/temporanei: contengono spesso copie datate o versioni scollegate di codici + // che esistono ANCHE nel resto della share, con lo stesso codice ma contenuto diverso. + // Un .asm nella struttura "ufficiale" può referenziare per coincidenza numerica un file + // dentro una di queste cartelle (vedi docs/formato-asm.md, falso positivo su + // "2502020809"), trascinando dentro un intero assieme di un progetto scollegato. Vanno + // escluse a monte, non solo filtrate caso per caso nelle singole query. + using (var deleteTempCmd = connection.CreateCommand()) + { + deleteTempCmd.CommandText = @"DELETE FROM files WHERE cartella_radice LIKE 'temp\_%' ESCAPE '\'"; + deleteTempCmd.ExecuteNonQuery(); + } + // Indicizza tutte le cartelle di primo livello sotto la radice (non un elenco fisso), // così una nuova cartella creata sulla share entra nell'indice senza modificare il codice. - var cartelleRadice = Directory.GetDirectories(root).Select(p => Path.GetFileName(p)!).ToArray(); + var cartelleRadice = Directory.GetDirectories(root) + .Select(p => Path.GetFileName(p)!) + .Where(c => !c.StartsWith("temp_", StringComparison.OrdinalIgnoreCase)) + .ToArray(); var previsti = new Dictionary(); foreach (var cartella in cartelleRadice)