diff --git a/Cicm.Database/Operations/Company.cs b/Cicm.Database/Operations/Company.cs
index 7256c782..f92b3002 100644
--- a/Cicm.Database/Operations/Company.cs
+++ b/Cicm.Database/Operations/Company.cs
@@ -178,10 +178,11 @@ namespace Cicm.Database
IDbTransaction trans = dbCon.BeginTransaction();
dbcmd.Transaction = trans;
- const string SQL = "INSERT INTO companies (name, founded, website, twitter, facebook, sold, sold_to, " +
- "address, city, province, postal_code, country) VALUES (@name, @founded, @website, " +
- "@twitter, @facebook, @sold, @sold_to, @address, @city, @province, @postal_code, " +
- "@country)";
+ const string SQL =
+ "INSERT INTO companies (name, founded, website, twitter, facebook, sold, sold_to, " +
+ "address, city, province, postal_code, country, status) VALUES (@name, @founded, @website, " +
+ "@twitter, @facebook, @sold, @sold_to, @address, @city, @province, @postal_code, " +
+ "@country, status)";
dbcmd.CommandText = SQL;
@@ -216,7 +217,7 @@ namespace Cicm.Database
string sql =
"UPDATE companies SET name = @name, founded = @founded, website = @website, twitter = @twitter, " +
"facebook = @facebook, sold = @sold, sold_to = @sold_to, address = @address, city = @city, " +
- "province = @province, postal_code = @postal_code, country = @country, " +
+ "province = @province, postal_code = @postal_code, country = @country, status = @status " +
$"WHERE id = {entry.Id}";
dbcmd.CommandText = sql;
@@ -270,6 +271,7 @@ namespace Cicm.Database
IDbDataParameter param10 = dbcmd.CreateParameter();
IDbDataParameter param11 = dbcmd.CreateParameter();
IDbDataParameter param12 = dbcmd.CreateParameter();
+ IDbDataParameter param13 = dbcmd.CreateParameter();
param1.ParameterName = "@name";
param2.ParameterName = "@founded";
@@ -283,6 +285,7 @@ namespace Cicm.Database
param10.ParameterName = "@province";
param11.ParameterName = "@postal_code";
param12.ParameterName = "@country";
+ param13.ParameterName = "@status";
param1.DbType = DbType.String;
param2.DbType = DbType.DateTime;
@@ -296,6 +299,7 @@ namespace Cicm.Database
param10.DbType = DbType.String;
param11.DbType = DbType.String;
param12.DbType = DbType.UInt16;
+ param13.DbType = DbType.UInt32;
param1.Value = entry.Name;
param2.Value = entry.Founded;
@@ -319,6 +323,7 @@ namespace Cicm.Database
param11.Value = entry.PostalCode;
if(entry.Country != null) param12.Value = entry.Country.Id;
else param12.Value = null;
+ param13.Value = entry.Status;
dbcmd.Parameters.Add(param1);
dbcmd.Parameters.Add(param2);
@@ -332,6 +337,7 @@ namespace Cicm.Database
dbcmd.Parameters.Add(param10);
dbcmd.Parameters.Add(param11);
dbcmd.Parameters.Add(param12);
+ dbcmd.Parameters.Add(param13);
return dbcmd;
}
@@ -352,7 +358,8 @@ namespace Cicm.Database
Address = dataRow["address"].ToString(),
City = dataRow["city"].ToString(),
Province = dataRow["province"].ToString(),
- PostalCode = dataRow["postal_code"].ToString()
+ PostalCode = dataRow["postal_code"].ToString(),
+ Status = (CompanyStatus)int.Parse(dataRow["status"].ToString())
};
if(!string.IsNullOrWhiteSpace(dataRow["founded"].ToString()))
diff --git a/Cicm.Database/Operations/Init.cs b/Cicm.Database/Operations/Init.cs
index b171bfb7..676f5e89 100644
--- a/Cicm.Database/Operations/Init.cs
+++ b/Cicm.Database/Operations/Init.cs
@@ -49,91 +49,91 @@ namespace Cicm.Database
IDbCommand dbCmd = dbCon.CreateCommand();
Console.WriteLine("Creating table `admins`");
- dbCmd.CommandText = V6.Admins;
+ dbCmd.CommandText = V7.Admins;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `browser_tests`");
- dbCmd.CommandText = V6.BrowserTests;
+ dbCmd.CommandText = V7.BrowserTests;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `cicm_db`");
- dbCmd.CommandText = V6.CicmDb;
+ dbCmd.CommandText = V7.CicmDb;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `companies`");
- dbCmd.CommandText = V6.Companies;
+ dbCmd.CommandText = V7.Companies;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `computers`");
- dbCmd.CommandText = V6.Computers;
+ dbCmd.CommandText = V7.Computers;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `consoles`");
- dbCmd.CommandText = V6.Consoles;
+ dbCmd.CommandText = V7.Consoles;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `disk_formats`");
- dbCmd.CommandText = V6.DiskFormats;
+ dbCmd.CommandText = V7.DiskFormats;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `forbidden`");
- dbCmd.CommandText = V6.Forbidden;
+ dbCmd.CommandText = V7.Forbidden;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `gpus`");
- dbCmd.CommandText = V6.Gpus;
+ dbCmd.CommandText = V7.Gpus;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `log`");
- dbCmd.CommandText = V6.Logs;
+ dbCmd.CommandText = V7.Logs;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `money_donations`");
- dbCmd.CommandText = V6.MoneyDonations;
+ dbCmd.CommandText = V7.MoneyDonations;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `music_synths`");
- dbCmd.CommandText = V6.MusicSynths;
+ dbCmd.CommandText = V7.MusicSynths;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `news`");
- dbCmd.CommandText = V6.News;
+ dbCmd.CommandText = V7.News;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `owned_computers`");
- dbCmd.CommandText = V6.OwnedComputers;
+ dbCmd.CommandText = V7.OwnedComputers;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `owned_consoles`");
- dbCmd.CommandText = V6.OwnedConsoles;
+ dbCmd.CommandText = V7.OwnedConsoles;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `processors`");
- dbCmd.CommandText = V6.Processors;
+ dbCmd.CommandText = V7.Processors;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `sound_synths`");
- dbCmd.CommandText = V6.SoundSynths;
+ dbCmd.CommandText = V7.SoundSynths;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating table `iso3166_1_numeric`");
- dbCmd.CommandText = V6.Iso3166Numeric;
+ dbCmd.CommandText = V7.Iso3166Numeric;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Filling table `iso3166_1_numeric`");
- dbCmd.CommandText = V6.Iso3166NumericValues;
+ dbCmd.CommandText = V7.Iso3166NumericValues;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating foreign keys for table `companies`");
- dbCmd.CommandText = V6.CompaniesForeignKeys;
+ dbCmd.CommandText = V7.CompaniesForeignKeys;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating foreign keys for table `computers`");
- dbCmd.CommandText = V6.ComputersForeignKeys;
+ dbCmd.CommandText = V7.ComputersForeignKeys;
dbCmd.ExecuteNonQuery();
Console.WriteLine("Creating foreign keys for table `consoles`");
- dbCmd.CommandText = V6.ConsolesForeignKeys;
+ dbCmd.CommandText = V7.ConsolesForeignKeys;
dbCmd.ExecuteNonQuery();
return true;
diff --git a/Cicm.Database/Operations/Operations.cs b/Cicm.Database/Operations/Operations.cs
index 2ee2052e..d698545d 100644
--- a/Cicm.Database/Operations/Operations.cs
+++ b/Cicm.Database/Operations/Operations.cs
@@ -35,7 +35,7 @@ namespace Cicm.Database
public partial class Operations
{
/// Last known database version
- const int DB_VERSION = 6;
+ const int DB_VERSION = 7;
readonly IDbConnection dbCon;
readonly IDbCore dbCore;
diff --git a/Cicm.Database/Operations/Update.cs b/Cicm.Database/Operations/Update.cs
index 3206d48a..e9c95975 100644
--- a/Cicm.Database/Operations/Update.cs
+++ b/Cicm.Database/Operations/Update.cs
@@ -98,6 +98,11 @@ namespace Cicm.Database
UpdateDatabaseToV6();
break;
}
+ case 6:
+ {
+ UpdateDatabaseToV7();
+ break;
+ }
}
OptimizeDatabase();
@@ -745,6 +750,35 @@ namespace Cicm.Database
dbCmd.Dispose();
}
+ void UpdateDatabaseToV7()
+ {
+ Console.WriteLine("Updating database to version 7");
+
+ Console.WriteLine("Adding new columns to table `companies`");
+ IDbCommand dbCmd = dbCon.CreateCommand();
+ IDbTransaction trans = dbCon.BeginTransaction();
+ dbCmd.Transaction = trans;
+ dbCmd.CommandText = "ALTER TABLE `companies` ADD COLUMN `status` INT NOT NULL;";
+ dbCmd.ExecuteNonQuery();
+ trans.Commit();
+ dbCmd.Dispose();
+
+ Console.WriteLine("Adding new indexes to table `companies`");
+ dbCmd = dbCon.CreateCommand();
+ trans = dbCon.BeginTransaction();
+ dbCmd.Transaction = trans;
+ dbCmd.CommandText = "CREATE INDEX `idx_companies_status` ON `companies` (`status`);";
+ dbCmd.ExecuteNonQuery();
+ trans.Commit();
+ dbCmd.Dispose();
+
+ Console.WriteLine("Setting new database version to 7...");
+ dbCmd = dbCon.CreateCommand();
+ dbCmd.CommandText = "INSERT INTO cicm_db (version) VALUES ('7')";
+ dbCmd.ExecuteNonQuery();
+ dbCmd.Dispose();
+ }
+
void OptimizeDatabase()
{
IDbCommand dbCmd = dbCon.CreateCommand();
diff --git a/Cicm.Database/Schemas/Company.cs b/Cicm.Database/Schemas/Company.cs
index b1951dfa..172f0ea9 100644
--- a/Cicm.Database/Schemas/Company.cs
+++ b/Cicm.Database/Schemas/Company.cs
@@ -57,6 +57,8 @@ namespace Cicm.Database.Schemas
public DateTime Sold;
/// Company it was sold to
public Company SoldTo;
+ /// Company status
+ public CompanyStatus Status;
/// Twitter account
public string Twitter;
/// Website
diff --git a/Cicm.Database/Schemas/Enums.cs b/Cicm.Database/Schemas/Enums.cs
index a0f608d1..d1c47db4 100644
--- a/Cicm.Database/Schemas/Enums.cs
+++ b/Cicm.Database/Schemas/Enums.cs
@@ -49,4 +49,20 @@ namespace Cicm.Database.Schemas
NotTested = 2,
TestedBad = 3
}
+
+ public enum CompanyStatus
+ {
+ /// Status is unknown or not set
+ Unknown = 0,
+ /// Company is still existing
+ Active = 1,
+ /// Company was sold, totally or partially
+ Sold = 2,
+ /// Company merged with another company to make yet another company
+ Merged = 3,
+ /// Company filled for bankruptcy
+ Bankrupt = 4,
+ /// Company ceased operations for reasons different to bankruptcy
+ Defunct = 5
+ }
}
\ No newline at end of file
diff --git a/Cicm.Database/Schemas/Sql/V7.cs b/Cicm.Database/Schemas/Sql/V7.cs
new file mode 100644
index 00000000..e9f8118a
--- /dev/null
+++ b/Cicm.Database/Schemas/Sql/V7.cs
@@ -0,0 +1,112 @@
+/******************************************************************************
+// Canary Islands Computer Museum Website
+// ----------------------------------------------------------------------------
+//
+// Filename : V7.cs
+// Author(s) : Natalia Portillo
+//
+// --[ Description ] ----------------------------------------------------------
+//
+// Contains SQL queries to create the database version 7.
+//
+// --[ 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 .
+//
+// ----------------------------------------------------------------------------
+// Copyright © 2003-2018 Natalia Portillo
+*******************************************************************************/
+
+namespace Cicm.Database.Schemas.Sql
+{
+ public static class V7
+ {
+ public static readonly string Admins = V5.Admins;
+
+ public static readonly string BrowserTests = V5.BrowserTests;
+
+ public static readonly string CicmDb = "CREATE TABLE `cicm_db` (\n" +
+ "`id` int(11) NOT NULL AUTO_INCREMENT,\n" +
+ "`version` int(11) NOT NULL,\n" +
+ "`updated` datetime DEFAULT CURRENT_TIMESTAMP,\n" +
+ "PRIMARY KEY (`id`)\n" + ");\n" +
+ "INSERT INTO cicm_db (version) VALUES ('7');";
+
+ public static readonly string Companies = "CREATE TABLE `companies` (\n" +
+ "`id` int(11) NOT NULL AUTO_INCREMENT,\n" +
+ "`name` varchar(128) NOT NULL DEFAULT '',\n" +
+ "`founded` datetime DEFAULT NULL,\n" +
+ "`website` varchar(255) DEFAULT NULL,\n" +
+ "`twitter` varchar(45) DEFAULT NULL,\n" +
+ "`facebook` varchar(45) DEFAULT NULL,\n" +
+ "`sold` datetime DEFAULT NULL,\n" +
+ "`sold_to` int(11) DEFAULT NULL,\n" +
+ "`address` varchar(80) DEFAULT NULL,\n" +
+ "`city` varchar(80) DEFAULT NULL,\n" +
+ "`province` varchar(80) DEFAULT NULL,\n" +
+ "`postal_code` varchar(25) DEFAULT NULL,\n" +
+ "`country` smallint(3) UNSIGNED ZEROFILL DEFAULT NULL,\n" +
+ "`status` int NOT NULL,\n" +
+ "PRIMARY KEY (`id`),\n" +
+ "KEY `idx_companies_name` (`name`),\n" +
+ "KEY `idx_companies_founded` (`founded`),\n" +
+ "KEY `idx_companies_website` (`website`),\n" +
+ "KEY `idx_companies_twitter` (`twitter`),\n" +
+ "KEY `idx_companies_facebook` (`facebook`),\n" +
+ "KEY `idx_companies_sold` (`sold`),\n" +
+ "KEY `idx_companies_sold_to` (`sold_to`),\n" +
+ "KEY `idx_companies_address` (`address`),\n" +
+ "KEY `idx_companies_city` (`city`),\n" +
+ "KEY `idx_companies_province` (`province`),\n" +
+ "KEY `idx_companies_postal_code` (`postal_code`),\n" +
+ "KEY `idx_companies_status` (`status`),\n" +
+ "KEY `idx_companies_country` (`country`));";
+
+ public static readonly string Computers = V6.Computers;
+
+ public static readonly string Consoles = V6.Consoles;
+
+ public static readonly string DiskFormats = V6.DiskFormats;
+
+ public static readonly string Forbidden = V6.Forbidden;
+
+ public static readonly string Gpus = V6.Gpus;
+
+ public static readonly string Logs = V6.Logs;
+
+ public static readonly string MoneyDonations = V6.MoneyDonations;
+
+ public static readonly string MusicSynths = V6.MusicSynths;
+
+ public static readonly string News = V6.News;
+
+ public static readonly string OwnedComputers = V6.OwnedComputers;
+
+ public static readonly string OwnedConsoles = V6.OwnedConsoles;
+
+ public static readonly string Processors = V6.Processors;
+
+ public static readonly string SoundSynths = V6.SoundSynths;
+
+ public static readonly string ComputersForeignKeys = V6.ComputersForeignKeys;
+
+ public static readonly string ConsolesForeignKeys = V6.ConsolesForeignKeys;
+
+ public static readonly string Iso3166Numeric = V6.Iso3166Numeric;
+
+ public static readonly string Iso3166NumericValues = V6.Iso3166NumericValues;
+
+ public static readonly string CompaniesForeignKeys = V6.CompaniesForeignKeys;
+ }
+}
\ No newline at end of file
diff --git a/cicm_web/cicm_web.csproj b/cicm_web/cicm_web.csproj
index 6b7c65eb..5d2f6db9 100644
--- a/cicm_web/cicm_web.csproj
+++ b/cicm_web/cicm_web.csproj
@@ -2,7 +2,7 @@
netcoreapp2.0
- 3.0.99.118
+ 3.0.99.121
Canary Islands Computer Museum
Copyright © 2003-2018 Natalia Portillo
Canary Islands Computer Museum Website