Files
gaseous-server/gaseous-tools/Database/MySQL/gaseous-1000.sql
Michael Green bd7124a5be Expand the dat file ingestor to handle more formats (#84)
* MAME DAT's can now be imported, beginning of DB updates

* Fixed various database bugs that occur during upgrade from earlier versions

* Removed collation and MySQL specific options from database scripts
2023-09-06 07:52:11 +10:00

501 lines
16 KiB
SQL

DROP TABLE IF EXISTS `AgeRating`;
CREATE TABLE `AgeRating` (
`Id` bigint NOT NULL,
`Category` int DEFAULT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`ContentDescriptions` json DEFAULT NULL,
`Rating` int DEFAULT NULL,
`RatingCoverUrl` varchar(255) DEFAULT NULL,
`Synopsis` longtext,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `AgeRatingContentDescription`;
CREATE TABLE `AgeRatingContentDescription` (
`Id` bigint NOT NULL,
`Category` int DEFAULT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`Description` varchar(255) DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `AlternativeName`;
CREATE TABLE `AlternativeName` (
`Id` bigint NOT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`Comment` longtext,
`Game` bigint DEFAULT NULL,
`Name` varchar(255) DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `Artwork`;
CREATE TABLE `Artwork` (
`Id` bigint NOT NULL,
`AlphaChannel` tinyint(1) DEFAULT NULL,
`Animated` tinyint(1) DEFAULT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`Game` bigint DEFAULT NULL,
`Height` int DEFAULT NULL,
`ImageId` varchar(45) DEFAULT NULL,
`Url` varchar(255) DEFAULT NULL,
`Width` int DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `Collection`;
CREATE TABLE `Collection` (
`Id` bigint NOT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`Games` json DEFAULT NULL,
`Name` varchar(255) DEFAULT NULL,
`Slug` varchar(100) DEFAULT NULL,
`CreatedAt` datetime DEFAULT NULL,
`UpdatedAt` datetime DEFAULT NULL,
`Url` varchar(255) DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `Company`;
CREATE TABLE `Company` (
`Id` bigint NOT NULL,
`ChangeDate` datetime DEFAULT NULL,
`ChangeDateCategory` int DEFAULT NULL,
`ChangedCompanyId` bigint DEFAULT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`Country` int DEFAULT NULL,
`CreatedAt` datetime DEFAULT NULL,
`Description` longtext,
`Developed` json DEFAULT NULL,
`Logo` bigint DEFAULT NULL,
`Name` varchar(255) DEFAULT NULL,
`Parent` bigint DEFAULT NULL,
`Published` json DEFAULT NULL,
`Slug` varchar(100) DEFAULT NULL,
`StartDate` datetime DEFAULT NULL,
`StartDateCategory` int DEFAULT NULL,
`UpdatedAt` datetime DEFAULT NULL,
`Url` varchar(255) DEFAULT NULL,
`Websites` json DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `CompanyLogo`;
CREATE TABLE `CompanyLogo` (
`Id` bigint NOT NULL,
`AlphaChannel` tinyint(1) DEFAULT NULL,
`Animated` tinyint(1) DEFAULT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`Height` int DEFAULT NULL,
`ImageId` varchar(45) DEFAULT NULL,
`Url` varchar(255) DEFAULT NULL,
`Width` int DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `Cover`;
CREATE TABLE `Cover` (
`Id` bigint NOT NULL,
`AlphaChannel` tinyint(1) DEFAULT NULL,
`Animated` tinyint(1) DEFAULT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`Game` bigint DEFAULT NULL,
`Height` int DEFAULT NULL,
`ImageId` varchar(45) DEFAULT NULL,
`Url` varchar(255) DEFAULT NULL,
`Width` int DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `ExternalGame`;
CREATE TABLE `ExternalGame` (
`Id` bigint NOT NULL,
`Category` int DEFAULT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`CreatedAt` datetime DEFAULT NULL,
`Countries` json DEFAULT NULL,
`Game` bigint DEFAULT NULL,
`Media` int DEFAULT NULL,
`Name` varchar(255) DEFAULT NULL,
`Platform` bigint DEFAULT NULL,
`Uid` varchar(255) DEFAULT NULL,
`UpdatedAt` datetime DEFAULT NULL,
`Url` varchar(255) DEFAULT NULL,
`Year` int DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `Franchise`;
CREATE TABLE `Franchise` (
`Id` bigint NOT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`CreatedAt` datetime DEFAULT NULL,
`UpdatedAt` datetime DEFAULT NULL,
`Games` json DEFAULT NULL,
`Name` varchar(255) DEFAULT NULL,
`Slug` varchar(255) DEFAULT NULL,
`Url` varchar(255) DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `Game`;
CREATE TABLE `Game` (
`Id` bigint NOT NULL,
`AgeRatings` json DEFAULT NULL,
`AggregatedRating` double DEFAULT NULL,
`AggregatedRatingCount` int DEFAULT NULL,
`AlternativeNames` json DEFAULT NULL,
`Artworks` json DEFAULT NULL,
`Bundles` json DEFAULT NULL,
`Category` int DEFAULT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`Collection` bigint DEFAULT NULL,
`Cover` bigint DEFAULT NULL,
`CreatedAt` datetime DEFAULT NULL,
`Dlcs` json DEFAULT NULL,
`Expansions` json DEFAULT NULL,
`ExternalGames` json DEFAULT NULL,
`FirstReleaseDate` datetime DEFAULT NULL,
`Follows` int DEFAULT NULL,
`Franchise` bigint DEFAULT NULL,
`Franchises` json DEFAULT NULL,
`GameEngines` json DEFAULT NULL,
`GameModes` json DEFAULT NULL,
`Genres` json DEFAULT NULL,
`Hypes` int DEFAULT NULL,
`InvolvedCompanies` json DEFAULT NULL,
`Keywords` json DEFAULT NULL,
`MultiplayerModes` json DEFAULT NULL,
`Name` varchar(255) DEFAULT NULL,
`ParentGame` bigint DEFAULT NULL,
`Platforms` json DEFAULT NULL,
`PlayerPerspectives` json DEFAULT NULL,
`Rating` double DEFAULT NULL,
`RatingCount` int DEFAULT NULL,
`ReleaseDates` json DEFAULT NULL,
`Screenshots` json DEFAULT NULL,
`SimilarGames` json DEFAULT NULL,
`Slug` varchar(100) DEFAULT NULL,
`StandaloneExpansions` json DEFAULT NULL,
`Status` int DEFAULT NULL,
`StoryLine` longtext,
`Summary` longtext,
`Tags` json DEFAULT NULL,
`Themes` json DEFAULT NULL,
`TotalRating` double DEFAULT NULL,
`TotalRatingCount` int DEFAULT NULL,
`UpdatedAt` datetime DEFAULT NULL,
`Url` varchar(255) DEFAULT NULL,
`VersionParent` bigint DEFAULT NULL,
`VersionTitle` varchar(100) DEFAULT NULL,
`Videos` json DEFAULT NULL,
`Websites` json DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`),
UNIQUE KEY `Id_UNIQUE` (`Id`),
KEY `Idx_AgeRatings` ((cast(`AgeRatings` as unsigned array))),
KEY `Idx_Genres` ((cast(`Genres` as unsigned array))),
KEY `Idx_alternativeNames` ((cast(`AlternativeNames` as unsigned array))),
KEY `Idx_artworks` ((cast(`Artworks` as unsigned array))),
KEY `Idx_bundles` ((cast(`Bundles` as unsigned array))),
KEY `Idx_dlcs` ((cast(`Dlcs` as unsigned array))),
KEY `Idx_expansions` ((cast(`Expansions` as unsigned array))),
KEY `Idx_ExternalGames` ((cast(`ExternalGames` as unsigned array))),
KEY `Idx_franchises` ((cast(`Franchises` as unsigned array))),
KEY `Idx_Gameengines` ((cast(`GameEngines` as unsigned array))),
KEY `Idx_Gamemodes` ((cast(`GameModes` as unsigned array))),
KEY `Idx_involvedcompanies` ((cast(`InvolvedCompanies` as unsigned array))),
KEY `Idx_keywords` ((cast(`Keywords` as unsigned array))),
KEY `Idx_multiplayermodes` ((cast(`MultiplayerModes` as unsigned array))),
KEY `Idx_Platforms` ((cast(`Platforms` as unsigned array))),
KEY `Idx_playerperspectives` ((cast(`PlayerPerspectives` as unsigned array))),
KEY `Idx_releasedates` ((cast(`ReleaseDates` as unsigned array))),
KEY `Idx_Screenshots` ((cast(`Screenshots` as unsigned array))),
KEY `Idx_similarGames` ((cast(`SimilarGames` as unsigned array))),
KEY `Idx_standaloneexpansions` ((cast(`StandaloneExpansions` as unsigned array))),
KEY `Idx_tags` ((cast(`Tags` as unsigned array))),
KEY `Idx_themes` ((cast(`Themes` as unsigned array))),
KEY `Idx_vIdeos` ((cast(`Videos` as unsigned array))),
KEY `Idx_websites` ((cast(`Websites` as unsigned array)))
);
DROP TABLE IF EXISTS `Games_Roms`;
CREATE TABLE `Games_Roms` (
`Id` bigint NOT NULL AUTO_INCREMENT,
`PlatformId` bigint DEFAULT NULL,
`GameId` bigint 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,
`Path` longtext,
`MetadataSource` int DEFAULT NULL,
PRIMARY KEY (`Id`),
UNIQUE KEY `Id_UNIQUE` (`Id`),
INDEX `GameId` (`GameId` ASC) VISIBLE,
INDEX `Id_GameId` (`GameId` ASC, `Id` ASC) VISIBLE
);
DROP TABLE IF EXISTS `GameVideo`;
CREATE TABLE `GameVideo` (
`Id` bigint NOT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`Game` bigint DEFAULT NULL,
`Name` varchar(100) DEFAULT NULL,
`VideoId` varchar(45) DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `Genre`;
CREATE TABLE `Genre` (
`Id` bigint NOT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`CreatedAt` datetime DEFAULT NULL,
`UpdatedAt` datetime DEFAULT NULL,
`Name` varchar(255) DEFAULT NULL,
`Slug` varchar(100) DEFAULT NULL,
`Url` varchar(255) DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `InvolvedCompany`;
CREATE TABLE `InvolvedCompany` (
`Id` bigint NOT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`Company` bigint DEFAULT NULL,
`CreatedAt` datetime DEFAULT NULL,
`Developer` tinyint(1) DEFAULT NULL,
`Game` bigint DEFAULT NULL,
`Porting` tinyint(1) DEFAULT NULL,
`Publisher` tinyint(1) DEFAULT NULL,
`Supporting` tinyint(1) DEFAULT NULL,
`UpdatedAt` datetime DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `Platform`;
CREATE TABLE `Platform` (
`Id` bigint NOT NULL,
`Abbreviation` varchar(45) DEFAULT NULL,
`AlternativeName` varchar(255) DEFAULT NULL,
`Category` int DEFAULT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`CreatedAt` datetime DEFAULT NULL,
`Generation` int DEFAULT NULL,
`Name` varchar(45) DEFAULT NULL,
`PlatformFamily` bigint DEFAULT NULL,
`PlatformLogo` bigint DEFAULT NULL,
`Slug` varchar(45) DEFAULT NULL,
`Summary` longtext,
`UpdatedAt` datetime DEFAULT NULL,
`Url` varchar(255) DEFAULT NULL,
`Versions` json DEFAULT NULL,
`Websites` json DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`),
UNIQUE KEY `Id_UNIQUE` (`Id`)
);
DROP TABLE IF EXISTS `PlatformLogo`;
CREATE TABLE `PlatformLogo` (
`Id` bigint NOT NULL,
`AlphaChannel` tinyint(1) DEFAULT NULL,
`Animated` tinyint(1) DEFAULT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`Height` int DEFAULT NULL,
`ImageId` varchar(45) DEFAULT NULL,
`Url` varchar(255) DEFAULT NULL,
`Width` int DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `PlatformVersion`;
CREATE TABLE `PlatformVersion` (
`Id` bigint NOT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`Companies` json DEFAULT NULL,
`Connectivity` longtext,
`CPU` longtext,
`Graphics` longtext,
`MainManufacturer` bigint DEFAULT NULL,
`Media` longtext,
`Memory` longtext,
`Name` longtext,
`OS` longtext,
`Output` longtext,
`PlatformLogo` int DEFAULT NULL,
`PlatformVersionReleaseDates` json DEFAULT NULL,
`Resolutions` longtext,
`Slug` longtext,
`Sound` longtext,
`Storage` longtext,
`Summary` longtext,
`Url` varchar(255) DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `Screenshot`;
CREATE TABLE `Screenshot` (
`Id` bigint NOT NULL,
`AlphaChannel` tinyint(1) DEFAULT NULL,
`Animated` tinyint(1) DEFAULT NULL,
`Checksum` varchar(45) DEFAULT NULL,
`Game` bigint DEFAULT NULL,
`Height` int DEFAULT NULL,
`ImageId` varchar(45) DEFAULT NULL,
`Url` varchar(255) DEFAULT NULL,
`Width` int DEFAULT NULL,
`dateAdded` datetime DEFAULT NULL,
`lastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`)
);
DROP TABLE IF EXISTS `Settings`;
CREATE TABLE `Settings` (
`Setting` varchar(45) NOT NULL,
`Value` longtext,
PRIMARY KEY (`Setting`),
UNIQUE KEY `Setting_UNIQUE` (`Setting`)
);
DROP TABLE IF EXISTS `Signatures_Games`;
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
);
DROP TABLE IF EXISTS `Signatures_Platforms`;
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
);
DROP TABLE IF EXISTS `Signatures_Publishers`;
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`)
);
DROP TABLE IF EXISTS `Signatures_Roms`;
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,
`MetadataSource` int DEFAULT NULL,
PRIMARY KEY (`Id`),
UNIQUE KEY `Id_UNIQUE` (`Id`,`GameId`) USING BTREE,
KEY `GameId_Idx` (`GameId`),
KEY `md5_Idx` (`MD5`) USING BTREE,
KEY `sha1_Idx` (`SHA1`) USING BTREE,
KEY `flags_Idx` ((cast(`Flags` as char(255) array)))
);
DROP TABLE IF EXISTS `Signatures_Sources`;
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
);
DROP VIEW IF EXISTS `view_Signatures_Games`;
CREATE VIEW `view_Signatures_Games` AS
SELECT
`Signatures_Games`.`Id` AS `Id`,
`Signatures_Games`.`Name` AS `Name`,
`Signatures_Games`.`Description` AS `Description`,
`Signatures_Games`.`Year` AS `Year`,
`Signatures_Games`.`PublisherId` AS `PublisherId`,
`Signatures_Publishers`.`Publisher` AS `Publisher`,
`Signatures_Games`.`Demo` AS `Demo`,
`Signatures_Games`.`SystemId` AS `PlatformId`,
`Signatures_Platforms`.`Platform` AS `Platform`,
`Signatures_Games`.`SystemVariant` AS `SystemVariant`,
`Signatures_Games`.`VIdeo` AS `Video`,
`Signatures_Games`.`Country` AS `Country`,
`Signatures_Games`.`Language` AS `Language`,
`Signatures_Games`.`Copyright` AS `Copyright`
FROM
((`Signatures_Games`
JOIN `Signatures_Publishers` ON ((`Signatures_Games`.`PublisherId` = `Signatures_Publishers`.`Id`)))
JOIN `Signatures_Platforms` ON ((`Signatures_Games`.`SystemId` = `Signatures_Platforms`.`Id`)));