adds common read only flag for sync commands
All checks were successful
PiwigoDirectorySync/pipeline/head This commit looks good
All checks were successful
PiwigoDirectorySync/pipeline/head This commit looks good
This commit is contained in:
parent
baa0117e1e
commit
092738d767
@ -1,5 +1,4 @@
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Diagnostics;
|
||||
using PiwigoDirectorySync.Infrastructure;
|
||||
using PiwigoDirectorySync.Services;
|
||||
using Serilog;
|
||||
@ -23,7 +22,7 @@ internal class SyncAlbumsCommand : CancellableAsyncCommand<SyncAlbumsCommand.Syn
|
||||
|
||||
var stopWatch = Stopwatch.StartNew();
|
||||
|
||||
await _albumSynchronizer.SynchronizeAlbums(settings.PiwigoServerId, settings.CreateAlbumsOnServer, cancellationToken);
|
||||
await _albumSynchronizer.SynchronizeAlbums(settings.PiwigoServerId, settings.ReadOnly, cancellationToken);
|
||||
|
||||
stopWatch.Stop();
|
||||
_logger.Information("Synchronized all albums with piwigo server {SettingsPiwigoServerId} in {ElapsedTotalSeconds} seconds", settings.PiwigoServerId,
|
||||
@ -32,10 +31,7 @@ internal class SyncAlbumsCommand : CancellableAsyncCommand<SyncAlbumsCommand.Syn
|
||||
return 0;
|
||||
}
|
||||
|
||||
internal class SyncAlbumsSettings : CommonCommandSettings
|
||||
internal class SyncAlbumsSettings : SyncCommandSettings
|
||||
{
|
||||
[CommandOption("-c|--create-albums")]
|
||||
[DefaultValue(true)]
|
||||
public bool CreateAlbumsOnServer { get; set; }
|
||||
}
|
||||
}
|
12
PiwigoDirectorySync/Commands/SyncCommandSettings.cs
Normal file
12
PiwigoDirectorySync/Commands/SyncCommandSettings.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System.ComponentModel;
|
||||
using Spectre.Console.Cli;
|
||||
|
||||
namespace PiwigoDirectorySync.Commands;
|
||||
|
||||
internal class SyncCommandSettings : CommonCommandSettings
|
||||
{
|
||||
[Description("specify this flag to only read from the piwigo server and skip all updates. This might help on initial sync with an existing gallerie to not change any data.")]
|
||||
[CommandOption("-ro|--read-only")]
|
||||
[DefaultValue(false)]
|
||||
public bool ReadOnly { get; set; }
|
||||
}
|
@ -31,10 +31,10 @@ internal class SyncFullCommand : CancellableAsyncCommand<SyncFullCommand.SyncFul
|
||||
await ScanCommand.ScanDirectory(_logger, _fileIndexer, _fileSystemScanner, settings.PiwigoServerId, cancellationToken);
|
||||
|
||||
_logger.Information("running album synchronization");
|
||||
await _albumSynchronizer.SynchronizeAlbums(settings.PiwigoServerId, true, cancellationToken);
|
||||
await _albumSynchronizer.SynchronizeAlbums(settings.PiwigoServerId, settings.ReadOnly, cancellationToken);
|
||||
|
||||
_logger.Information("running image synchronization");
|
||||
await _imageSynchronizer.SynchronizeImagesAsync(settings.PiwigoServerId, cancellationToken);
|
||||
await _imageSynchronizer.SynchronizeImagesAsync(settings.PiwigoServerId, settings.ReadOnly, cancellationToken);
|
||||
|
||||
stopWatch.Stop();
|
||||
_logger.Information("Full synchronization for piwigo server {SettingsPiwigoServerId} finished in {ElapsedTotalSeconds} seconds", settings.PiwigoServerId,
|
||||
@ -43,7 +43,7 @@ internal class SyncFullCommand : CancellableAsyncCommand<SyncFullCommand.SyncFul
|
||||
return 0;
|
||||
}
|
||||
|
||||
internal class SyncFullSettings : CommonCommandSettings
|
||||
internal class SyncFullSettings : SyncCommandSettings
|
||||
{
|
||||
}
|
||||
}
|
@ -21,7 +21,7 @@ internal class SyncImagesCommand : CancellableAsyncCommand<SyncImagesCommand.Syn
|
||||
_logger.Information("Starting image synchronization of piwigo server {SettingsPiwigoServerId}", settings.PiwigoServerId);
|
||||
var stopWatch = Stopwatch.StartNew();
|
||||
|
||||
await _imageSynchronizer.SynchronizeImagesAsync(settings.PiwigoServerId, cancellationToken);
|
||||
await _imageSynchronizer.SynchronizeImagesAsync(settings.PiwigoServerId, settings.ReadOnly, cancellationToken);
|
||||
|
||||
stopWatch.Stop();
|
||||
_logger.Information("Synchronized all images with piwigo server {SettingsPiwigoServerId} in {ElapsedTotalSeconds} seconds", settings.PiwigoServerId,
|
||||
@ -30,7 +30,7 @@ internal class SyncImagesCommand : CancellableAsyncCommand<SyncImagesCommand.Syn
|
||||
return 0;
|
||||
}
|
||||
|
||||
internal class SyncImagesSettings : CommonCommandSettings
|
||||
internal class SyncImagesSettings : SyncCommandSettings
|
||||
{
|
||||
}
|
||||
}
|
@ -19,7 +19,7 @@ internal class AlbumSynchronizer : IAlbumSynchronizer
|
||||
_persistenceContext = persistenceContext;
|
||||
}
|
||||
|
||||
public async Task SynchronizeAlbums(int piwigoServerId, bool createAlbumsOnServer, CancellationToken ct)
|
||||
public async Task SynchronizeAlbums(int piwigoServerId, bool readOnly, CancellationToken ct)
|
||||
{
|
||||
var piwigoServer = await _persistenceContext.PiwigoServers.FindAsync(new object?[] { piwigoServerId }, ct);
|
||||
if (piwigoServer is null)
|
||||
@ -31,7 +31,7 @@ internal class AlbumSynchronizer : IAlbumSynchronizer
|
||||
var piwigoClient = await _piwigoClientFactory.GetPiwigoClientAsync(piwigoServer, ct);
|
||||
|
||||
await UpdatePiwigoAlbumsFromServerAsync(piwigoClient, piwigoServer, ct);
|
||||
if (createAlbumsOnServer)
|
||||
if (!readOnly)
|
||||
{
|
||||
_logger.Information("Creating missing albums on server {PiwigoServerId} - {PiwigoServerName}", piwigoServer.Id, piwigoServer.Name);
|
||||
await AddMissingAlbumsToServerAsync(piwigoClient, piwigoServer, ct);
|
||||
|
@ -2,5 +2,5 @@ namespace PiwigoDirectorySync.Services;
|
||||
|
||||
internal interface IAlbumSynchronizer
|
||||
{
|
||||
Task SynchronizeAlbums(int piwigoServerId, bool createAlbumsOnServer, CancellationToken ct);
|
||||
Task SynchronizeAlbums(int piwigoServerId, bool readOnly, CancellationToken ct);
|
||||
}
|
@ -2,6 +2,6 @@
|
||||
|
||||
internal interface IImageSynchronizer
|
||||
{
|
||||
Task SynchronizeImagesAsync(int piwigoServerId, CancellationToken ct);
|
||||
Task SynchronizeImagesAsync(int piwigoServerId, bool readOnly, CancellationToken ct);
|
||||
Task DownloadImagesAsync(int piwigoServerId, CancellationToken ct);
|
||||
}
|
@ -48,7 +48,7 @@ internal class ImageSynchronizer : IImageSynchronizer
|
||||
}
|
||||
}
|
||||
|
||||
public async Task SynchronizeImagesAsync(int piwigoServerId, CancellationToken ct)
|
||||
public async Task SynchronizeImagesAsync(int piwigoServerId, bool readOnly, CancellationToken ct)
|
||||
{
|
||||
var piwigoServer = await _persistenceContext.PiwigoServers.FindAsync(new object?[] { piwigoServerId }, ct);
|
||||
if (piwigoServer is null)
|
||||
@ -57,15 +57,21 @@ internal class ImageSynchronizer : IImageSynchronizer
|
||||
return;
|
||||
}
|
||||
|
||||
_logger.Information("Synchronizing images of piwigo server {PiwigoServerName} using base path {PiwigoServerRootDirectory}", piwigoServer.Name,
|
||||
piwigoServer.RootDirectory);
|
||||
_logger.Information("Synchronizing images of piwigo server {PiwigoServerName} using base path {PiwigoServerRootDirectory}", piwigoServer.Name, piwigoServer.RootDirectory);
|
||||
|
||||
var piwigoClient = await _piwigoClientFactory.GetPiwigoClientAsync(piwigoServer, ct);
|
||||
|
||||
await GetImageIdsFromServerAsync(piwigoClient, piwigoServer, ct);
|
||||
if (!readOnly)
|
||||
{
|
||||
await UploadNewImagesToServerAsync(piwigoClient, piwigoServer, ct);
|
||||
await UploadChangedImagesToServerAsync(piwigoClient, piwigoServer, ct);
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.Information("Skipping image upload of server {PiwigoServerName} as readOnly is specified", piwigoServer.Name);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task DownloadImagesForAlbumAsync(IPiwigoClient piwigoClient, ServerEntity piwigoServer, int albumId, Album albumInfo, CancellationToken ct)
|
||||
{
|
||||
@ -140,7 +146,7 @@ internal class ImageSynchronizer : IImageSynchronizer
|
||||
private async Task UploadChangedImagesToServerAsync(IPiwigoClient piwigoClient, ServerEntity piwigoServer, CancellationToken ct)
|
||||
{
|
||||
var imagesToUpload = await _persistenceContext.PiwigoImages.Include(i => i.Album)
|
||||
.Where(i => i.ServerImageId != null && i.Album.ServerId == piwigoServer.Id && i.UploadRequired)
|
||||
.Where(i => i.ServerImageId != null && i.Album.ServerId == piwigoServer.Id && i.UploadRequired && i.ServerImageId != null)
|
||||
.ToListAsync(ct);
|
||||
|
||||
_logger.Information("Updating {Count} images", imagesToUpload.Count);
|
||||
|
Loading…
Reference in New Issue
Block a user