1
0
mirror of https://github.com/bitwarden/server.git synced 2025-06-30 15:42:48 -05:00

move migrations to migrator project

This commit is contained in:
Kyle Spearrin
2019-03-25 13:21:05 -04:00
parent cfe3708509
commit 28884c3330
34 changed files with 184 additions and 11566 deletions

View File

@ -1,10 +1,9 @@
using DbUp;
using Bit.Migrator;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Net.Http;
using System.Reflection;
namespace Bit.Setup
{
@ -164,43 +163,11 @@ namespace Bit.Setup
try
{
Helpers.WriteLine(_context, "Migrating database.");
var vaultConnectionString = Helpers.GetValueFromEnvFile("global",
"globalSettings__sqlServer__connectionString");
var masterConnectionString = new SqlConnectionStringBuilder(vaultConnectionString)
{
InitialCatalog = "master"
}.ConnectionString;
using(var connection = new SqlConnection(masterConnectionString))
{
var command = new SqlCommand(
"IF ((SELECT COUNT(1) FROM sys.databases WHERE [name] = 'vault') = 0) " +
"CREATE DATABASE [vault];", connection);
command.Connection.Open();
command.ExecuteNonQuery();
command.CommandText = "IF ((SELECT DATABASEPROPERTYEX([name], 'IsAutoClose') " +
"FROM sys.databases WHERE [name] = 'vault') = 1) " +
"ALTER DATABASE [vault] SET AUTO_CLOSE OFF;";
command.ExecuteNonQuery();
}
var builder = DeployChanges.To
.SqlDatabase(vaultConnectionString)
.JournalToSqlTable("dbo", "Migration")
.WithScriptsAndCodeEmbeddedInAssembly(Assembly.GetExecutingAssembly(),
s => s.Contains($".DbScripts.") && !s.Contains(".Archive."))
.WithTransaction()
.WithExecutionTimeout(new TimeSpan(0, 5, 0));
if(!_context.Quiet)
{
builder.LogToConsole();
}
var upgrader = builder.Build();
var result = upgrader.PerformUpgrade();
if(result.Successful)
var migrator = new DbMigrator(vaultConnectionString, null);
var success = migrator.MigrateMsSqlDatabase(false);
if(success)
{
Helpers.WriteLine(_context, "Migration successful.");
}
@ -220,7 +187,6 @@ namespace Bit.Setup
MigrateDatabase(nextAttempt);
return;
}
throw e;
}
}