private void CreateDatabaseIfNeeded()
{
using (var conn = new MySqlConnection(_connectionString))
conn.Execute($"CREATE DATABASE IF NOT EXISTS {_databaseName}");
using (var conn = OpenConnection())
{
if (!DoesTableExists(conn, "EndpointConfig"))
CreateEndpointConfig(conn);
if (!DoesColumnExists(conn, "EndpointConfig", "Tags"))
CreateColumn(conn, "EndpointConfig", "Tags", "varchar(4096)");
if (!DoesColumnExists(conn, "EndpointConfig", "Password"))
CreateColumn(conn, "EndpointConfig", "Password", "varchar(64)");
var date = DateTime.UtcNow;
if (!DoesColumnExists(conn, "EndpointConfig", "RegisteredOnUtc"))
CreateColumnAndSetValue(conn, "EndpointConfig", "RegisteredOnUtc", "datetime not null", date);
if (!DoesColumnExists(conn, "EndpointConfig", "RegistrationUpdatedOnUtc"))
CreateColumnAndSetValue(conn, "EndpointConfig", "RegistrationUpdatedOnUtc", "datetime not null", date);
if (!DoesColumnExists(conn, "EndpointConfig", "MonitorTag"))
CreateColumn(conn, "EndpointConfig", "MonitorTag", "varchar(1024) default 'default'");
if (!DoesTableExists(conn, "EndpointStats"))
CreateEndpointStats(conn);
if (!DoesTableExists(conn, "HealthMonitorTypes"))
CreateHealthMonitorTypesTable(conn);
if (!DoesIndexExists(conn, "EndpointStats", "EndpointStats_EndpointIdCheckTimeUtc_idx"))
CreateEndpointStatsIndex(conn);
if (!DoesIndexExists(conn, "EndpointConfig", "EndpointConfig_MonitorTag_idx"))
CreateMonitorTagIndex(conn);
if (!DoesIndexExists(conn, "EndpointConfig", "EndpointConfig_MonitorType_idx"))
CreateMonitorTypeIndex(conn);
}
}