Fix duplicates check

This commit is contained in:
Guus Waals 2025-05-28 14:37:10 +08:00
parent a958b0268e
commit 8ac8951d8d
1 changed files with 8 additions and 37 deletions

View File

@ -199,8 +199,6 @@ public:
WITH all_addresses AS (
SELECT 'Functions' as table_name, name, address, filepath FROM Functions WHERE address != ''
UNION ALL
SELECT 'Imports' as table_name, name, address, filepath FROM Imports WHERE address != ''
UNION ALL
SELECT 'Globals' as table_name, name, address, filepath FROM Globals WHERE address != ''
)
SELECT address, COUNT(*) as count,
@ -262,30 +260,6 @@ public:
sqlite3_finalize(stmt);
}
// Check Imports table
const char *imports_sql = R"(
SELECT name, COUNT(*) as count,
GROUP_CONCAT(filepath, '; ') as filepaths
FROM Imports
GROUP BY name
HAVING COUNT(*) > 1
ORDER BY name;
)";
if (sqlite3_prepare_v2(db, imports_sql, -1, &stmt, nullptr) == SQLITE_OK) {
while (sqlite3_step(stmt) == SQLITE_ROW) {
found_duplicates = true;
const char *name = (const char *)sqlite3_column_text(stmt, 0);
int count = sqlite3_column_int(stmt, 1);
const char *filepaths = (const char *)sqlite3_column_text(stmt, 2);
spdlog::error(
"DUPLICATE IMPORT NAME: '{}' appears {} times in files: {}", name,
count, filepaths);
}
sqlite3_finalize(stmt);
}
// Check Globals table
const char *globals_sql = R"(
SELECT name, COUNT(*) as count,
@ -734,24 +708,21 @@ bool dumpTreeFile(const std::string &filepath) {
bool processDuplicates(DatabaseManager &db) {
spdlog::info("=== Checking for duplicate addresses ===");
bool found_address_duplicates = db.checkDuplicateAddresses();
if (found_address_duplicates) {
spdlog::error("Found duplicate addresses in the database!");
} else {
spdlog::info("No duplicate addresses found in the database.");
}
spdlog::info("=== Checking for duplicate names ===");
bool found_name_duplicates = db.checkDuplicateNames();
if (!found_address_duplicates && !found_name_duplicates) {
spdlog::info("No duplicates found in the database.");
return true;
}
if (found_address_duplicates) {
spdlog::error("Found duplicate addresses in the database!");
}
if (found_name_duplicates) {
spdlog::error("Found duplicate names in the database!");
} else {
spdlog::info("No duplicate names found in the database.");
}
return false; // Return false to indicate errors were found
return !found_address_duplicates && !found_name_duplicates;
}
int main(int argc, char *argv[]) {