mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-07-09 03:04:19 -04:00
Merge branch 'develop' of https://github.com/Kareadita/Kavita into develop
This commit is contained in:
commit
b12c8d8927
@ -34,6 +34,7 @@ public class CleanupServiceTests
|
|||||||
private const string CacheDirectory = "C:/kavita/config/cache/";
|
private const string CacheDirectory = "C:/kavita/config/cache/";
|
||||||
private const string CoverImageDirectory = "C:/kavita/config/covers/";
|
private const string CoverImageDirectory = "C:/kavita/config/covers/";
|
||||||
private const string BackupDirectory = "C:/kavita/config/backups/";
|
private const string BackupDirectory = "C:/kavita/config/backups/";
|
||||||
|
private const string BookmarkDirectory = "C:/kavita/config/bookmarks/";
|
||||||
|
|
||||||
|
|
||||||
public CleanupServiceTests()
|
public CleanupServiceTests()
|
||||||
@ -75,6 +76,9 @@ public class CleanupServiceTests
|
|||||||
setting = await _context.ServerSetting.Where(s => s.Key == ServerSettingKey.BackupDirectory).SingleAsync();
|
setting = await _context.ServerSetting.Where(s => s.Key == ServerSettingKey.BackupDirectory).SingleAsync();
|
||||||
setting.Value = BackupDirectory;
|
setting.Value = BackupDirectory;
|
||||||
|
|
||||||
|
setting = await _context.ServerSetting.Where(s => s.Key == ServerSettingKey.BookmarkDirectory).SingleAsync();
|
||||||
|
setting.Value = BookmarkDirectory;
|
||||||
|
|
||||||
_context.ServerSetting.Update(setting);
|
_context.ServerSetting.Update(setting);
|
||||||
|
|
||||||
_context.Library.Add(new Library()
|
_context.Library.Add(new Library()
|
||||||
@ -94,6 +98,8 @@ public class CleanupServiceTests
|
|||||||
private async Task ResetDB()
|
private async Task ResetDB()
|
||||||
{
|
{
|
||||||
_context.Series.RemoveRange(_context.Series.ToList());
|
_context.Series.RemoveRange(_context.Series.ToList());
|
||||||
|
_context.Users.RemoveRange(_context.Users.ToList());
|
||||||
|
_context.AppUserBookmark.RemoveRange(_context.AppUserBookmark.ToList());
|
||||||
|
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
@ -106,6 +112,7 @@ public class CleanupServiceTests
|
|||||||
fileSystem.AddDirectory(CacheDirectory);
|
fileSystem.AddDirectory(CacheDirectory);
|
||||||
fileSystem.AddDirectory(CoverImageDirectory);
|
fileSystem.AddDirectory(CoverImageDirectory);
|
||||||
fileSystem.AddDirectory(BackupDirectory);
|
fileSystem.AddDirectory(BackupDirectory);
|
||||||
|
fileSystem.AddDirectory(BookmarkDirectory);
|
||||||
fileSystem.AddDirectory("C:/data/");
|
fileSystem.AddDirectory("C:/data/");
|
||||||
|
|
||||||
return fileSystem;
|
return fileSystem;
|
||||||
@ -356,4 +363,71 @@ public class CleanupServiceTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region CleanupBookmarks
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task CleanupBookmarks_LeaveAllFiles()
|
||||||
|
{
|
||||||
|
var filesystem = CreateFileSystem();
|
||||||
|
filesystem.AddFile($"{BookmarkDirectory}1/1/1/0001.jpg", new MockFileData(""));
|
||||||
|
filesystem.AddFile($"{BookmarkDirectory}1/1/1/0002.jpg", new MockFileData(""));
|
||||||
|
|
||||||
|
// Delete all Series to reset state
|
||||||
|
await ResetDB();
|
||||||
|
|
||||||
|
_context.Series.Add(new Series()
|
||||||
|
{
|
||||||
|
Name = "Test",
|
||||||
|
Library = new Library() {
|
||||||
|
Name = "Test LIb",
|
||||||
|
Type = LibraryType.Manga,
|
||||||
|
},
|
||||||
|
Volumes = new List<Volume>()
|
||||||
|
{
|
||||||
|
new Volume()
|
||||||
|
{
|
||||||
|
Chapters = new List<Chapter>()
|
||||||
|
{
|
||||||
|
new Chapter()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
|
_context.AppUser.Add(new AppUser()
|
||||||
|
{
|
||||||
|
Bookmarks = new List<AppUserBookmark>()
|
||||||
|
{
|
||||||
|
new AppUserBookmark()
|
||||||
|
{
|
||||||
|
AppUserId = 1,
|
||||||
|
ChapterId = 1,
|
||||||
|
Page = 1,
|
||||||
|
FileName = "1/1/1/0001.jpg",
|
||||||
|
SeriesId = 1,
|
||||||
|
VolumeId = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
|
|
||||||
|
var ds = new DirectoryService(Substitute.For<ILogger<DirectoryService>>(), filesystem);
|
||||||
|
var cleanupService = new CleanupService(_logger, _unitOfWork, _messageHub,
|
||||||
|
ds);
|
||||||
|
|
||||||
|
await cleanupService.CleanupBookmarks();
|
||||||
|
|
||||||
|
Assert.Equal(1, ds.GetFiles(BookmarkDirectory, searchOption:SearchOption.AllDirectories).Count());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
|
@ -174,16 +174,17 @@ namespace API.Services.Tasks
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task CleanupBookmarks()
|
public async Task CleanupBookmarks()
|
||||||
{
|
{
|
||||||
// Search all files in bookmarks/
|
// Search all files in bookmarks/ except bookmark files and delete those
|
||||||
// except bookmark files and delete those
|
|
||||||
var bookmarkDirectory =
|
var bookmarkDirectory =
|
||||||
(await _unitOfWork.SettingsRepository.GetSettingAsync(ServerSettingKey.BookmarkDirectory)).Value;
|
(await _unitOfWork.SettingsRepository.GetSettingAsync(ServerSettingKey.BookmarkDirectory)).Value;
|
||||||
var allBookmarkFiles = _directoryService.GetFiles(bookmarkDirectory, searchOption: SearchOption.AllDirectories);
|
var allBookmarkFiles = _directoryService.GetFiles(bookmarkDirectory, searchOption: SearchOption.AllDirectories).Select(f => _directoryService.FileSystem.Path.GetFullPath(f));
|
||||||
var bookmarks = (await _unitOfWork.UserRepository.GetAllBookmarksAsync())
|
var bookmarks = (await _unitOfWork.UserRepository.GetAllBookmarksAsync())
|
||||||
.Select(b => _directoryService.FileSystem.Path.Join(bookmarkDirectory,
|
.Select(b => _directoryService.FileSystem.Path.GetFullPath(_directoryService.FileSystem.Path.Join(bookmarkDirectory,
|
||||||
b.FileName));
|
b.FileName)));
|
||||||
|
|
||||||
var filesToDelete = allBookmarkFiles.Except(bookmarks);
|
|
||||||
|
var filesToDelete = allBookmarkFiles.ToList().Except(bookmarks).ToList();
|
||||||
|
_logger.LogDebug("[Bookmarks] Bookmark cleanup wants to delete {Count} files", filesToDelete.Count());
|
||||||
|
|
||||||
_directoryService.DeleteFiles(filesToDelete);
|
_directoryService.DeleteFiles(filesToDelete);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user