115 lines
3.4 KiB
C#
115 lines
3.4 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|