adds update command and fixes add command settings
This commit is contained in:
parent
2dd4b85e06
commit
fd74c06659
@ -65,6 +65,7 @@
|
|||||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/METHOD_OR_OPERATOR_BODY/@EntryValue">ExpressionBody</s:String>
|
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/METHOD_OR_OPERATOR_BODY/@EntryValue">ExpressionBody</s:String>
|
||||||
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_EXISTING_EXPR_MEMBER_ARRANGEMENT/@EntryValue">False</s:Boolean>
|
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_EXISTING_EXPR_MEMBER_ARRANGEMENT/@EntryValue">False</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_USER_LINEBREAKS/@EntryValue">False</s:Boolean>
|
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/KEEP_USER_LINEBREAKS/@EntryValue">False</s:Boolean>
|
||||||
|
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/MAX_ATTRIBUTE_LENGTH_FOR_SAME_LINE/@EntryValue">50</s:Int64>
|
||||||
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_CHAINED_METHOD_CALLS/@EntryValue">CHOP_IF_LONG</s:String>
|
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_CHAINED_METHOD_CALLS/@EntryValue">CHOP_IF_LONG</s:String>
|
||||||
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_LIMIT/@EntryValue">180</s:Int64>
|
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_LIMIT/@EntryValue">180</s:Int64>
|
||||||
<s:Boolean x:Key="/Default/CodeStyle/Naming/CSharpNaming/ApplyAutoDetectedRules/@EntryValue">False</s:Boolean>
|
<s:Boolean x:Key="/Default/CodeStyle/Naming/CSharpNaming/ApplyAutoDetectedRules/@EntryValue">False</s:Boolean>
|
||||||
|
@ -54,11 +54,10 @@ internal class PiwigoAddCommand : CancellableAsyncCommand<PiwigoAddCommand.Piwig
|
|||||||
{
|
{
|
||||||
[CommandArgument(0, "<ServerName>")] public string ServerName { get; init; } = string.Empty;
|
[CommandArgument(0, "<ServerName>")] public string ServerName { get; init; } = string.Empty;
|
||||||
[CommandArgument(1, "<UserName>")] public string UserName { get; init; } = string.Empty;
|
[CommandArgument(1, "<UserName>")] public string UserName { get; init; } = string.Empty;
|
||||||
[CommandArgument(1, "<Password>")] public string Password { get; init; } = string.Empty;
|
[CommandArgument(2, "<Password>")] public string Password { get; init; } = string.Empty;
|
||||||
[CommandArgument(1, "<Password>")] public string Url { get; init; } = string.Empty;
|
[CommandArgument(3, "<Password>")] public string Url { get; init; } = string.Empty;
|
||||||
|
|
||||||
[CommandArgument(1, "<RootDirectory>")]
|
[CommandArgument(4, "<RootDirectory>")] public string RootDirectory { get; init; } = string.Empty;
|
||||||
public string RootDirectory { get; init; } = string.Empty;
|
|
||||||
|
|
||||||
public override ValidationResult Validate()
|
public override ValidationResult Validate()
|
||||||
{
|
{
|
||||||
|
108
PiwigoDirectorySync/Commands/PiwigoUpdateCommand.cs
Normal file
108
PiwigoDirectorySync/Commands/PiwigoUpdateCommand.cs
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using PiwigoDirectorySync.Infrastructure;
|
||||||
|
using PiwigoDirectorySync.Persistence;
|
||||||
|
using Spectre.Console;
|
||||||
|
using Spectre.Console.Cli;
|
||||||
|
|
||||||
|
namespace PiwigoDirectorySync.Commands;
|
||||||
|
|
||||||
|
internal class PiwigoUpdateCommand : CancellableAsyncCommand<PiwigoUpdateCommand.PiwigoUpdateSettings>
|
||||||
|
{
|
||||||
|
private readonly ILogger<PiwigoUpdateCommand> _logger;
|
||||||
|
private readonly PersistenceContext _persistenceContext;
|
||||||
|
|
||||||
|
public PiwigoUpdateCommand(ILogger<PiwigoUpdateCommand> logger, PersistenceContext persistenceContext)
|
||||||
|
{
|
||||||
|
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||||
|
_persistenceContext = persistenceContext ?? throw new ArgumentNullException(nameof(persistenceContext));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override async Task<int> ExecuteAsync(CommandContext context, PiwigoUpdateSettings settings, CancellationToken cancellation)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Adding piwigo server {SettingsServerName} with user {SettingsUserName} and url {SettingsUrl}", settings.ServerName, settings.UserName,
|
||||||
|
settings.Url);
|
||||||
|
|
||||||
|
var count = await _persistenceContext.PiwigoServers.Where(s => s.Name == settings.ServerName && s.Id != settings.PiwigoServerId).CountAsync(cancellation);
|
||||||
|
if (count > 0)
|
||||||
|
{
|
||||||
|
AnsiConsole.WriteLine(
|
||||||
|
$"[maroon]You can not rename the server with id {settings.PiwigoServerId} to {settings.ServerName} as there is already a server with this name[/]");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = await _persistenceContext.PiwigoServers.FindByIdAsync(settings.PiwigoServerId, cancellation);
|
||||||
|
if (server is null)
|
||||||
|
{
|
||||||
|
AnsiConsole.WriteLine($"[maroon]Could not find server with id {settings.PiwigoServerId}[/]");
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
server.Name = settings.ServerName ?? server.Name;
|
||||||
|
server.Username = settings.ServerName ?? server.Username;
|
||||||
|
server.Password = settings.Password ?? server.Password;
|
||||||
|
server.Url = settings.Url ?? server.Url;
|
||||||
|
server.RootDirectory = settings.RootDirectory ?? server.RootDirectory;
|
||||||
|
|
||||||
|
await _persistenceContext.SaveChangesAsync(cancellation);
|
||||||
|
|
||||||
|
AnsiConsole.WriteLine($"[green]Added server {settings.ServerName} with id {server.Id}[/]");
|
||||||
|
|
||||||
|
var piwigoServers = await _persistenceContext.PiwigoServers.ToListAsync(cancellation);
|
||||||
|
PiwigoListCommand.PrintServers(piwigoServers);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[SuppressMessage("ReSharper", "UnusedAutoPropertyAccessor.Global")]
|
||||||
|
internal class PiwigoUpdateSettings : CommonCommandSettings
|
||||||
|
{
|
||||||
|
[CommandArgument(0, "[ServerName]")] public string? ServerName { get; init; }
|
||||||
|
[CommandArgument(1, "[UserName]")] public string? UserName { get; init; }
|
||||||
|
[CommandArgument(2, "[Password]")] public string? Password { get; init; }
|
||||||
|
[CommandArgument(3, "[Password]")] public string? Url { get; init; }
|
||||||
|
[CommandArgument(4, "[RootDirectory]")] public string? RootDirectory { get; init; }
|
||||||
|
|
||||||
|
public override ValidationResult Validate()
|
||||||
|
{
|
||||||
|
var baseResult = base.Validate();
|
||||||
|
if (!baseResult.Successful)
|
||||||
|
{
|
||||||
|
return baseResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(ServerName))
|
||||||
|
{
|
||||||
|
return ValidationResult.Error("Please specify a server name");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(Url))
|
||||||
|
{
|
||||||
|
return ValidationResult.Error("Please specify a server url");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(UserName))
|
||||||
|
{
|
||||||
|
return ValidationResult.Error("Please specify a valid username for the server");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(Password))
|
||||||
|
{
|
||||||
|
return ValidationResult.Error("Please specify a password");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(RootDirectory))
|
||||||
|
{
|
||||||
|
return ValidationResult.Error("Please specify a root directory");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Directory.Exists(RootDirectory))
|
||||||
|
{
|
||||||
|
return ValidationResult.Error($"The root directory {RootDirectory} does not exist or is not accessible");
|
||||||
|
}
|
||||||
|
|
||||||
|
return ValidationResult.Success();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -4,6 +4,10 @@ namespace PiwigoDirectorySync.Persistence;
|
|||||||
|
|
||||||
public static class ExtensionMethods
|
public static class ExtensionMethods
|
||||||
{
|
{
|
||||||
|
public static Task<ServerEntity?> FindByIdAsync(this DbSet<ServerEntity> dbSet, int serverId, CancellationToken ct)
|
||||||
|
{
|
||||||
|
return dbSet.Where(a => a.Id == serverId).FirstOrDefaultAsync(ct);
|
||||||
|
}
|
||||||
public static Task<ServerEntity> GetByIdAsync(this DbSet<ServerEntity> dbSet, int serverId, CancellationToken ct)
|
public static Task<ServerEntity> GetByIdAsync(this DbSet<ServerEntity> dbSet, int serverId, CancellationToken ct)
|
||||||
{
|
{
|
||||||
return dbSet.Where(a => a.Id == serverId).FirstAsync(ct);
|
return dbSet.Where(a => a.Id == serverId).FirstAsync(ct);
|
||||||
|
@ -56,7 +56,7 @@ app.Configure(config =>
|
|||||||
{
|
{
|
||||||
c.AddCommand<PiwigoListCommand>("list");
|
c.AddCommand<PiwigoListCommand>("list");
|
||||||
c.AddCommand<PiwigoAddCommand>("add");
|
c.AddCommand<PiwigoAddCommand>("add");
|
||||||
// c.AddCommand<PiwigoUpdateCommand>("update");
|
c.AddCommand<PiwigoUpdateCommand>("update");
|
||||||
// c.AddCommand<PiwigoRemoveCommand>("remove");
|
// c.AddCommand<PiwigoRemoveCommand>("remove");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user