mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
[RombaSharp] Romba db fixes
This commit is contained in:
@@ -230,6 +230,7 @@ namespace SabreTools
|
|||||||
private static void DisplayDBStats()
|
private static void DisplayDBStats()
|
||||||
{
|
{
|
||||||
SqliteConnection dbc = new SqliteConnection(_connectionString);
|
SqliteConnection dbc = new SqliteConnection(_connectionString);
|
||||||
|
dbc.Open();
|
||||||
|
|
||||||
// Total uncompressed size
|
// Total uncompressed size
|
||||||
string query = "SELECT SUM(size) FROM data";
|
string query = "SELECT SUM(size) FROM data";
|
||||||
@@ -242,12 +243,12 @@ namespace SabreTools
|
|||||||
_logger.User("Total files: " + (long)slc.ExecuteScalar());
|
_logger.User("Total files: " + (long)slc.ExecuteScalar());
|
||||||
|
|
||||||
// Total number of files that exist
|
// Total number of files that exist
|
||||||
query = "SELECT COUNT(*) FROM data WHERE exists=1";
|
query = "SELECT COUNT(*) FROM data WHERE indepot=1";
|
||||||
slc = new SqliteCommand(query, dbc);
|
slc = new SqliteCommand(query, dbc);
|
||||||
_logger.User("Total files in depots: " + (long)slc.ExecuteScalar());
|
_logger.User("Total files in depots: " + (long)slc.ExecuteScalar());
|
||||||
|
|
||||||
// Total number of files that are missing
|
// Total number of files that are missing
|
||||||
query = "SELECT COUNT(*) FROM data WHERE exists=0";
|
query = "SELECT COUNT(*) FROM data WHERE indepot=0";
|
||||||
slc = new SqliteCommand(query, dbc);
|
slc = new SqliteCommand(query, dbc);
|
||||||
_logger.User("Total files missing: " + (long)slc.ExecuteScalar());
|
_logger.User("Total files missing: " + (long)slc.ExecuteScalar());
|
||||||
|
|
||||||
@@ -313,7 +314,7 @@ namespace SabreTools
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Populate or refresh the database information
|
/// Populate or refresh the database information
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>Each hash has the following attributes: size, crc, md5, sha-1, dathash, existss</remarks>
|
/// <remarks>Each hash has the following attributes: size, crc, md5, sha-1, dathash, indepot</remarks>
|
||||||
private static void RefreshDatabase()
|
private static void RefreshDatabase()
|
||||||
{
|
{
|
||||||
// Make sure the db is set
|
// Make sure the db is set
|
||||||
@@ -344,9 +345,11 @@ namespace SabreTools
|
|||||||
// Create a List of dat hashes in the database (SHA-1)
|
// Create a List of dat hashes in the database (SHA-1)
|
||||||
List<string> databaseDats = new List<string>();
|
List<string> databaseDats = new List<string>();
|
||||||
|
|
||||||
// Populate the List from the database
|
|
||||||
string query = "SELECT UNIQUE hash FROM dats";
|
|
||||||
SqliteConnection dbc = new SqliteConnection(_connectionString);
|
SqliteConnection dbc = new SqliteConnection(_connectionString);
|
||||||
|
dbc.Open();
|
||||||
|
|
||||||
|
// Populate the List from the database
|
||||||
|
string query = "SELECT hash FROM dats";
|
||||||
SqliteCommand slc = new SqliteCommand(query, dbc);
|
SqliteCommand slc = new SqliteCommand(query, dbc);
|
||||||
SqliteDataReader sldr = slc.ExecuteReader();
|
SqliteDataReader sldr = slc.ExecuteReader();
|
||||||
if (sldr.HasRows)
|
if (sldr.HasRows)
|
||||||
@@ -399,9 +402,9 @@ namespace SabreTools
|
|||||||
foreach (Rom rom in tempdat.Files[romkey])
|
foreach (Rom rom in tempdat.Files[romkey])
|
||||||
{
|
{
|
||||||
query = "SELECT id FROM data WHERE size=" + rom.Size + " AND ("
|
query = "SELECT id FROM data WHERE size=" + rom.Size + " AND ("
|
||||||
+ "(crc=\"" + rom.CRC + "\" OR value=\"null\")"
|
+ "(crc=\"" + rom.CRC + "\" OR crc=\"null\")"
|
||||||
+ " AND (md5=\"" + rom.MD5 + "\" OR value=\"null\")"
|
+ " AND (md5=\"" + rom.MD5 + "\" OR md5=\"null\")"
|
||||||
+ " AND (sha1=\"" + rom.SHA1 + "\" OR value=\"null\"))";
|
+ " AND (sha1=\"" + rom.SHA1 + "\" OR sha1=\"null\"))";
|
||||||
slc = new SqliteCommand(query, dbc);
|
slc = new SqliteCommand(query, dbc);
|
||||||
sldr = slc.ExecuteReader();
|
sldr = slc.ExecuteReader();
|
||||||
|
|
||||||
@@ -409,7 +412,7 @@ namespace SabreTools
|
|||||||
if (sldr.HasRows)
|
if (sldr.HasRows)
|
||||||
{
|
{
|
||||||
sldr.Read();
|
sldr.Read();
|
||||||
string id = sldr.GetString(0);
|
long id = sldr.GetInt64(0);
|
||||||
|
|
||||||
string squery = "SELECT * FROM dats WHERE id=" + id;
|
string squery = "SELECT * FROM dats WHERE id=" + id;
|
||||||
SqliteCommand sslc = new SqliteCommand(squery, dbc);
|
SqliteCommand sslc = new SqliteCommand(squery, dbc);
|
||||||
@@ -430,18 +433,18 @@ namespace SabreTools
|
|||||||
// If it doesn't exist, add the hash and the dat hash for a new id
|
// If it doesn't exist, add the hash and the dat hash for a new id
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string squery = "INSERT INTO data (size, crc, md5, sha1, exists) VALUES"
|
string squery = "INSERT INTO data (size, crc, md5, sha1, indepot) VALUES ("
|
||||||
+ " size=" + rom.Size + ","
|
+ rom.Size + ","
|
||||||
+ " crc=\"" + (rom.CRC == "" ? "null" : rom.CRC) + "\","
|
+ "\"" + (rom.CRC == "" ? "null" : rom.CRC) + "\","
|
||||||
+ " md5=\"" + (rom.MD5 == "" ? "null" : rom.MD5) + "\","
|
+ "\"" + (rom.MD5 == "" ? "null" : rom.MD5) + "\","
|
||||||
+ " sha1=\"" + (rom.SHA1 == "" ? "null" : rom.SHA1) + "\","
|
+ "\"" + (rom.SHA1 == "" ? "null" : rom.SHA1) + "\","
|
||||||
+ " exists=0)";
|
+ "0)";
|
||||||
SqliteCommand sslc = new SqliteCommand(squery, dbc);
|
SqliteCommand sslc = new SqliteCommand(squery, dbc);
|
||||||
sslc.ExecuteNonQuery();
|
sslc.ExecuteNonQuery();
|
||||||
|
|
||||||
long id = -1;
|
long id = -1;
|
||||||
|
|
||||||
squery = "SELECT last_insertConstants.Rowid()";
|
squery = @"select last_insert_rowid()";
|
||||||
sslc = new SqliteCommand(squery, dbc);
|
sslc = new SqliteCommand(squery, dbc);
|
||||||
id = (long)sslc.ExecuteScalar();
|
id = (long)sslc.ExecuteScalar();
|
||||||
|
|
||||||
|
|||||||
@@ -38,8 +38,10 @@ namespace SabreTools
|
|||||||
DatFile need = new DatFile();
|
DatFile need = new DatFile();
|
||||||
need.Files = new SortedDictionary<string, List<DatItem>>();
|
need.Files = new SortedDictionary<string, List<DatItem>>();
|
||||||
|
|
||||||
// Now that we have the Dats, add the files to the database
|
|
||||||
SqliteConnection dbc = new SqliteConnection(_connectionString);
|
SqliteConnection dbc = new SqliteConnection(_connectionString);
|
||||||
|
dbc.Open();
|
||||||
|
|
||||||
|
// Now that we have the Dats, add the files to the database
|
||||||
foreach (string key in df.Files.Keys)
|
foreach (string key in df.Files.Keys)
|
||||||
{
|
{
|
||||||
List<DatItem> datItems = df.Files[key];
|
List<DatItem> datItems = df.Files[key];
|
||||||
@@ -49,7 +51,7 @@ namespace SabreTools
|
|||||||
+ "(crc=\"" + rom.CRC + "\" OR value=\"null\")"
|
+ "(crc=\"" + rom.CRC + "\" OR value=\"null\")"
|
||||||
+ " AND (md5=\"" + rom.MD5 + "\" OR value=\"null\")"
|
+ " AND (md5=\"" + rom.MD5 + "\" OR value=\"null\")"
|
||||||
+ " AND (sha1=\"" + rom.SHA1 + "\" OR value=\"null\")"
|
+ " AND (sha1=\"" + rom.SHA1 + "\" OR value=\"null\")"
|
||||||
+ " AND exists=0";
|
+ " AND indepot=0";
|
||||||
SqliteCommand slc = new SqliteCommand(query, dbc);
|
SqliteCommand slc = new SqliteCommand(query, dbc);
|
||||||
SqliteDataReader sldr = slc.ExecuteReader();
|
SqliteDataReader sldr = slc.ExecuteReader();
|
||||||
|
|
||||||
@@ -57,9 +59,9 @@ namespace SabreTools
|
|||||||
if (sldr.HasRows)
|
if (sldr.HasRows)
|
||||||
{
|
{
|
||||||
sldr.Read();
|
sldr.Read();
|
||||||
string id = sldr.GetString(0);
|
long id = sldr.GetInt64(0);
|
||||||
|
|
||||||
string squery = "UPDATE data SET exists=1 WHERE id=" + id;
|
string squery = "UPDATE data SET indepot=1 WHERE id=" + id;
|
||||||
SqliteCommand sslc = new SqliteCommand(squery, dbc);
|
SqliteCommand sslc = new SqliteCommand(squery, dbc);
|
||||||
sslc.ExecuteNonQuery();
|
sslc.ExecuteNonQuery();
|
||||||
sslc.Dispose();
|
sslc.Dispose();
|
||||||
@@ -80,12 +82,12 @@ namespace SabreTools
|
|||||||
// If it doesn't exist, and we're not adding only needed files
|
// If it doesn't exist, and we're not adding only needed files
|
||||||
else if (!onlyNeeded)
|
else if (!onlyNeeded)
|
||||||
{
|
{
|
||||||
string squery = "INSERT INTO data (size, crc, md5, sha1, exists) VALUES"
|
string squery = "INSERT INTO data (size, crc, md5, sha1, indepot) VALUES ("
|
||||||
+ " size=" + rom.Size + ","
|
+ rom.Size + ","
|
||||||
+ " crc=\"" + (rom.CRC == "" ? "null" : rom.CRC) + "\","
|
+ "\"" + (rom.CRC == "" ? "null" : rom.CRC) + "\","
|
||||||
+ " md5=\"" + (rom.MD5 == "" ? "null" : rom.MD5) + "\","
|
+ "\"" + (rom.MD5 == "" ? "null" : rom.MD5) + "\","
|
||||||
+ " sha1=\"" + (rom.SHA1 == "" ? "null" : rom.SHA1) + "\","
|
+ "\"" + (rom.SHA1 == "" ? "null" : rom.SHA1) + "\","
|
||||||
+ " exists=1)";
|
+ "1)";
|
||||||
SqliteCommand sslc = new SqliteCommand(squery, dbc);
|
SqliteCommand sslc = new SqliteCommand(squery, dbc);
|
||||||
sslc.ExecuteNonQuery();
|
sslc.ExecuteNonQuery();
|
||||||
sslc.Dispose();
|
sslc.Dispose();
|
||||||
@@ -221,8 +223,10 @@ namespace SabreTools
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now, search for each of them and return true or false for each
|
|
||||||
SqliteConnection dbc = new SqliteConnection(_connectionString);
|
SqliteConnection dbc = new SqliteConnection(_connectionString);
|
||||||
|
dbc.Open();
|
||||||
|
|
||||||
|
// Now, search for each of them and return true or false for each
|
||||||
foreach (string input in crc)
|
foreach (string input in crc)
|
||||||
{
|
{
|
||||||
string query = "SELECT * FROM data WHERE crc=\"" + input + "\"";
|
string query = "SELECT * FROM data WHERE crc=\"" + input + "\"";
|
||||||
|
|||||||
@@ -73,12 +73,12 @@ namespace SabreTools.Helper
|
|||||||
{
|
{
|
||||||
string query = @"
|
string query = @"
|
||||||
CREATE TABLE IF NOT EXISTS data (
|
CREATE TABLE IF NOT EXISTS data (
|
||||||
'id' INTEGER NOT NULL
|
'id' INTEGER NOT NULL,
|
||||||
'size' INTEGER NOT NULL
|
'size' INTEGER NOT NULL,
|
||||||
'crc' TEXT NOT NULL
|
'crc' TEXT NOT NULL,
|
||||||
'md5' TEXT NOT NULL
|
'md5' TEXT NOT NULL,
|
||||||
'sha1' TEXT NOT NULL
|
'sha1' TEXT NOT NULL,
|
||||||
'exists' INTEGER NOT NULL
|
'indepot' INTEGER NOT NULL,
|
||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
)";
|
)";
|
||||||
SqliteCommand slc = new SqliteCommand(query, dbc);
|
SqliteCommand slc = new SqliteCommand(query, dbc);
|
||||||
@@ -86,8 +86,8 @@ CREATE TABLE IF NOT EXISTS data (
|
|||||||
|
|
||||||
query = @"
|
query = @"
|
||||||
CREATE TABLE IF NOT EXISTS dats (
|
CREATE TABLE IF NOT EXISTS dats (
|
||||||
'id' INTEGER NOT NULL
|
'id' INTEGER NOT NULL,
|
||||||
'hash' TEXT NOT NULL
|
'hash' TEXT NOT NULL,
|
||||||
PRIMARY KEY (id, hash)
|
PRIMARY KEY (id, hash)
|
||||||
)";
|
)";
|
||||||
slc = new SqliteCommand(query, dbc);
|
slc = new SqliteCommand(query, dbc);
|
||||||
|
|||||||
Reference in New Issue
Block a user