mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Add option to recreate databases from scratch.
This commit is contained in:
@@ -30,11 +30,16 @@
|
|||||||
// Copyright © 2011-2020 Natalia Portillo
|
// Copyright © 2011-2020 Natalia Portillo
|
||||||
// ****************************************************************************/
|
// ****************************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.CommandLine;
|
using System.CommandLine;
|
||||||
using System.CommandLine.Invocation;
|
using System.CommandLine.Invocation;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
using DiscImageChef.CommonTypes.Enums;
|
using DiscImageChef.CommonTypes.Enums;
|
||||||
using DiscImageChef.Console;
|
using DiscImageChef.Console;
|
||||||
using DiscImageChef.Core;
|
using DiscImageChef.Core;
|
||||||
|
using DiscImageChef.Database;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace DiscImageChef.Commands
|
namespace DiscImageChef.Commands
|
||||||
{
|
{
|
||||||
@@ -46,10 +51,20 @@ namespace DiscImageChef.Commands
|
|||||||
{
|
{
|
||||||
_masterDbUpdate = masterDbUpdate;
|
_masterDbUpdate = masterDbUpdate;
|
||||||
|
|
||||||
Handler = CommandHandler.Create<bool, bool>(Invoke);
|
Add(new Option("--clear", "Clear existing master database.")
|
||||||
|
{
|
||||||
|
Argument = new Argument<bool>(() => false), Required = false
|
||||||
|
});
|
||||||
|
|
||||||
|
Add(new Option("--clear-all", "Clear existing master and local database.")
|
||||||
|
{
|
||||||
|
Argument = new Argument<bool>(() => false), Required = false
|
||||||
|
});
|
||||||
|
|
||||||
|
Handler = CommandHandler.Create<bool, bool, bool, bool>(Invoke);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Invoke(bool debug, bool verbose)
|
public int Invoke(bool debug, bool verbose, bool clear, bool clearAll)
|
||||||
{
|
{
|
||||||
if(_masterDbUpdate)
|
if(_masterDbUpdate)
|
||||||
return(int)ErrorNumber.NoError;
|
return(int)ErrorNumber.NoError;
|
||||||
@@ -65,7 +80,45 @@ namespace DiscImageChef.Commands
|
|||||||
DicConsole.DebugWriteLine("Update command", "--debug={0}", debug);
|
DicConsole.DebugWriteLine("Update command", "--debug={0}", debug);
|
||||||
DicConsole.DebugWriteLine("Update command", "--verbose={0}", verbose);
|
DicConsole.DebugWriteLine("Update command", "--verbose={0}", verbose);
|
||||||
|
|
||||||
DoUpdate(false);
|
if(clearAll)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File.Delete(Settings.Settings.LocalDbPath);
|
||||||
|
|
||||||
|
var ctx = DicContext.Create(Settings.Settings.LocalDbPath);
|
||||||
|
ctx.Database.Migrate();
|
||||||
|
ctx.SaveChanges();
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
if(Debugger.IsAttached)
|
||||||
|
throw;
|
||||||
|
|
||||||
|
DicConsole.ErrorWriteLine("Could not remove local database.");
|
||||||
|
|
||||||
|
return(int)ErrorNumber.CannotRemoveDatabase;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(clear || clearAll)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File.Delete(Settings.Settings.MasterDbPath);
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
if(Debugger.IsAttached)
|
||||||
|
throw;
|
||||||
|
|
||||||
|
DicConsole.ErrorWriteLine("Could not remove master database.");
|
||||||
|
|
||||||
|
return(int)ErrorNumber.CannotRemoveDatabase;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DoUpdate(clear || clearAll);
|
||||||
|
|
||||||
return(int)ErrorNumber.NoError;
|
return(int)ErrorNumber.NoError;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user