Update to database version 5.

This commit is contained in:
2018-04-16 01:40:05 +01:00
parent 060e1123aa
commit f0ec7d9e91
6 changed files with 153 additions and 20 deletions

View File

@@ -49,71 +49,79 @@ namespace Cicm.Database
IDbCommand dbCmd = dbCon.CreateCommand();
Console.WriteLine("Creating table `admins`");
dbCmd.CommandText = V4.Admins;
dbCmd.CommandText = V5.Admins;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `browser_tests`");
dbCmd.CommandText = V4.BrowserTests;
dbCmd.CommandText = V5.BrowserTests;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `cicm_db`");
dbCmd.CommandText = V4.CicmDb;
dbCmd.CommandText = V5.CicmDb;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `companies`");
dbCmd.CommandText = V4.Companies;
dbCmd.CommandText = V5.Companies;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `computers`");
dbCmd.CommandText = V4.Computers;
dbCmd.CommandText = V5.Computers;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `consoles`");
dbCmd.CommandText = V4.Consoles;
dbCmd.CommandText = V5.Consoles;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `disk_formats`");
dbCmd.CommandText = V4.DiskFormats;
dbCmd.CommandText = V5.DiskFormats;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `forbidden`");
dbCmd.CommandText = V4.Forbidden;
dbCmd.CommandText = V5.Forbidden;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `gpus`");
dbCmd.CommandText = V4.Gpus;
dbCmd.CommandText = V5.Gpus;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `log`");
dbCmd.CommandText = V4.Logs;
dbCmd.CommandText = V5.Logs;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `money_donations`");
dbCmd.CommandText = V4.MoneyDonations;
dbCmd.CommandText = V5.MoneyDonations;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `music_synths`");
dbCmd.CommandText = V4.MusicSynths;
dbCmd.CommandText = V5.MusicSynths;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `news`");
dbCmd.CommandText = V4.News;
dbCmd.CommandText = V5.News;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `owned_computers`");
dbCmd.CommandText = V4.OwnedComputers;
dbCmd.CommandText = V5.OwnedComputers;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `owned_consoles`");
dbCmd.CommandText = V4.OwnedConsoles;
dbCmd.CommandText = V5.OwnedConsoles;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `processors`");
dbCmd.CommandText = V4.Processors;
dbCmd.CommandText = V5.Processors;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `sound_synths`");
dbCmd.CommandText = V4.SoundSynths;
dbCmd.CommandText = V5.SoundSynths;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating foreign keys for table `computers`");
dbCmd.CommandText = V5.ComputersForeignKeys;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating foreign keys for table `consoles`");
dbCmd.CommandText = V5.ConsolesForeignKeys;
dbCmd.ExecuteNonQuery();
return true;

View File

