patbef-ServiceOutside/ServiceShared/Database/Migrations/Version_2.cs

115 lines
3.4 KiB
C#
Raw Permalink Normal View History

2024-01-29 16:27:34 +01:00
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ServiceShared.Database.Migrations
{
public class Version_2 : Migration
{
public Version_2()
{
this.Version = 2;
}
/**
* Run current migration
**/
public override bool Run(DbContext dbContext)
{
bool result = false;
try
{
if(this.RunPrevious(dbContext))
{
if(!this.Ready(dbContext))
{
using (MySqlConnection client = dbContext.CreateConnection())
{
client.Open();
MySqlCommand cmd = client.CreateCommand();
/** add new column not_found_counter **/
cmd.CommandText = "alter table results add column not_found_counter int(11) not null default 0";
cmd.ExecuteNonQuery();
/** add new coulmn not_found_ts **/
cmd.CommandText = "alter table results add column not_found_ts datetime null";
cmd.ExecuteNonQuery();
/** add new column notification_counter **/
cmd.CommandText = "alter table results add column notification_counter int(11) not null default 0";
cmd.ExecuteNonQuery();
client.Close();
result = true;
}
}
}
}
catch (Exception ex)
{
Log.Error(ex, "ServiceOutside.Database.Migrations.Version_2", "Run");
}
return result;
}
/// <summary>
/// Checks if current migration already run
/// </summary>
/// <param name="dbContext">Database context for the migration</param>
/// <returns></returns>
private bool Ready(DbContext dbContext)
{
bool result = false;
try
{
using (MySqlConnection client = dbContext.CreateConnection())
{
client.Open();
MySqlCommand cmd = client.CreateCommand();
cmd.CommandText = "select not_found_counter, notification_counter from results where 1 <> 1";
cmd.ExecuteNonQuery();
client.Close();
result = true;
}
}
catch
{
result = false;
}
return result;
}
/**
* Runs/Checks previous migrations
**/
public override bool RunPrevious(DbContext dbContext)
{
bool result = false;
try
{
if(new Version_1().Run(dbContext))
{
result = true;
}
}
catch (Exception ex)
{
Log.Error(ex, "ServiceOutside.Database.Migrations.Version_2", "RunPrevious");
}
return result;
}
}
}