void InnerStart(DateTime timestamp, Func <SqlConnection, Task> buildTemplate) { void CleanStart() { FileExtensions.FlushDirectory(Directory); LocalDbApi.CreateInstance(instance); LocalDbApi.StartInstance(instance); startupTask = CreateAndDetachTemplate( timestamp, buildTemplate, rebuild: true, optimize: true); InitRollbackTask(); } var info = LocalDbApi.GetInstance(instance); if (!info.Exists) { CleanStart(); return; } if (!info.IsRunning) { LocalDbApi.DeleteInstance(instance); CleanStart(); return; } var templateLastMod = File.GetCreationTime(TemplateDataFile); if (timestamp == templateLastMod) { LocalDbLogging.Log("Not modified so skipping rebuild"); startupTask = CreateAndDetachTemplate(timestamp, buildTemplate, false, false); } else { startupTask = CreateAndDetachTemplate(timestamp, buildTemplate, true, false); } InitRollbackTask(); }
void InnerStart(DateTime timestamp, Action <SqlConnection> buildTemplate) { void CleanStart() { FileExtensions.FlushDirectory(directory); LocalDbApi.CreateInstance(instance); LocalDbApi.StartInstance(instance); RunOnceOfOptimizations(); CreateTemplate(); ExecuteBuildTemplate(buildTemplate); DetachTemplate(timestamp); } var info = LocalDbApi.GetInstance(instance); if (!info.Exists) { CleanStart(); return; } if (!info.IsRunning) { LocalDbApi.DeleteInstance(instance); CleanStart(); return; } PurgeDbs(); DeleteNonTemplateFiles(); var templateLastMod = File.GetCreationTime(TemplateDataFile); if (timestamp == templateLastMod) { LocalDbLogging.Log("Not modified so skipping rebuild"); return; } DeleteTemplateFiles(); CreateTemplate(); ExecuteBuildTemplate(buildTemplate); DetachTemplate(timestamp); }