@@ -35,7 +35,7 @@ namespace Cicm.Database
public partial class Operations
{
/// <summary>Last known database version</summary>
const int DB_VERSION = 4;
const int DB_VERSION = 5;
readonly IDbConnection dbCon;
readonly IDbCore dbCore;

View File

@@ -32,6 +32,8 @@ using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using Cicm.Database.Schemas.Sql;
using MySql.Data.MySqlClient;
namespace Cicm.Database
{
@@ -87,6 +89,11 @@ namespace Cicm.Database
UpdateDatabaseV3ToV4();
break;
}
case 4:
{
UpdateDatabaseV4ToV5();
break;
}
}
OptimizeDatabase();
@@ -633,6 +640,29 @@ namespace Cicm.Database
dbCmd.Dispose();
}
void UpdateDatabaseV4ToV5()
{
Console.WriteLine("Updating database to version 5");
Console.WriteLine("Creating foreign keys for table `computers`");
IDbCommand dbCmd = dbCon.CreateCommand();
dbCmd.CommandText = V5.ComputersForeignKeys;
dbCmd.ExecuteNonQuery();
dbCmd.Dispose();
Console.WriteLine("Creating foreign keys for table `consoles`");
dbCmd = dbCon.CreateCommand();
dbCmd.CommandText = V5.ConsolesForeignKeys;
dbCmd.ExecuteNonQuery();
dbCmd.Dispose();
Console.WriteLine("Setting new database version to 5...");
dbCmd = dbCon.CreateCommand();
dbCmd.CommandText = "INSERT INTO cicm_db (version) VALUES ('5')";
dbCmd.ExecuteNonQuery();
dbCmd.Dispose();
}
void OptimizeDatabase()
{
IDbCommand dbCmd = dbCon.CreateCommand();

View File

@@ -35,7 +35,7 @@ namespace Cicm.Database.Schemas.Sql
public static readonly string Admins = V3.Admins + "\n" + "CREATE INDEX idx_admins_user ON admins (user);";
public static readonly string BrowserTests =
V3.CicmDb + "\n" +
V3.BrowserTests + "\n" +
"CREATE INDEX idx_browser_tests_user_agent ON browser_tests (user_agent);\n" +
"CREATE INDEX idx_browser_tests_browser ON browser_tests (browser);\n" +
"CREATE INDEX idx_browser_tests_version ON browser_tests (version);\n" +

View File

@@ -0,0 +1,95 @@
/******************************************************************************
// Canary Islands Computer Museum Website
// ----------------------------------------------------------------------------
//
// Filename : V3.cs
// Author(s) : Natalia Portillo <claunia@claunia.com>
//
// --[ Description ] ----------------------------------------------------------
//
// Contains SQL queries to create the database version 4.
//
// --[ License ] --------------------------------------------------------------
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
// ----------------------------------------------------------------------------
// Copyright © 2003-2018 Natalia Portillo
*******************************************************************************/
namespace Cicm.Database.Schemas.Sql
{
public static class V5
{
public static readonly string Admins = V4.Admins;
public static readonly string BrowserTests = V4.BrowserTests;
public static readonly string CicmDb = @"CREATE TABLE `cicm_db` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`version` int(11) NOT NULL,
`updated` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
);
INSERT INTO cicm_db (version) VALUES ('5');";
public static readonly string Companies = V4.Companies;
public static readonly string Computers = V4.Computers;
public static readonly string Consoles = V4.Consoles;
public static readonly string DiskFormats = V4.DiskFormats;
public static readonly string Forbidden = V4.Forbidden;
public static readonly string Gpus = V4.Gpus;
public static readonly string Logs = V4.Logs;
public static readonly string MoneyDonations = V4.MoneyDonations;
public static readonly string MusicSynths = V4.MusicSynths;
public static readonly string News = V4.News;
public static readonly string OwnedComputers = V4.OwnedComputers;
public static readonly string OwnedConsoles = V4.OwnedConsoles;
public static readonly string Processors = V4.Processors;
public static readonly string SoundSynths = V4.SoundSynths;
public static readonly string ComputersForeignKeys = "ALTER TABLE computers ADD FOREIGN KEY fk_computers_company (company) REFERENCES companies (id);\n"+
"ALTER TABLE computers ADD FOREIGN KEY fk_computers_cpu1 (cpu1) REFERENCES processors (id);\n"+
"ALTER TABLE computers ADD FOREIGN KEY fk_computers_cpu2 (cpu2) REFERENCES processors (id);\n"+
"ALTER TABLE computers ADD FOREIGN KEY fk_computers_gpu (gpu) REFERENCES gpus (id);\n"+
"ALTER TABLE computers ADD FOREIGN KEY fk_computers_sound_synth (sound_synth) REFERENCES sound_synths (id);\n"+
"ALTER TABLE computers ADD FOREIGN KEY fk_computers_music_synth (music_synth) REFERENCES music_synths (id);\n"+
"ALTER TABLE computers ADD FOREIGN KEY fk_computers_hdd1 (hdd1) REFERENCES disk_formats (id);\n"+
"ALTER TABLE computers ADD FOREIGN KEY fk_computers_hdd2 (hdd2) REFERENCES disk_formats (id);\n"+
"ALTER TABLE computers ADD FOREIGN KEY fk_computers_hdd3 (hdd3) REFERENCES disk_formats (id);\n"+
"ALTER TABLE computers ADD FOREIGN KEY fk_computers_disk1 (disk1) REFERENCES disk_formats (id);\n"+
"ALTER TABLE computers ADD FOREIGN KEY fk_computers_disk2 (disk2) REFERENCES disk_formats (id);";
public static readonly string ConsolesForeignKeys = "ALTER TABLE consoles ADD FOREIGN KEY fk_consoles_company (company) REFERENCES companies (id);\n" +
"ALTER TABLE consoles ADD FOREIGN KEY fk_consoles_cpu1 (cpu1) REFERENCES processors (id);\n"+
"ALTER TABLE consoles ADD FOREIGN KEY fk_consoles_cpu2 (cpu2) REFERENCES processors (id);\n"+
"ALTER TABLE consoles ADD FOREIGN KEY fk_consoles_gpu (gpu) REFERENCES gpus (id);\n"+
"ALTER TABLE consoles ADD FOREIGN KEY fk_consoles_sound_synth (sound_synth) REFERENCES sound_synths (id);\n"+
"ALTER TABLE consoles ADD FOREIGN KEY fk_consoles_music_synth (music_synth) REFERENCES music_synths (id);\n"+
"ALTER TABLE consoles ADD FOREIGN KEY fk_consoles_format (format) REFERENCES disk_formats (id);";
}
}

View File

@@ -2,7 +2,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<Version>3.0.99.111</Version>
<Version>3.0.99.114</Version>
<Company>Canary Islands Computer Museum</Company>
<Copyright>Copyright © 2003-2018 Natalia Portillo</Copyright>
<Product>Canary Islands Computer Museum Website</Product>