refactor: included checkifnull function, added sql schema for the signature database
This commit is contained in:
@@ -47,8 +47,6 @@ foreach (string commandLineArg in commandLineArgs)
|
||||
}
|
||||
}
|
||||
|
||||
tosecXML = "/Users/michaelgreen/Downloads/TOSEC - DAT Pack - Complete (3764) (TOSEC-v2023-01-23)/TOSEC";
|
||||
|
||||
// check if configPath is valid and create it if not
|
||||
if (!Directory.Exists(configPath))
|
||||
{
|
||||
@@ -98,78 +96,15 @@ if (Directory.Exists(tosecXML))
|
||||
{
|
||||
sql = "SELECT * FROM signatures_sources WHERE sourcemd5=@sourcemd5";
|
||||
dbDict = new Dictionary<string, object>();
|
||||
if (tosecObject.Name != null)
|
||||
{
|
||||
dbDict.Add("name", tosecObject.Name);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("name", "");
|
||||
}
|
||||
if (tosecObject.Description != null)
|
||||
{
|
||||
dbDict.Add("description", tosecObject.Description);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("description", "");
|
||||
}
|
||||
if (tosecObject.Category != null)
|
||||
{
|
||||
dbDict.Add("category", tosecObject.Category);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("category", "");
|
||||
}
|
||||
if (tosecObject.Version != null)
|
||||
{
|
||||
dbDict.Add("version", tosecObject.Version);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("version", "");
|
||||
}
|
||||
if (tosecObject.Author != null)
|
||||
{
|
||||
dbDict.Add("author", tosecObject.Author);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("author", "");
|
||||
}
|
||||
if (tosecObject.Email != null)
|
||||
{
|
||||
dbDict.Add("email", tosecObject.Email);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("email", "");
|
||||
}
|
||||
if (tosecObject.Homepage != null)
|
||||
{
|
||||
dbDict.Add("homepage", tosecObject.Homepage);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("homepage", "");
|
||||
}
|
||||
if (tosecObject.Url != null)
|
||||
{
|
||||
dbDict.Add("uri", tosecObject.Url.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("uri", "");
|
||||
}
|
||||
if (tosecObject.SourceType != null)
|
||||
{
|
||||
dbDict.Add("sourcetype", tosecObject.SourceType);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("sourcetype", "");
|
||||
}
|
||||
dbDict.Add("name", Common.ReturnValueIfNull(tosecObject.Name, ""));
|
||||
dbDict.Add("description", Common.ReturnValueIfNull(tosecObject.Description, ""));
|
||||
dbDict.Add("category", Common.ReturnValueIfNull(tosecObject.Category, ""));
|
||||
dbDict.Add("version", Common.ReturnValueIfNull(tosecObject.Version, ""));
|
||||
dbDict.Add("author", Common.ReturnValueIfNull(tosecObject.Author, ""));
|
||||
dbDict.Add("email", Common.ReturnValueIfNull(tosecObject.Email, ""));
|
||||
dbDict.Add("homepage", Common.ReturnValueIfNull(tosecObject.Homepage, ""));
|
||||
dbDict.Add("uri", Common.ReturnValueIfNull(tosecObject.Url, ""));
|
||||
dbDict.Add("sourcetype", Common.ReturnValueIfNull(tosecObject.SourceType, ""));
|
||||
dbDict.Add("sourcemd5", tosecObject.SourceMd5);
|
||||
dbDict.Add("sourcesha1", tosecObject.SourceSHA1);
|
||||
|
||||
@@ -201,87 +136,18 @@ if (Directory.Exists(tosecXML))
|
||||
|
||||
// set up game dictionary
|
||||
dbDict = new Dictionary<string, object>();
|
||||
if (gameObject.Name != null)
|
||||
{
|
||||
dbDict.Add("name", gameObject.Name);
|
||||
} else
|
||||
{
|
||||
dbDict.Add("name", "");
|
||||
}
|
||||
if (gameObject.Description != null)
|
||||
{
|
||||
dbDict.Add("description", gameObject.Description);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("description", "");
|
||||
}
|
||||
if (gameObject.Year != null)
|
||||
{
|
||||
dbDict.Add("year", gameObject.Year);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("year", "");
|
||||
}
|
||||
if (gameObject.Publisher != null)
|
||||
{
|
||||
dbDict.Add("publisher", gameObject.Publisher);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("publisher", "");
|
||||
}
|
||||
dbDict.Add("name", Common.ReturnValueIfNull(gameObject.Name, ""));
|
||||
dbDict.Add("description", Common.ReturnValueIfNull(gameObject.Description, ""));
|
||||
dbDict.Add("year", Common.ReturnValueIfNull(gameObject.Year, ""));
|
||||
dbDict.Add("publisher", Common.ReturnValueIfNull(gameObject.Publisher, ""));
|
||||
dbDict.Add("demo", (int)gameObject.Demo);
|
||||
if (gameObject.System != null)
|
||||
{
|
||||
dbDict.Add("system", gameObject.System);
|
||||
dbDict.Add("platform", gameObject.System);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("system", "");
|
||||
}
|
||||
if (gameObject.SystemVariant != null)
|
||||
{
|
||||
dbDict.Add("systemvariant", gameObject.SystemVariant);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("systemvariant", "");
|
||||
}
|
||||
if (gameObject.Video != null)
|
||||
{
|
||||
dbDict.Add("video", gameObject.Video);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("video", "");
|
||||
}
|
||||
if (gameObject.Country != null)
|
||||
{
|
||||
dbDict.Add("country", gameObject.Country);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("country", "");
|
||||
}
|
||||
if (gameObject.Language != null)
|
||||
{
|
||||
dbDict.Add("language", gameObject.Language);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("language", "");
|
||||
}
|
||||
if (gameObject.Copyright != null)
|
||||
{
|
||||
dbDict.Add("copyright", gameObject.Copyright);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("copyright", "");
|
||||
}
|
||||
dbDict.Add("system", Common.ReturnValueIfNull(gameObject.System, ""));
|
||||
dbDict.Add("platform", Common.ReturnValueIfNull(gameObject.System, ""));
|
||||
dbDict.Add("systemvariant", Common.ReturnValueIfNull(gameObject.SystemVariant, ""));
|
||||
dbDict.Add("video", Common.ReturnValueIfNull(gameObject.Video, ""));
|
||||
dbDict.Add("country", Common.ReturnValueIfNull(gameObject.Country, ""));
|
||||
dbDict.Add("language", Common.ReturnValueIfNull(gameObject.Language, ""));
|
||||
dbDict.Add("copyright", Common.ReturnValueIfNull(gameObject.Copyright, ""));
|
||||
|
||||
// store platform
|
||||
int gameSystem = 0;
|
||||
@@ -354,46 +220,13 @@ if (Directory.Exists(tosecXML))
|
||||
sql = "SELECT * FROM signatures_roms WHERE gameid=@gameid AND md5=@md5";
|
||||
dbDict = new Dictionary<string, object>();
|
||||
dbDict.Add("gameid", gameId);
|
||||
if (romObject.Name != null)
|
||||
{
|
||||
dbDict.Add("name", romObject.Name);
|
||||
} else
|
||||
{
|
||||
dbDict.Add("name", "");
|
||||
}
|
||||
if (romObject.Size != null)
|
||||
{
|
||||
dbDict.Add("size", romObject.Size);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("size", 0);
|
||||
}
|
||||
if (romObject.Crc != null)
|
||||
{
|
||||
dbDict.Add("crc", romObject.Crc);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("name", "");
|
||||
}
|
||||
dbDict.Add("name", Common.ReturnValueIfNull(romObject.Name, ""));
|
||||
dbDict.Add("size", Common.ReturnValueIfNull(romObject.Size, ""));
|
||||
dbDict.Add("crc", Common.ReturnValueIfNull(romObject.Crc, ""));
|
||||
dbDict.Add("md5", romObject.Md5);
|
||||
if (romObject.Sha1 != null)
|
||||
{
|
||||
dbDict.Add("sha1", romObject.Sha1);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("sha1", "");
|
||||
}
|
||||
if (romObject.DevelopmentStatus != null)
|
||||
{
|
||||
dbDict.Add("developmentstatus", romObject.DevelopmentStatus);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("developmentstatus", "");
|
||||
}
|
||||
dbDict.Add("sha1", Common.ReturnValueIfNull(romObject.Sha1, ""));
|
||||
dbDict.Add("developmentstatus", Common.ReturnValueIfNull(romObject.DevelopmentStatus, ""));
|
||||
|
||||
if (romObject.flags != null)
|
||||
{
|
||||
if (romObject.flags.Count > 0)
|
||||
@@ -401,30 +234,16 @@ if (Directory.Exists(tosecXML))
|
||||
dbDict.Add("flags", Newtonsoft.Json.JsonConvert.SerializeObject(romObject.flags));
|
||||
} else
|
||||
{
|
||||
dbDict.Add("flags", "{ }");
|
||||
dbDict.Add("flags", "[ ]");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("flags", "{ }");
|
||||
dbDict.Add("flags", "[ ]");
|
||||
}
|
||||
dbDict.Add("romtype", (int)romObject.RomType);
|
||||
if (romObject.RomTypeMedia != null)
|
||||
{
|
||||
dbDict.Add("romtypemedia", romObject.RomTypeMedia);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("romtypemedia", "");
|
||||
}
|
||||
if (romObject.MediaLabel != null)
|
||||
{
|
||||
dbDict.Add("medialabel", romObject.MediaLabel);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbDict.Add("medialabel", "");
|
||||
}
|
||||
dbDict.Add("romtypemedia", Common.ReturnValueIfNull(romObject.RomTypeMedia, ""));
|
||||
dbDict.Add("medialabel", Common.ReturnValueIfNull(romObject.MediaLabel, ""));
|
||||
|
||||
sigDB = db.ExecuteCMD(sql, dbDict);
|
||||
if (sigDB.Rows.Count == 0)
|
||||
|
24
gaseous-tools/Common.cs
Normal file
24
gaseous-tools/Common.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
namespace gaseous_tools
|
||||
{
|
||||
public class Common
|
||||
{
|
||||
/// <summary>
|
||||
/// Returns IfNullValue if the ObjectToCheck is null
|
||||
/// </summary>
|
||||
/// <param name="ObjectToCheck">Any nullable object to check for null</param>
|
||||
/// <param name="IfNullValue">Any object to return if ObjectToCheck is null</param>
|
||||
/// <returns></returns>
|
||||
static public object ReturnValueIfNull(object? ObjectToCheck, object IfNullValue)
|
||||
{
|
||||
if (ObjectToCheck == null)
|
||||
{
|
||||
return IfNullValue;
|
||||
} else
|
||||
{
|
||||
return ObjectToCheck;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
144
gaseous-tools/Database/MySQL/gaseous.sql
Normal file
144
gaseous-tools/Database/MySQL/gaseous.sql
Normal file
@@ -0,0 +1,144 @@
|
||||
-- MySQL dump 10.13 Distrib 8.0.32, for macos13.0 (arm64)
|
||||
--
|
||||
-- Host: localhost Database: gaseous
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 8.0.32
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!50503 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `signatures_games`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `signatures_games`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `signatures_games` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(255) DEFAULT NULL,
|
||||
`description` varchar(255) DEFAULT NULL,
|
||||
`year` varchar(15) DEFAULT NULL,
|
||||
`publisherid` int DEFAULT NULL,
|
||||
`demo` int DEFAULT NULL,
|
||||
`systemid` int DEFAULT NULL,
|
||||
`systemvariant` varchar(100) DEFAULT NULL,
|
||||
`video` varchar(10) DEFAULT NULL,
|
||||
`country` varchar(5) DEFAULT NULL,
|
||||
`language` varchar(5) DEFAULT NULL,
|
||||
`copyright` varchar(15) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `id_UNIQUE` (`id`),
|
||||
KEY `publisher_idx` (`publisherid`),
|
||||
KEY `system_idx` (`systemid`),
|
||||
KEY `ingest_idx` (`name`,`year`,`publisherid`,`systemid`,`country`,`language`) USING BTREE,
|
||||
CONSTRAINT `publisher` FOREIGN KEY (`publisherid`) REFERENCES `signatures_publishers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT `system` FOREIGN KEY (`systemid`) REFERENCES `signatures_platforms` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1134279 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `signatures_platforms`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `signatures_platforms`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `signatures_platforms` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`platform` varchar(100) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `idsignatures_platforms_UNIQUE` (`id`),
|
||||
KEY `platforms_idx` (`platform`,`id`) USING BTREE
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1091 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `signatures_publishers`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `signatures_publishers`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `signatures_publishers` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`publisher` varchar(100) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `id_UNIQUE` (`id`),
|
||||
KEY `publisher_idx` (`publisher`,`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=71898 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `signatures_roms`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `signatures_roms`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `signatures_roms` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`gameid` int DEFAULT NULL,
|
||||
`name` varchar(255) DEFAULT NULL,
|
||||
`size` bigint DEFAULT NULL,
|
||||
`crc` varchar(20) DEFAULT NULL,
|
||||
`md5` varchar(100) DEFAULT NULL,
|
||||
`sha1` varchar(100) DEFAULT NULL,
|
||||
`developmentstatus` varchar(100) DEFAULT NULL,
|
||||
`flags` json DEFAULT NULL,
|
||||
`romtype` int DEFAULT NULL,
|
||||
`romtypemedia` varchar(100) DEFAULT NULL,
|
||||
`medialabel` varchar(100) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `id_UNIQUE` (`id`,`gameid`) USING BTREE,
|
||||
KEY `gameid_idx` (`gameid`),
|
||||
KEY `flags_idx` ((cast(`flags` as char(255) array))),
|
||||
CONSTRAINT `gameid` FOREIGN KEY (`gameid`) REFERENCES `signatures_games` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=2587448 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Table structure for table `signatures_sources`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `signatures_sources`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `signatures_sources` (
|
||||
`id` int NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(255) DEFAULT NULL,
|
||||
`description` varchar(255) DEFAULT NULL,
|
||||
`category` varchar(45) DEFAULT NULL,
|
||||
`version` varchar(45) DEFAULT NULL,
|
||||
`author` varchar(255) DEFAULT NULL,
|
||||
`email` varchar(45) DEFAULT NULL,
|
||||
`homepage` varchar(45) DEFAULT NULL,
|
||||
`url` varchar(45) DEFAULT NULL,
|
||||
`sourcetype` varchar(45) DEFAULT NULL,
|
||||
`sourcemd5` varchar(45) DEFAULT NULL,
|
||||
`sourcesha1` varchar(45) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `id_UNIQUE` (`id`),
|
||||
KEY `sourcemd5_idx` (`sourcemd5`,`id`) USING BTREE,
|
||||
KEY `sourcesha1_idx` (`sourcesha1`,`id`) USING BTREE
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=5968 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2023-02-26 23:40:56
|
@@ -10,4 +10,12 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MySql.Data" Version="8.0.32" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Remove="Database\" />
|
||||
<None Remove="Database\MySQL\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Database\" />
|
||||
<Folder Include="Database\MySQL\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
Reference in New Issue
Block a user