From 112daccec93b21f74faf3a3b85b2f9a47b2ae81f Mon Sep 17 00:00:00 2001 From: Ogoun Date: Sun, 12 May 2024 20:23:51 +0300 Subject: [PATCH] Refactoring and new methods --- src/BukiVedi.App/BukiVedi - Backup.App.csproj | 97 +++++++ src/BukiVedi.App/BukiVedi.App.csproj | 113 ++++++-- .../Controllers/AuthorsController.cs | 63 +++-- .../Controllers/BooksController.cs | 198 ++++---------- .../Controllers/TagsController.cs | 70 ++--- src/BukiVedi.App/Program.cs | 8 +- .../PublishProfiles/FolderProfile.pubxml.user | 2 +- src/BukiVedi.App/Responces/BookResponse.cs | 75 +----- .../Services/Mappers/BookEntityMapper.cs | 8 +- .../obj/BukiVedi.App.csproj.nuget.dgspec.json | 2 +- .../Debug/net8.0/BukiVedi.App.AssemblyInfo.cs | 2 +- .../BukiVedi.App.AssemblyInfoInputs.cache | 2 +- .../Debug/net8.0/BukiVedi.App.assets.cache | Bin 11650 -> 11656 bytes ...ukiVedi.App.csproj.AssemblyReference.cache | Bin 9981 -> 9981 bytes .../BukiVedi.App.csproj.FileListAbsolute.txt | 26 +- .../obj/Debug/net8.0/BukiVedi.App.pdb | Bin 33344 -> 30396 bytes .../net8.0/BukiVedi.App.AssemblyInfo.cs | 2 +- .../BukiVedi.App.AssemblyInfoInputs.cache | 2 +- .../Release/net8.0/BukiVedi.App.assets.cache | Bin 11650 -> 11656 bytes ...ukiVedi.App.csproj.AssemblyReference.cache | Bin 10491 -> 10491 bytes .../BukiVedi.App.csproj.FileListAbsolute.txt | 33 ++- .../obj/Release/net8.0/BukiVedi.App.pdb | Bin 31416 -> 29224 bytes src/BukiVedi.App/obj/project.assets.json | 8 +- src/BukiVedi.App/obj/project.nuget.cache | 5 +- .../BukiVedi.App.csproj.nuget.dgspec.json | 2 +- .../obj/publish/linux-x64/project.assets.json | 14 +- .../obj/publish/linux-x64/project.nuget.cache | 3 +- src/BukiVedi.App/web/assets/heart.svg | 16 ++ src/BukiVedi.App/web/assets/heart_full.svg | 16 ++ src/BukiVedi.App/web/css/common.css | 5 + src/BukiVedi.App/web/css/logo.css | 2 +- src/BukiVedi.App/web/css/main.css | 49 +++- src/BukiVedi.App/web/css/scroll.css | 40 +++ src/BukiVedi.App/web/index.html | 76 ++---- src/BukiVedi.App/web/js/constants/index.js | 10 +- src/BukiVedi.App/web/js/main/index.js | 66 +++-- src/BukiVedi.App/web/js/requests/index.js | 21 +- src/BukiVedi.App/web/js/scroll/index.js | 80 ++++++ src/BukiVedi.App/web/script.js | 29 +++ src/BukiVedi.App/web/server.js | 52 ++++ src/BukiVedi.Shared/Apps/AuthorHandler.cs | 67 +++++ src/BukiVedi.Shared/Apps/BooksHandler.cs | 243 ++++++++++++++++++ src/BukiVedi.Shared/Apps/IAuthorHandler.cs | 13 + src/BukiVedi.Shared/Apps/IBooksHandler.cs | 18 ++ src/BukiVedi.Shared/Apps/ITagsHandler.cs | 12 + src/BukiVedi.Shared/Apps/TagsHandler.cs | 56 ++++ src/BukiVedi.Shared/Models/AuthorInfo.cs | 10 + src/BukiVedi.Shared/Models/BookDocument.cs | 4 +- src/BukiVedi.Shared/Models/BookDto.cs | 15 ++ src/BukiVedi.Shared/Models/BookInfo.cs | 61 ++++- src/BukiVedi.Shared/Models/FormatInfo.cs | 8 + src/BukiVedi.Shared/Models/GenreInfo.cs | 8 + src/BukiVedi.Shared/Models/TagInfo.cs | 8 + src/BukiVedi.Shared/Services/Library.cs | 6 +- .../Services/Mappers/BookEntityMapper.cs | 41 +++ .../Services/ZipLibraryReader.cs | 12 +- .../Debug/net8.0/BukiVedi.Shared.deps.json | 8 +- .../bin/Debug/net8.0/BukiVedi.Shared.pdb | Bin 35624 -> 44236 bytes .../bin/Debug/net8.0/LemmaSharp.pdb | Bin 85504 -> 85504 bytes .../bin/Debug/net8.0/LemmaSharpPrebuilt.pdb | Bin 19968 -> 19968 bytes .../Debug/net8.0/LemmaSharpPrebuiltFull.pdb | Bin 15872 -> 15872 bytes .../Release/net8.0/BukiVedi.Shared.deps.json | 8 +- .../bin/Release/net8.0/BukiVedi.Shared.pdb | Bin 31324 -> 37972 bytes .../BukiVedi.Shared.csproj.nuget.dgspec.json | 2 +- .../net8.0/BukiVedi.Shared.AssemblyInfo.cs | 2 +- .../BukiVedi.Shared.AssemblyInfoInputs.cache | 2 +- ...Vedi.Shared.csproj.AssemblyReference.cache | Bin 8349 -> 8784 bytes ...Vedi.Shared.csproj.CoreCompileInputs.cache | 2 +- .../obj/Debug/net8.0/BukiVedi.Shared.pdb | Bin 35624 -> 44236 bytes .../net8.0/BukiVedi.Shared.AssemblyInfo.cs | 2 +- .../BukiVedi.Shared.AssemblyInfoInputs.cache | 2 +- ...Vedi.Shared.csproj.AssemblyReference.cache | Bin 8830 -> 7582 bytes ...Vedi.Shared.csproj.CoreCompileInputs.cache | 2 +- .../obj/Release/net8.0/BukiVedi.Shared.pdb | Bin 31324 -> 37972 bytes src/BukiVedi.Shared/obj/project.assets.json | 12 +- src/BukiVedi.Shared/obj/project.nuget.cache | 5 +- src/IndexExportTest/IndexExportTest.csproj | 7 + src/IndexExportTest/Program.cs | 14 +- src/IndexExportTest/config.ini | 9 + .../bin/Debug/net8.0/BukiVedi.Shared.pdb | Bin 35624 -> 44236 bytes .../bin/Debug/net8.0/LemmaSharp.pdb | Bin 85504 -> 85504 bytes .../bin/Debug/net8.0/LemmaSharpPrebuilt.pdb | Bin 19968 -> 19968 bytes .../Debug/net8.0/LemmaSharpPrebuiltFull.pdb | Bin 15872 -> 15872 bytes .../bin/Debug/net8.0/TitleReader.deps.json | 8 +- .../bin/Debug/net8.0/TitleReader.pdb | Bin 14092 -> 14092 bytes .../Debug/net8.0/TitleReader.AssemblyInfo.cs | 2 +- .../TitleReader.AssemblyInfoInputs.cache | 2 +- .../obj/Debug/net8.0/TitleReader.assets.cache | Bin 11650 -> 11656 bytes ...TitleReader.csproj.AssemblyReference.cache | Bin 10734 -> 7935 bytes .../obj/Debug/net8.0/TitleReader.pdb | Bin 14092 -> 14092 bytes .../net8.0/TitleReader.AssemblyInfo.cs | 2 +- .../TitleReader.AssemblyInfoInputs.cache | 2 +- .../Release/net8.0/TitleReader.assets.cache | Bin 11650 -> 11656 bytes ...TitleReader.csproj.AssemblyReference.cache | Bin 8698 -> 10684 bytes .../obj/TitleReader.csproj.nuget.dgspec.json | 2 +- src/TitleReader/obj/project.assets.json | 8 +- src/TitleReader/obj/project.nuget.cache | 5 +- 97 files changed, 1390 insertions(+), 497 deletions(-) create mode 100644 src/BukiVedi.App/BukiVedi - Backup.App.csproj create mode 100644 src/BukiVedi.App/web/assets/heart.svg create mode 100644 src/BukiVedi.App/web/assets/heart_full.svg create mode 100644 src/BukiVedi.App/web/css/scroll.css create mode 100644 src/BukiVedi.App/web/js/scroll/index.js create mode 100644 src/BukiVedi.App/web/script.js create mode 100644 src/BukiVedi.App/web/server.js create mode 100644 src/BukiVedi.Shared/Apps/AuthorHandler.cs create mode 100644 src/BukiVedi.Shared/Apps/BooksHandler.cs create mode 100644 src/BukiVedi.Shared/Apps/IAuthorHandler.cs create mode 100644 src/BukiVedi.Shared/Apps/IBooksHandler.cs create mode 100644 src/BukiVedi.Shared/Apps/ITagsHandler.cs create mode 100644 src/BukiVedi.Shared/Apps/TagsHandler.cs create mode 100644 src/BukiVedi.Shared/Models/AuthorInfo.cs create mode 100644 src/BukiVedi.Shared/Models/BookDto.cs create mode 100644 src/BukiVedi.Shared/Models/FormatInfo.cs create mode 100644 src/BukiVedi.Shared/Models/GenreInfo.cs create mode 100644 src/BukiVedi.Shared/Models/TagInfo.cs create mode 100644 src/BukiVedi.Shared/Services/Mappers/BookEntityMapper.cs create mode 100644 src/IndexExportTest/config.ini diff --git a/src/BukiVedi.App/BukiVedi - Backup.App.csproj b/src/BukiVedi.App/BukiVedi - Backup.App.csproj new file mode 100644 index 0000000..7031d57 --- /dev/null +++ b/src/BukiVedi.App/BukiVedi - Backup.App.csproj @@ -0,0 +1,97 @@ + + + + net8.0 + enable + enable + + + + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + Always + + + Always + + + Always + + + Always + + + PreserveNewest + + + Always + + + Always + + + PreserveNewest + + + Always + + + Always + + + Always + + + PreserveNewest + + + Always + + + Always + + + Always + + + Always + + + + diff --git a/src/BukiVedi.App/BukiVedi.App.csproj b/src/BukiVedi.App/BukiVedi.App.csproj index 7031d57..2660fc2 100644 --- a/src/BukiVedi.App/BukiVedi.App.csproj +++ b/src/BukiVedi.App/BukiVedi.App.csproj @@ -6,6 +6,40 @@ enable + + + + + + + + + + + + + + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + @@ -15,52 +49,79 @@ Always - Always + PreserveNewest + + + PreserveNewest + + + PreserveNewest - Always + PreserveNewest Always - Always + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest - - Always + + PreserveNewest - - Always + + PreserveNewest - - Always + + PreserveNewest - - Always + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest PreserveNewest - Always + PreserveNewest Always @@ -72,26 +133,32 @@ Always - Always + PreserveNewest - Always + PreserveNewest PreserveNewest - Always + PreserveNewest - Always + PreserveNewest - Always + PreserveNewest + + + PreserveNewest Always + + PreserveNewest + diff --git a/src/BukiVedi.App/Controllers/AuthorsController.cs b/src/BukiVedi.App/Controllers/AuthorsController.cs index 958fe72..d3c8a35 100644 --- a/src/BukiVedi.App/Controllers/AuthorsController.cs +++ b/src/BukiVedi.App/Controllers/AuthorsController.cs @@ -1,10 +1,7 @@ -using BukiVedi.App.Responces; -using BukiVedi.App.Services.Mappers; -using BukiVedi.Shared.Entities; -using BukiVedi.Shared.Services; +using BukiVedi.Shared.Apps; +using BukiVedi.Shared.Models; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using MongoDB.Driver; namespace BukiVedi.App.Controllers { @@ -14,11 +11,31 @@ namespace BukiVedi.App.Controllers public class AuthorsController : BaseController { - private readonly ILibrary _library; - public AuthorsController(ILibrary library) + private readonly IAuthorHandler _handler; + public AuthorsController(IAuthorHandler handler) : base() { - _library = library; + _handler = handler; + } + + /// + /// Получить список всех авторов + /// + /// Список авторов + [HttpGet()] + public async Task>> GetAllAuthors() + { + return Ok(await _handler.GetAllAuthors(OperationContext)); + } + + /// + /// Получить список авторов, которых пользователь добавил в избранное + /// + /// Список авторов + [HttpGet("favorite")] + public async Task>> GetFavoriteAuthors() + { + return Ok(await _handler.GetFavoriteAuthors(OperationContext)); } /// @@ -27,33 +44,31 @@ namespace BukiVedi.App.Controllers /// Идентификатор автора /// Список книг [HttpPost("{id}/books")] - public async Task>> SearchByAuthor([FromRoute] string id) + public async Task>> SearchByAuthor([FromRoute] string id) { - var books = (await _library.SearchBooksByAuthor(id)).ToArray(); - return Ok(await BookEntityMapper.Map(books)); + return Ok(await _handler.SearchByAuthor(id, OperationContext)); } /// - /// Получить список всех авторов + /// Добавление автора в избранные /// - /// Список авторов - [HttpGet()] - public async Task>> GetAllAuthors() + /// Ok + [HttpPost("favorite/{id}")] + public async Task AppendToFavorites([FromRoute] string id) { - var authors = (await Tables.Authors.GetAll()).Select(a => new AuthorInfo { Id = a.Id, Name = a.Name }).ToArray(); - return Ok(authors); + await _handler.AddToFavorite(id, OperationContext); + return Ok(); } /// - /// Получить список авторов, которых пользователь добавил в избранное + /// Удаление автора из избранных /// - /// Список авторов - [HttpGet("favorite")] - public async Task>> GetFavoriteAuthors() + /// Ok + [HttpDelete("favorite/{id}")] + public async Task RemoveFromFavorites([FromRoute] string id) { - var authorIds = (await Tables.FavoriteAuthors.Get(Builders.Filter.Eq(f => f.UserId, OperationContext.OperationInitiator.Id))).Select(f => f.AuthorId).ToHashSet(); - var authors = (await Tables.Authors.Get(Builders.Filter.In(a => a.Id, authorIds))).Select(a => new AuthorInfo { Id = a.Id, Name = a.Name }).ToArray(); - return Ok(authors); + await _handler.RemoveFromFavorite(id, OperationContext); + return Ok(); } } } diff --git a/src/BukiVedi.App/Controllers/BooksController.cs b/src/BukiVedi.App/Controllers/BooksController.cs index 57b497e..fbd193b 100644 --- a/src/BukiVedi.App/Controllers/BooksController.cs +++ b/src/BukiVedi.App/Controllers/BooksController.cs @@ -1,11 +1,8 @@ using BukiVedi.App.Requests; -using BukiVedi.App.Responces; -using BukiVedi.App.Services.Mappers; -using BukiVedi.Shared.Entities; -using BukiVedi.Shared.Services; +using BukiVedi.Shared.Apps; +using BukiVedi.Shared.Models; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using MongoDB.Driver; namespace BukiVedi.App.Controllers { @@ -15,11 +12,11 @@ namespace BukiVedi.App.Controllers public class BooksController : BaseController { - private readonly ILibrary _library; - public BooksController(ILibrary library) + private readonly IBooksHandler _handler; + public BooksController(IBooksHandler handler) : base() { - _library = library; + _handler = handler; } #region SEARCH @@ -29,53 +26,14 @@ namespace BukiVedi.App.Controllers /// Поисковый запрос /// Список найденных книг [HttpPost("search")] - public async Task>> Search([FromBody] QueryRequest request) + public async Task>> Search([FromBody] QueryRequest request) { - if (string.IsNullOrWhiteSpace(request.Query) == false) + string tag = null; + if (Request.Query.TryGetValue("tag", out var sv)) { - switch (request.Query.Trim().ToLowerInvariant()) - { - case "@favorites": - { - var books = (await _library.SearchFavoritesBooks(OperationContext.OperationInitiator.Id)).ToArray(); - return Ok(await BookEntityMapper.Map(books)); - } - case "@favoriteauthors": - { - var books = (await _library.SearchFavoriteAuthorsBooks(OperationContext.OperationInitiator.Id)).ToArray(); - return Ok(await BookEntityMapper.Map(books)); - } - case "@tagged": - { - string tag = null; - if (Request.Query.TryGetValue("tag", out var sv)) - { - tag = sv.ToString(); - } - var books = (await _library.SearchTaggedBooks(OperationContext.OperationInitiator.Id, tag: tag!)).ToArray(); - return Ok(await BookEntityMapper.Map(books)); - } - - case "@blocked": - { - var books = (await _library.SearchBlockedBooks(OperationContext.OperationInitiator.Id)).ToArray(); - return Ok(await BookEntityMapper.Map(books)); - } - - case "@toread": - { - var books = (await _library.SearchToReadBooks(OperationContext.OperationInitiator.Id)).ToArray(); - return Ok(await BookEntityMapper.Map(books)); - } - - default: - { - var books = (await _library.SearchBooks(request.Query)).ToArray(); - return Ok(await BookEntityMapper.Map(books)); - } - } + tag = sv.ToString(); } - return Ok(Enumerable.Empty()); + return Ok(await _handler.Search(request.Query, tag, OperationContext)); } #endregion @@ -87,22 +45,7 @@ namespace BukiVedi.App.Controllers [HttpPost("{id}/favorite")] public async Task AddToFavorite([FromRoute] string id) { - if (await Tables.Books.ExistById(id)) - { - var account_id = OperationContext.OperationInitiator.Id; - if (!string.IsNullOrEmpty(account_id)) - { - var exists_fiter = Builders.Filter.And - ( - Builders.Filter.Eq(f => f.UserId, account_id), - Builders.Filter.Eq(f => f.BookId, id) - ); - if (await Tables.FavoriteBooks.Exists(exists_fiter) == false) - { - await Tables.FavoriteBooks.Write(new FavoriteBook { BookId = id, UserId = account_id }); - } - } - } + await _handler.AddToFavorite(id, OperationContext); return Ok(); } @@ -114,27 +57,7 @@ namespace BukiVedi.App.Controllers [HttpPost("{id}/authors/favorite")] public async Task AddAuthorsToFavorite([FromRoute] string id) { - var book = await Tables.Books.GetById(id); - if (book != null) - { - var account_id = OperationContext.OperationInitiator.Id; - var authors = book.AuthorIds; - if (!string.IsNullOrEmpty(account_id) && authors?.Count > 0) - { - foreach (var author in authors) - { - var exists_fiter = Builders.Filter.And - ( - Builders.Filter.Eq(f => f.UserId, account_id), - Builders.Filter.Eq(f => f.AuthorId, author) - ); - if (await Tables.FavoriteAuthors.Exists(exists_fiter) == false) - { - await Tables.FavoriteAuthors.Write(new FavoriteAuthor { AuthorId = author, UserId = account_id }); - } - } - } - } + await _handler.AddAuthorsToFavorite(id, OperationContext); return Ok(); } @@ -146,22 +69,7 @@ namespace BukiVedi.App.Controllers [HttpPost("{id}/block")] public async Task BlockBook([FromRoute] string id) { - if (await Tables.Books.ExistById(id)) - { - var account_id = OperationContext.OperationInitiator.Id; - if (!string.IsNullOrEmpty(account_id)) - { - var exists_fiter = Builders.Filter.And - ( - Builders.Filter.Eq(f => f.UserId, account_id), - Builders.Filter.Eq(f => f.BookId, id) - ); - if (await Tables.DisgustingBooks.Exists(exists_fiter) == false) - { - await Tables.DisgustingBooks.Write(new DisgustingBook { BookId = id, UserId = account_id }); - } - } - } + await _handler.BlockBook(id, OperationContext); return Ok(); } @@ -171,29 +79,9 @@ namespace BukiVedi.App.Controllers /// Идентификатор книги, чьих авторов нужно заблокировать /// Ok [HttpPost("{id}/author/block")] - public async Task>> BlockBookAuthor([FromRoute] string id) + public async Task BlockBookAuthor([FromRoute] string id) { - var book = await Tables.Books.GetById(id); - if (book != null) - { - var account_id = OperationContext.OperationInitiator.Id; - var authors = book.AuthorIds; - if (!string.IsNullOrEmpty(account_id) && authors?.Count > 0) - { - foreach (var author in authors) - { - var exists_fiter = Builders.Filter.And - ( - Builders.Filter.Eq(f => f.UserId, account_id), - Builders.Filter.Eq(f => f.AuthorId, author) - ); - if (await Tables.DisgustingAuthors.Exists(exists_fiter) == false) - { - await Tables.DisgustingAuthors.Write(new DisgustingAuthor { AuthorId = author, UserId = account_id }); - } - } - } - } + await _handler.BlockBookAuthor(id, OperationContext); return Ok(); } @@ -205,22 +93,7 @@ namespace BukiVedi.App.Controllers [HttpPost("{id}/read")] public async Task AddBookToReadingQueue([FromRoute] string id) { - if (await Tables.Books.ExistById(id)) - { - var account_id = OperationContext.OperationInitiator.Id; - if (!string.IsNullOrEmpty(account_id)) - { - var exists_fiter = Builders.Filter.And - ( - Builders.Filter.Eq(f => f.UserId, account_id), - Builders.Filter.Eq(f => f.BookId, id) - ); - if (await Tables.ReadQueue.Exists(exists_fiter) == false) - { - await Tables.ReadQueue.Write(new ReadQueueItem { BookId = id, UserId = account_id, Timestamp = Timestamp.UtcNow }); - } - } - } + await _handler.AddBookToReadingQueue(id, OperationContext); return Ok(); } @@ -232,12 +105,43 @@ namespace BukiVedi.App.Controllers [HttpGet("download/{id}")] public async Task GetBlobDownload([FromRoute] string id) { - var content = new System.IO.MemoryStream(); - await _library.DownloadToStream(content, id); - content.Position = 0; + var (name, content) = await _handler.GetBlobData(id, OperationContext); var contentType = "APPLICATION/octet-stream"; - var fileName = $"{id}.fb2"; + var fileName = $"{name}.fb2"; return File(content, contentType, fileName); } + + /// + /// Удаление книги из избранного + /// + /// Ok + [HttpDelete("{id}/favorite")] + public async Task> RemoveFromFavorites([FromRoute] string id) + { + await _handler.RemoveFromFavorite(id, OperationContext); + return Ok(); + } + + /// + /// Удаление книги из заблокированных + /// + /// Ok + [HttpDelete("{id}/block")] + public async Task> Unblock([FromRoute] string id) + { + await _handler.UnblockBook(id, OperationContext); + return Ok(); + } + + /// + /// Удаление книги из очереди на чтение + /// + /// Ok + [HttpDelete("{id}/read")] + public async Task> RemoveFromReadingQueue([FromRoute] string id) + { + await _handler.RemoveFromReadingQueue(id, OperationContext); + return Ok(); + } } } diff --git a/src/BukiVedi.App/Controllers/TagsController.cs b/src/BukiVedi.App/Controllers/TagsController.cs index 0bb6d59..f3c6f91 100644 --- a/src/BukiVedi.App/Controllers/TagsController.cs +++ b/src/BukiVedi.App/Controllers/TagsController.cs @@ -1,11 +1,8 @@ using BukiVedi.App.Requests; -using BukiVedi.App.Responces; -using BukiVedi.App.Services.Mappers; -using BukiVedi.Shared.Entities; -using BukiVedi.Shared.Services; +using BukiVedi.Shared.Apps; +using BukiVedi.Shared.Models; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using MongoDB.Driver; namespace BukiVedi.App.Controllers { @@ -15,69 +12,52 @@ namespace BukiVedi.App.Controllers public class TagsController : BaseController { - private readonly ILibrary _library; - public TagsController(ILibrary library) + private readonly ITagsHandler _handler; + public TagsController(ITagsHandler handler) : base() { - _library = library; + _handler = handler; } /// - /// Добавление тега для книги + /// Список пользовательских тегов /// - /// Ok - [HttpPost] - public async Task AppendTag([FromBody] AppendTagRequest request) + /// + [HttpGet] + public async Task>> GetUserTags() { - if (request != null && string.IsNullOrWhiteSpace(request.Name) == false && await Tables.Books.ExistById(request.BookId)) - { - var name = request.Name.Trim().ToLowerInvariant(); - var tagFilter = Builders.Filter.And(Builders.Filter.Eq(t => t.BookId, request.BookId), Builders.Filter.Eq(t => t.Name, name)); - if (false == await Tables.UserTag.Exists(tagFilter)) - { - await Tables.UserTag.Write(new UserTag { BookId = request.BookId, Name = name, UserId = OperationContext.OperationInitiator.Id }); - } - } - return Ok(); + return Ok(await _handler.GetUserTags(OperationContext)); } /// - /// Удаление тега для книги + /// Добавление тега для книги /// /// Ok - [HttpDelete("id")] - public async Task> RemoveTag([FromRoute] string id) + [HttpPost] + public async Task AppendTag([FromBody] AppendTagRequest request) { - if (string.IsNullOrWhiteSpace(id) == false && await Tables.UserTag.ExistById(id)) - { - return Ok(await Tables.UserTag.TryRemoveById(id)); - } - return Ok(false); + await _handler.AppendTag(request?.BookId!, request?.Name!, OperationContext); + return Ok(); } /// - /// Список пользовательских тегов + /// Поиск книг по тегу /// - /// - [HttpGet] - public async Task>> GetUserTags() + /// Список найденных книг + [HttpPost("{id}/books")] + public async Task>> Search([FromRoute] string id) { - return Ok((await Tables.UserTag.Get(Builders.Filter.Eq(t => t.UserId, OperationContext.OperationInitiator.Id)))?.Select(t => t.Name)); + return Ok(await _handler.Search(id, OperationContext)); } /// - /// Поиск книг по тегу + /// Удаление тега для книги /// - /// Список найденных книг - [HttpPost("{id}/books")] - public async Task>> Search([FromRoute] string id) + /// Ok + [HttpDelete("{id}")] + public async Task> RemoveTag([FromRoute] string id) { - if (string.IsNullOrWhiteSpace(id) == false) - { - var books = await _library.SearchByTagBooks(OperationContext.OperationInitiator.Id, id); - return Ok(await BookEntityMapper.Map(books)); - } - return Ok(Enumerable.Empty()); + return Ok(await _handler.RemoveTag(id, OperationContext)); } } } diff --git a/src/BukiVedi.App/Program.cs b/src/BukiVedi.App/Program.cs index fe2f87e..64410e3 100644 --- a/src/BukiVedi.App/Program.cs +++ b/src/BukiVedi.App/Program.cs @@ -1,5 +1,6 @@ using BukiVedi.App.Middlewares; using BukiVedi.Shared; +using BukiVedi.Shared.Apps; using BukiVedi.Shared.Entities; using BukiVedi.Shared.Services; using Microsoft.AspNetCore.Authentication.Cookies; @@ -91,8 +92,13 @@ namespace BukiVedi.App { await authProvider.CreateAccount(platformAdmin); } + var library = new Library(); services.AddSingleton(authProvider); - services.AddSingleton(new Library()); + services.AddSingleton(library); + services.AddSingleton(new AuthorHandler(library)); + services.AddSingleton(new TagsHandler(library)); + services.AddSingleton(new BooksHandler(library)); + services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(o => { o.LoginPath = new PathString("/web/login.html"); diff --git a/src/BukiVedi.App/Properties/PublishProfiles/FolderProfile.pubxml.user b/src/BukiVedi.App/Properties/PublishProfiles/FolderProfile.pubxml.user index 6e4fa28..b6c99dc 100644 --- a/src/BukiVedi.App/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/src/BukiVedi.App/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. <_PublishTargetUrl>G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\publish\ - True|2024-04-28T14:30:08.5715518Z;True|2024-04-28T17:28:06.6959908+03:00;True|2024-04-28T16:38:39.9281743+03:00;False|2024-04-28T16:36:56.3567692+03:00;False|2024-04-28T16:36:21.9546945+03:00;False|2024-04-28T16:35:24.2096595+03:00;True|2024-04-09T13:52:12.7238098+03:00;True|2024-04-07T21:16:45.6816851+03:00;True|2024-04-07T05:01:48.6765910+03:00;True|2024-04-07T05:01:36.8953339+03:00;True|2024-04-07T04:57:19.2521218+03:00;True|2024-04-06T21:11:57.8349210+03:00;True|2024-04-06T17:36:58.3428821+03:00;True|2024-04-05T04:52:06.7814045+03:00;True|2024-04-05T04:46:11.3960475+03:00;True|2024-04-04T16:59:14.8807703+03:00;True|2024-04-04T14:55:51.0062074+03:00;True|2024-04-04T14:01:53.0402462+03:00;True|2024-04-04T05:50:10.9326327+03:00;True|2024-04-04T05:23:22.3837261+03:00;True|2024-04-04T05:18:08.8436345+03:00;True|2024-04-04T05:13:03.4261357+03:00;True|2024-04-04T04:23:59.4217155+03:00;True|2024-04-04T04:12:10.2381826+03:00;True|2024-04-04T04:04:27.2386390+03:00; + True|2024-05-12T17:17:18.3446630Z;True|2024-05-12T20:11:53.1976666+03:00;True|2024-04-28T17:30:08.5715518+03:00;True|2024-04-28T17:28:06.6959908+03:00;True|2024-04-28T16:38:39.9281743+03:00;False|2024-04-28T16:36:56.3567692+03:00;False|2024-04-28T16:36:21.9546945+03:00;False|2024-04-28T16:35:24.2096595+03:00;True|2024-04-09T13:52:12.7238098+03:00;True|2024-04-07T21:16:45.6816851+03:00;True|2024-04-07T05:01:48.6765910+03:00;True|2024-04-07T05:01:36.8953339+03:00;True|2024-04-07T04:57:19.2521218+03:00;True|2024-04-06T21:11:57.8349210+03:00;True|2024-04-06T17:36:58.3428821+03:00;True|2024-04-05T04:52:06.7814045+03:00;True|2024-04-05T04:46:11.3960475+03:00;True|2024-04-04T16:59:14.8807703+03:00;True|2024-04-04T14:55:51.0062074+03:00;True|2024-04-04T14:01:53.0402462+03:00;True|2024-04-04T05:50:10.9326327+03:00;True|2024-04-04T05:23:22.3837261+03:00;True|2024-04-04T05:18:08.8436345+03:00;True|2024-04-04T05:13:03.4261357+03:00;True|2024-04-04T04:23:59.4217155+03:00;True|2024-04-04T04:12:10.2381826+03:00;True|2024-04-04T04:04:27.2386390+03:00; \ No newline at end of file diff --git a/src/BukiVedi.App/Responces/BookResponse.cs b/src/BukiVedi.App/Responces/BookResponse.cs index 2677340..a2177b1 100644 --- a/src/BukiVedi.App/Responces/BookResponse.cs +++ b/src/BukiVedi.App/Responces/BookResponse.cs @@ -1,77 +1,4 @@ namespace BukiVedi.App.Responces { - public class AuthorInfo - { - public string Id { get; set; } - public string Name { get; set; } - } - public class GenreInfo - { - public string Id { get; set; } - public string Name { get; set; } - } - public class TagInfo - { - public string Id { get; set; } - public string Name { get; set; } - } - public class FormatInfo - { - public string Id { get; set; } - public string Name { get; set; } - } - - public class BookResponse - { - /// - /// Идентификатор - /// - public string Id { get; set; } - /// - /// Изображение(урл) - /// - public string ImageUrl { get; set; } - /// - /// Название - /// - public string Title { get; set; } - /// - /// Описание - /// - public string Description { get; set; } - /// - /// Заметка - /// - public string Note { get; set; } - /// - /// Авторы(массив объектов с полями id; имя автора) - /// - public AuthorInfo[] Authors { get; set; } - /// - /// Жанры(массив объектов с полями id; название жанра) - /// - public GenreInfo[] Genres { get; set; } - /// - /// Серия - /// - public string Series { get; set; } - /// - /// Подсерия - /// - public string Subseries { get; set; } - /// - /// Теги(массив объектов с полями id; имя тега) - /// - public IEnumerable Tags { get; set; } - /// - /// Год издания - /// - public int Year { get; set; } - - public string Format { get; set; } - - public bool IsBlocked { get; set; } - - public bool IsFavorite { get; set; } - } + } diff --git a/src/BukiVedi.App/Services/Mappers/BookEntityMapper.cs b/src/BukiVedi.App/Services/Mappers/BookEntityMapper.cs index c0cceab..f4111ec 100644 --- a/src/BukiVedi.App/Services/Mappers/BookEntityMapper.cs +++ b/src/BukiVedi.App/Services/Mappers/BookEntityMapper.cs @@ -1,5 +1,5 @@ -using BukiVedi.App.Responces; -using BukiVedi.Shared.Entities; +using BukiVedi.Shared.Entities; +using BukiVedi.Shared.Models; using BukiVedi.Shared.Services; using MongoDB.Driver; @@ -7,7 +7,7 @@ namespace BukiVedi.App.Services.Mappers { public class BookEntityMapper { - public static async Task> Map(IEnumerable books) + public static async Task> Map(IEnumerable books) { var booksIds = books.Select(x => x.Id).ToList(); var tags_list = (await Tables.UserTag.Get(Builders.Filter.In(t => t.BookId, booksIds))); @@ -26,7 +26,7 @@ namespace BukiVedi.App.Services.Mappers } return books.Select(book => - new BookResponse + new BookInfo { Authors = book.Authors.Select(a => new AuthorInfo { Id = a.Id, Name = a.Name }).ToArray(), Description = book.Description, diff --git a/src/BukiVedi.App/obj/BukiVedi.App.csproj.nuget.dgspec.json b/src/BukiVedi.App/obj/BukiVedi.App.csproj.nuget.dgspec.json index 501125e..2ff863a 100644 --- a/src/BukiVedi.App/obj/BukiVedi.App.csproj.nuget.dgspec.json +++ b/src/BukiVedi.App/obj/BukiVedi.App.csproj.nuget.dgspec.json @@ -5,7 +5,7 @@ }, "projects": { "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj": { - "version": "1.0.0", + "version": "4.0.0", "restore": { "projectUniqueName": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj", "projectName": "ZeroLevel", diff --git a/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.AssemblyInfo.cs b/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.AssemblyInfo.cs index 01ba502..46e38c8 100644 --- a/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.AssemblyInfo.cs +++ b/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("BukiVedi.App")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+653045cfe4c19cb8cabc63ce1b8f61d4b7e4f26e")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+431f2503a837ccf39eac97076a865db39f86a8dd")] [assembly: System.Reflection.AssemblyProductAttribute("BukiVedi.App")] [assembly: System.Reflection.AssemblyTitleAttribute("BukiVedi.App")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.AssemblyInfoInputs.cache b/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.AssemblyInfoInputs.cache index 6745063..c5218e8 100644 --- a/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.AssemblyInfoInputs.cache +++ b/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.AssemblyInfoInputs.cache @@ -1 +1 @@ -9daab03e895a6f115233529b5b412c23d0bcacc1749fa577a062fe4da0d423fa +7f90fe300e225561cd7cc7726bf5d2f940d1cc60e07ec84b3e5f3a0ec108d1d7 diff --git a/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.assets.cache b/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.assets.cache index 1e176b00c1dfae064da9e9bf561597a35d2f2b63..ddf66c9a8da60c23cafecd7845d897d88b6150c3 100644 GIT binary patch delta 29 fcmZpQ?ug#tsl=Ji009}BgOm)o*;q~V4D<{DY+eQt delta 22 YcmeB(Zi?REsl=(o00HTngOm)o0YT&h&;S4c diff --git a/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.csproj.AssemblyReference.cache b/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.csproj.AssemblyReference.cache index f9fa7816fd23f0b064a4d84c511e3b3fd0718955..ea9fcfd56ba51d9d13b99b8130a87a25ededbe5a 100644 GIT binary patch delta 158 zcmezC``33u5}TzROW(4hjTwGSj4YEAS)f?lqX-17Mkp! zz&Tlh*KczP$2&%j(<}KQvetasAlc2!x#XDGRI6oxqMJ|iOl4w|*gX%#PUBz62sPGS vP=QgL^LZUuBO@atXH;rYzE5gdY7S6AA*0CT3H*YS7YpSwnrs#nej^M3K^8a8 delta 174 zcmezC``33u5}RN1=Hia@jTwGSlLPrACLa(Km^`0FVDmesPb?g42Hp-G>329Lzh+XN zd_h`hvV#KWWC>os%_SV~7&(N#gg|7i`Lsc@o0oIRF|mD5DglaaKFu?giS3ELb`6l7 z#=nvg#c+2)1xB&6U#5b!Gcq!AMx_?z`=pko=77|RfUR0AlskEsismFmj?Iq3dxQZ) C$v)-) diff --git a/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.csproj.FileListAbsolute.txt b/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.csproj.FileListAbsolute.txt index b03b26c..b83a108 100644 --- a/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.csproj.FileListAbsolute.txt +++ b/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.csproj.FileListAbsolute.txt @@ -1,11 +1,5 @@ G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\appsettings.Development.json G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\appsettings.json -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\css\fonts\Roboto-300.ttf -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\css\fonts\Roboto-300.woff -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\css\fonts\Roboto-300.woff2 -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\css\fonts\Roboto-400.ttf -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\css\fonts\Roboto-400.woff -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\css\fonts\Roboto-400.woff2 G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\images\favicon.ico G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\BukiVedi.App.exe G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\config.ini @@ -18,11 +12,6 @@ G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\css\main.css G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\css\normalize.css G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\images\flower.jpeg G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\index.html -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\js\common\jquery.js -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\js\constants\index.js -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\js\login\index.js -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\js\main\index.js -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\js\requests\index.js G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\login.html G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\BukiVedi.App.deps.json G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\BukiVedi.App.runtimeconfig.json @@ -76,5 +65,20 @@ G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\obj\Debug\net8.0\refint\BukiVedi.A G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\obj\Debug\net8.0\BukiVedi.App.pdb G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\obj\Debug\net8.0\BukiVedi.App.genruntimeconfig.cache G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\obj\Debug\net8.0\ref\BukiVedi.App.dll +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\assets\heart.svg +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\assets\heart_full.svg +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\css\scroll.css +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\fonts\Roboto-Black.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\fonts\Roboto-BlackItalic.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\fonts\Roboto-Bold.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\fonts\Roboto-BoldItalic.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\fonts\Roboto-Italic.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\fonts\Roboto-Light.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\fonts\Roboto-LightItalic.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\fonts\Roboto-Medium.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\fonts\Roboto-MediumItalic.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\fonts\Roboto-Regular.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\fonts\Roboto-Thin.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\web\fonts\Roboto-ThinItalic.ttf G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\LemmaSharpPrebuilt.pdb G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Debug\net8.0\LemmaSharpPrebuilt.dll.config diff --git a/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.pdb b/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.pdb index 6f925bf14793496da1a9c0b8423a0a5d07e7834d..3dcb327caf7463b7d146d049dd06801edb7b0470 100644 GIT binary patch delta 6489 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 NaGZx9+eO5#{{d0|$)*4R delta 9410 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 RRGqBAozG~pc>;H~EC4;;DO&&l delta 116 zcmewz_&aby3ft7_5)B>c8?yqK7#SxQGOADhz#=etmw?mc1Ds)-yO{l1*k+4-tnWzQ ze4l+aBUFh4tKejF=HSV5SiL8^vKvjF%oQm5|K=Q^syiG&HJnkYMfpCdWvMw6>(wVK QaOY1}XEfS;klRWY0P>tEqW}N^ diff --git a/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.csproj.FileListAbsolute.txt b/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.csproj.FileListAbsolute.txt index ea4c2ac..367237f 100644 --- a/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.csproj.FileListAbsolute.txt +++ b/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.csproj.FileListAbsolute.txt @@ -6,12 +6,6 @@ G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\obj\Release\net8.0\BukiVedi.App.cs G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\obj\Release\net8.0\BukiVedi.App.MvcApplicationPartsAssemblyInfo.cache G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\appsettings.Development.json G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\appsettings.json -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\css\fonts\Roboto-300.ttf -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\css\fonts\Roboto-300.woff -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\css\fonts\Roboto-300.woff2 -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\css\fonts\Roboto-400.ttf -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\css\fonts\Roboto-400.woff -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\css\fonts\Roboto-400.woff2 G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\images\favicon.ico G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\BukiVedi.App.exe G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\config.ini @@ -24,11 +18,6 @@ G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\css\main.cs G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\css\normalize.css G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\images\flower.jpeg G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\index.html -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\common\jquery.js -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\constants\index.js -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\login\index.js -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\main\index.js -G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\requests\index.js G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\login.html G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\BukiVedi.App.deps.json G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\BukiVedi.App.runtimeconfig.json @@ -77,3 +66,25 @@ G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\obj\Release\net8.0\refint\BukiVedi G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\obj\Release\net8.0\BukiVedi.App.pdb G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\obj\Release\net8.0\BukiVedi.App.genruntimeconfig.cache G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\obj\Release\net8.0\ref\BukiVedi.App.dll +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\assets\heart.svg +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\assets\heart_full.svg +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\css\scroll.css +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\fonts\Roboto-Black.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\fonts\Roboto-BlackItalic.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\fonts\Roboto-Bold.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\fonts\Roboto-BoldItalic.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\fonts\Roboto-Italic.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\fonts\Roboto-Light.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\fonts\Roboto-LightItalic.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\fonts\Roboto-Medium.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\fonts\Roboto-MediumItalic.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\fonts\Roboto-Regular.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\fonts\Roboto-Thin.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\fonts\Roboto-ThinItalic.ttf +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\common\jquery.js +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\constants\index.js +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\login\index.js +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\main\index.js +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\requests\index.js +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\scroll\index.js +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\script.js diff --git a/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.pdb b/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.pdb index 491a7e4bab793822e068b49716c38602266dd165..b3958a11993bc6717015bde2194945b2a11d092d 100644 GIT binary patch delta 5267 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 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/BukiVedi.App/web/assets/heart_full.svg b/src/BukiVedi.App/web/assets/heart_full.svg new file mode 100644 index 0000000..3954377 --- /dev/null +++ b/src/BukiVedi.App/web/assets/heart_full.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/BukiVedi.App/web/css/common.css b/src/BukiVedi.App/web/css/common.css index d3152db..f077e24 100644 --- a/src/BukiVedi.App/web/css/common.css +++ b/src/BukiVedi.App/web/css/common.css @@ -47,6 +47,7 @@ input { --second-font-color: #bfbfbf; --active-color: #2173e0; --matte-white: #f2f3f4; + --accent-color: #FF748F; } /*** @@ -126,6 +127,10 @@ input { display: flex; } +.d-bl { + display: block; +} + /** headings and texts */ diff --git a/src/BukiVedi.App/web/css/logo.css b/src/BukiVedi.App/web/css/logo.css index 7579286..83bf784 100644 --- a/src/BukiVedi.App/web/css/logo.css +++ b/src/BukiVedi.App/web/css/logo.css @@ -1,7 +1,7 @@ .background-logo { position: absolute; - top: 26px; + top: -15px; left: 20px; z-index: -1; overflow: hidden; diff --git a/src/BukiVedi.App/web/css/main.css b/src/BukiVedi.App/web/css/main.css index cb0e13e..fcf2165 100644 --- a/src/BukiVedi.App/web/css/main.css +++ b/src/BukiVedi.App/web/css/main.css @@ -4,6 +4,7 @@ body { } body { + position: relative; margin: 0px; padding: 0px; width: 100%; @@ -12,6 +13,10 @@ body { background-color: var(--main-bg-color); } +header { + position: relative; +} + .main-search-wrapper { position: relative; max-width: 820px; @@ -117,8 +122,9 @@ body { } .blur > .flowers { - filter: blur(2px); - opacity: 0.55; + background-image: none; + /* filter: blur(2px); + opacity: 0.55; */ } .main-book__card { @@ -188,6 +194,7 @@ body { .main-book__header { text-overflow: ellipsis; overflow: hidden; + padding-right: 65px; } .main-book__menu { @@ -227,6 +234,13 @@ body { } } +.main-book__menu_opened { + z-index: 2; + border-radius: 12px; + box-shadow: 0px 10px 20px 2px rgba(0, 0, 0, 0.25); +} + + .main-book__menu_closed { width: 50px; } @@ -240,14 +254,45 @@ body { color: var(--active-color); } +.main-book__menu_like { + background-image: url(../web/assets/heart.svg); + background-repeat: no-repeat; + position: absolute; + width: 20px; + height: 100%; + right: 105px; + top: 20px; + cursor: pointer; +} + +.main-book__menu_like:hover { + opacity: 0.5; +} + +.main-book__menu_like.liked { + background-image: url(../web/assets/heart_full.svg); +} + .main-book__action { padding-left: 12px; + padding-top: 4px; + padding-bottom: 4px; background: #fff; line-height: 28px; width: 200px; vertical-align: middle; } +.main-book__action:first-child { + border-top-left-radius: 12px; + border-top-right-radius: 12px; +} + +.main-book__action:last-child { + border-bottom-left-radius: 12px; + border-bottom-right-radius: 12px; +} + .main-book__action:hover { background: var(--main-bg-color); } diff --git a/src/BukiVedi.App/web/css/scroll.css b/src/BukiVedi.App/web/css/scroll.css new file mode 100644 index 0000000..75f0a36 --- /dev/null +++ b/src/BukiVedi.App/web/css/scroll.css @@ -0,0 +1,40 @@ +.scroll-top { + position: fixed; + z-index: 3; + padding: 0; + right: 20px; + bottom: 20px; + opacity: 1; + visibility: hidden; + transform: translateY(0px); + height: 46px; + width: 46px; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + transition: all 0.4s ease; + border: none; + box-shadow: inset 0 0 0 2px var(--accent-color); + color: var(--accent-color); + background-color: #fff; +} + +.scroll-top.is-active { + visibility: visible; +} + +.scroll-top .icon-tabler-arrow-up { + position: absolute; + stroke-width: 2px; + stroke: var(--accent-color); +} + +.scroll-top:hover { + color: var(--accent-color); +} + +.scroll-top:hover .icon-tabler-arrow-up { + stroke: var(--accent-color); +} diff --git a/src/BukiVedi.App/web/index.html b/src/BukiVedi.App/web/index.html index 1a0ff14..b6d7cab 100644 --- a/src/BukiVedi.App/web/index.html +++ b/src/BukiVedi.App/web/index.html @@ -1,69 +1,41 @@ - + Vedi - + + - - - + + + +
+

Vedi

+
+
+ +
+ +
-

Vedi

-
-
- -
- - -
-
-
+
+
+
- - - + + diff --git a/src/BukiVedi.App/web/js/constants/index.js b/src/BukiVedi.App/web/js/constants/index.js index a1998d6..641cb0b 100644 --- a/src/BukiVedi.App/web/js/constants/index.js +++ b/src/BukiVedi.App/web/js/constants/index.js @@ -2,11 +2,11 @@ import * as requests from '../requests/index.js'; export const SUCCESS = "success"; export const menuEnum = [ - { - id: 0, - label: "В избранное", - action: requests.addBookToFavourites, - }, + // { + // id: 0, + // label: "В избранное", + // action: requests.addBookToFavourites, + // }, { id: 1, label: "Авторов в избранное", diff --git a/src/BukiVedi.App/web/js/main/index.js b/src/BukiVedi.App/web/js/main/index.js index 7bcf078..0050118 100644 --- a/src/BukiVedi.App/web/js/main/index.js +++ b/src/BukiVedi.App/web/js/main/index.js @@ -1,5 +1,5 @@ import { menuEnum } from "../constants/index.js"; -import { fetchData, downloadBook } from "../requests/index.js"; +import { fetchData, downloadBook, searchByAuthor } from "../requests/index.js"; export default class BookSection { subElements = []; @@ -28,29 +28,40 @@ export default class BookSection { const booksListener = document.querySelector(".main-book__wrapper"); booksListener.addEventListener("click", (event) => { let id, title; - + const isLike = event.target.closest("[data-like]"); + const isMenu = event.target.closest("[data-menu]"); const isAction = event.target.closest("[data-action]"); - const isLink = event.target.closest("[data-link]") - + const isLink = event.target.closest("[data-link]"); + const isAuthor = event.target.closest("[data-author]"); + switch (true) { case !!isAction: id = isAction.dataset.action; - const { authorid, bookid } = isAction.parentNode.parentNode.dataset || {}; + const { authorid, bookid } = + isAction.parentNode.parentNode.dataset || {}; this.makeAction({ id, authorid, bookid }); break; + case !!isLike: + this.makeLike(isLike); + break; + case !!isMenu: this.openMenu(isMenu); break; - case !!isLink: + case !!isLink: id = isLink.dataset.bookid; title = isLink.dataset.title; - let format = isLink.dataset.format.toLowerCase() + let format = isLink.dataset.format.toLowerCase(); downloadBook({ id, title, format }); break; + case !!isAuthor: + id = isAuthor.dataset.author; + this.update({ isByAuthor: true, id }); + default: this.closeMenu(); @@ -76,12 +87,17 @@ export default class BookSection { subseries, year, tags, + isFavorite, }) => { const { name, id: authorid } = authors[0] || "Неизвестно"; return `
-
-
- cover -
- ${name || ""}
+ + ${name || ""}
${year || "Год неизвестен"}
@@ -153,8 +171,9 @@ export default class BookSection { } getTags(tags) { - return (tags || []).map(({ id, name }) => { - return `#${name}`; + return (tags || []) + .map(({ id, name }) => { + return `#${name}`; }) .join(""); } @@ -192,13 +211,25 @@ export default class BookSection { } this.element.classList.remove("spinner"); + this.closeMenu() + } + + makeLike(element) { + const { bookid: likedBookId } = element.dataset || {}; + this.makeAction({ id: 0, authorid: "", bookid: likedBookId }); + element.classList.add("liked"); } async update(params) { this.element.classList.add("blur", "spinner"); - const query = params || {}; - const data = await fetchData({ query, url: this.url }); + let data = []; + if (params?.isByAuthor) { + data = await searchByAuthor({ id: params.id }); + } else { + const query = params; + data = await fetchData({ query, url: this.url }); + } console.log("data", data); if (data && Object.values(data).length) { this.subElements.body.innerHTML = this.getBookBody(data); @@ -208,6 +239,7 @@ export default class BookSection { } this.element.classList.remove("spinner"); } + getSubElements(element) { const result = {}; const elements = element.querySelectorAll("[data-element]"); diff --git a/src/BukiVedi.App/web/js/requests/index.js b/src/BukiVedi.App/web/js/requests/index.js index 1e3122e..3b75058 100644 --- a/src/BukiVedi.App/web/js/requests/index.js +++ b/src/BukiVedi.App/web/js/requests/index.js @@ -1,6 +1,7 @@ import { SUCCESS } from "../constants/index.js"; export const fetchData = ({ query, url }) => { + console.log('query, url', query, url); return $.ajax({ contentType: "application/json; charset=utf-8", dataType: "json", @@ -119,4 +120,22 @@ export const downloadBook = ({ id, title, format }) => { console.log(jqXHR.statusText); }, }); -} \ No newline at end of file +} + +export const searchByAuthor = ({ id }) => { + return $.ajax({ + contentType: "application/json; charset=utf-8", + dataType: "json", + type: "POST", + url: `../api/author/${id}/books`, + success: function (data, textStatus, jqXHR) { + if (textStatus === SUCCESS) { + return data; + } + return []; + }, + error: function (jqXHR, textStatus, errorThrown) { + console.log(jqXHR.statusText); + }, + }); +}; diff --git a/src/BukiVedi.App/web/js/scroll/index.js b/src/BukiVedi.App/web/js/scroll/index.js new file mode 100644 index 0000000..1e56820 --- /dev/null +++ b/src/BukiVedi.App/web/js/scroll/index.js @@ -0,0 +1,80 @@ +export default class ButtonScroll { + element; + + constructor() { + this.render(); + } + + get template() { + return ` + + `; + } + + initialize() { + this.initEventListeners(); + } + + initEventListeners() { + const offset = 200; + + window.addEventListener("scroll", () => { + const scrollPos = + window.scrollY || + window.scrollTop || + document.getElementsByTagName("html")[0].scrollTop; + scrollPos > offset + ? this.element.classList.add("is-active") + : this.element.classList.remove("is-active"); + }); + + this.element.addEventListener("click", (event) => { + const isScroll = event.target.closest("[data-scroll]"); + if (isScroll) { + window.scrollTo({ top: 0, behavior: 'smooth' }); + } + }); + } + + render() { + const divElement = document.createElement("div"); + divElement.innerHTML = this.template; + this.element = divElement.firstElementChild; + this.initialize(); + } + + remove() { + if (this.element) { + this.element.remove(); + destroyEventListeners(); + } + } + + destroy() { + this.remove(); + this.element = null; + } +} diff --git a/src/BukiVedi.App/web/script.js b/src/BukiVedi.App/web/script.js new file mode 100644 index 0000000..4576623 --- /dev/null +++ b/src/BukiVedi.App/web/script.js @@ -0,0 +1,29 @@ + +import BookSection from "./js/main/index.js"; +import ButtonScroll from './js/scroll/index.js'; + +const input = document.getElementById("search"); +const books = document.getElementById("books"); +const content = document.getElementById("content"); +const booksSection = new BookSection({ + url: "../api/books/search", + label: "books", +}); +const click = () => { + const query = document.getElementById("search").value; + if (query) { + booksSection.update({ query }); + } +}; + +searchButton.addEventListener("click", click); + +input.addEventListener("keypress", function (event) { + if (event.key === "Enter") { + click(); + } +}); +books.append(booksSection.element); + +const scroll = new ButtonScroll() +content.append(scroll.element) \ No newline at end of file diff --git a/src/BukiVedi.App/web/server.js b/src/BukiVedi.App/web/server.js new file mode 100644 index 0000000..fe8a538 --- /dev/null +++ b/src/BukiVedi.App/web/server.js @@ -0,0 +1,52 @@ +const path = require('path'); +const { createProxyMiddleware } = require('http-proxy-middleware'); +const cors = require('cors'); + +const express = require('express'); +const app = express(); + +const server = require('http').Server(app); +const router = require('express').Router() + +const options = { + target: 'https://book.ogoun.name/', // target host + changeOrigin: true, // needed for virtual hosted sites + ws: true, // proxy websockets + logLevel: 'debug', + secure: false, + cookieDomainRewrite: { + '*': 'localhost', + }, + onProxyRes(proxyRes, req, _res) { + if (proxyRes.headers['set-cookie'] !== undefined) { + req.cookie = proxyRes.headers['set-cookie']; + } + }, + onProxyReq(proxyReq, req, _res) { + if (req && req.cookie !== undefined) { + proxyReq.setHeader('Cookie', req.cookie[0]); + } + }, +}; + +const myLogger = function (req, res, next) { + next() +} + +app.use(myLogger) + +app.use(express.static(__dirname)); +app.use(express.static(__dirname + '/js')); +app.use(express.static(__dirname + '/css')); +app.use(express.static(__dirname + '/constants')); + +// app.get('/login', function (req, res) { +// res.sendFile(path.join(__dirname, '/login.html')); +// }); + +app.use('/', cors({ + credentials: true, + origin: 'http://localhost:3000', +}), createProxyMiddleware(options)); + +server.listen(3001); \ No newline at end of file diff --git a/src/BukiVedi.Shared/Apps/AuthorHandler.cs b/src/BukiVedi.Shared/Apps/AuthorHandler.cs new file mode 100644 index 0000000..72f7ea1 --- /dev/null +++ b/src/BukiVedi.Shared/Apps/AuthorHandler.cs @@ -0,0 +1,67 @@ +using BukiVedi.Shared.Entities; +using BukiVedi.Shared.Models; +using BukiVedi.Shared.Services; +using BukiVedi.Shared.Services.Mappers; +using MongoDB.Driver; + +namespace BukiVedi.Shared.Apps +{ + public class AuthorHandler + : IAuthorHandler + { + private readonly ILibrary _library; + public AuthorHandler(ILibrary library) + { + if (library == null) throw new ArgumentNullException(nameof(library)); + _library = library; + } + + public async Task AddToFavorite(string id, OperationContext context) + { + if (context?.OperationInitiator?.Id == null) throw new InvalidOperationException("Unauthorized"); + var exists_fiter = Builders.Filter.And + ( + Builders.Filter.Eq(f => f.UserId, context.OperationInitiator.Id), + Builders.Filter.Eq(f => f.AuthorId, id) + ); + if (await Tables.FavoriteAuthors.Exists(exists_fiter) == false) + { + await Tables.FavoriteAuthors.Write(new FavoriteAuthor { AuthorId = id, UserId = context.OperationInitiator.Id }); + } + } + + public async Task> GetAllAuthors(OperationContext context) + { + var authors = (await Tables.Authors.GetAll()).Select(a => new AuthorInfo { Id = a.Id, Name = a.Name }).ToArray(); + return authors; + } + + public async Task> GetFavoriteAuthors(OperationContext context) + { + var authorIds = (await Tables.FavoriteAuthors.Get(Builders.Filter.Eq(f => f.UserId, context.OperationInitiator.Id))).Select(f => f.AuthorId).ToHashSet(); + var authors = (await Tables.Authors.Get(Builders.Filter.In(a => a.Id, authorIds))).Select(a => new AuthorInfo { Id = a.Id, Name = a.Name }).ToArray(); + return authors; + } + + public async Task RemoveFromFavorite(string id, OperationContext context) + { + if (context?.OperationInitiator?.Id == null) throw new InvalidOperationException("Unauthorized"); + var exists_fiter = Builders.Filter.And + ( + Builders.Filter.Eq(f => f.UserId, context.OperationInitiator.Id), + Builders.Filter.Eq(f => f.AuthorId, id) + ); + var records = await Tables.FavoriteAuthors.Get(exists_fiter); + foreach (var record in records) + { + await Tables.FavoriteAuthors.TryRemoveById(record.Id); + } + } + + public async Task> SearchByAuthor(string id, OperationContext context) + { + var books = (await _library.SearchBooksByAuthor(id)).ToArray(); + return await BookEntityMapper.Map(books); + } + } +} diff --git a/src/BukiVedi.Shared/Apps/BooksHandler.cs b/src/BukiVedi.Shared/Apps/BooksHandler.cs new file mode 100644 index 0000000..9211fe7 --- /dev/null +++ b/src/BukiVedi.Shared/Apps/BooksHandler.cs @@ -0,0 +1,243 @@ +using Amazon.Runtime.Internal; +using BukiVedi.Shared.Entities; +using BukiVedi.Shared.Models; +using BukiVedi.Shared.Services; +using BukiVedi.Shared.Services.Mappers; +using MongoDB.Driver; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection.Metadata; +using System.Text; +using System.Threading.Tasks; +using ZeroLevel.Services.FileSystem; + +namespace BukiVedi.Shared.Apps +{ + public class BooksHandler + : IBooksHandler + { + private readonly ILibrary _library; + public BooksHandler(ILibrary library) + { + if (library == null) throw new ArgumentNullException(nameof(library)); + _library = library; + } + + public async Task AddAuthorsToFavorite(string id, OperationContext context) + { + var book = await Tables.Books.GetById(id); + if (book != null) + { + var account_id = context.OperationInitiator.Id; + var authors = book.AuthorIds; + if (!string.IsNullOrEmpty(account_id) && authors?.Count > 0) + { + foreach (var author in authors) + { + var exists_fiter = Builders.Filter.And + ( + Builders.Filter.Eq(f => f.UserId, account_id), + Builders.Filter.Eq(f => f.AuthorId, author) + ); + if (await Tables.FavoriteAuthors.Exists(exists_fiter) == false) + { + await Tables.FavoriteAuthors.Write(new FavoriteAuthor { AuthorId = author, UserId = account_id }); + } + } + } + } + } + + public async Task AddBookToReadingQueue(string id, OperationContext context) + { + if (await Tables.Books.ExistById(id)) + { + var account_id = context.OperationInitiator.Id; + if (!string.IsNullOrEmpty(account_id)) + { + var exists_fiter = Builders.Filter.And + ( + Builders.Filter.Eq(f => f.UserId, account_id), + Builders.Filter.Eq(f => f.BookId, id) + ); + if (await Tables.ReadQueue.Exists(exists_fiter) == false) + { + await Tables.ReadQueue.Write(new ReadQueueItem { BookId = id, UserId = account_id, Timestamp = Timestamp.UtcNow }); + } + } + } + } + + public async Task AddToFavorite(string id, OperationContext context) + { + if (await Tables.Books.ExistById(id)) + { + var account_id = context.OperationInitiator.Id; + if (!string.IsNullOrEmpty(account_id)) + { + var exists_fiter = Builders.Filter.And + ( + Builders.Filter.Eq(f => f.UserId, account_id), + Builders.Filter.Eq(f => f.BookId, id) + ); + if (await Tables.FavoriteBooks.Exists(exists_fiter) == false) + { + await Tables.FavoriteBooks.Write(new FavoriteBook { BookId = id, UserId = account_id }); + } + } + } + } + + public async Task BlockBook(string id, OperationContext context) + { + if (await Tables.Books.ExistById(id)) + { + var account_id = context.OperationInitiator.Id; + if (!string.IsNullOrEmpty(account_id)) + { + var exists_fiter = Builders.Filter.And + ( + Builders.Filter.Eq(f => f.UserId, account_id), + Builders.Filter.Eq(f => f.BookId, id) + ); + if (await Tables.DisgustingBooks.Exists(exists_fiter) == false) + { + await Tables.DisgustingBooks.Write(new DisgustingBook { BookId = id, UserId = account_id }); + } + } + } + } + + public async Task BlockBookAuthor(string id, OperationContext context) + { + var book = await Tables.Books.GetById(id); + if (book != null) + { + var account_id = context.OperationInitiator.Id; + var authors = book.AuthorIds; + if (!string.IsNullOrEmpty(account_id) && authors?.Count > 0) + { + foreach (var author in authors) + { + var exists_fiter = Builders.Filter.And + ( + Builders.Filter.Eq(f => f.UserId, account_id), + Builders.Filter.Eq(f => f.AuthorId, author) + ); + if (await Tables.DisgustingAuthors.Exists(exists_fiter) == false) + { + await Tables.DisgustingAuthors.Write(new DisgustingAuthor { AuthorId = author, UserId = account_id }); + } + } + } + } + } + + public async Task<(string, MemoryStream)> GetBlobData(string id, OperationContext context) + { + var content = new System.IO.MemoryStream(); + var book = await _library.DownloadToStream(content, id); + string name = id; + if (book != null && string.IsNullOrWhiteSpace(book.Title) == false) + { + name = FSUtils.FileNameCorrection(book.Title); + } + content.Position = 0; + return (name, content); + } + + public async Task RemoveFromFavorite(string id, OperationContext context) + { + if (context?.OperationInitiator?.Id == null) throw new InvalidOperationException("Unauthorized"); + var exists_fiter = Builders.Filter.And + ( + Builders.Filter.Eq(f => f.UserId, context.OperationInitiator.Id), + Builders.Filter.Eq(f => f.BookId, id) + ); + var records = await Tables.FavoriteBooks.Get(exists_fiter); + foreach (var record in records) + { + await Tables.FavoriteBooks.TryRemoveById(record.Id); + } + } + + public async Task RemoveFromReadingQueue(string id, OperationContext context) + { + if (context?.OperationInitiator?.Id == null) throw new InvalidOperationException("Unauthorized"); + var exists_fiter = Builders.Filter.And + ( + Builders.Filter.Eq(f => f.UserId, context.OperationInitiator.Id), + Builders.Filter.Eq(f => f.BookId, id) + ); + var records = await Tables.ReadQueue.Get(exists_fiter); + foreach (var record in records) + { + await Tables.ReadQueue.TryRemoveById(record.Id); + } + } + + public async Task> Search(string query, string? tag, OperationContext context) + { + if (string.IsNullOrWhiteSpace(query) == false) + { + switch (query.Trim().ToLowerInvariant()) + { + case "@favorites": + { + var books = (await _library.SearchFavoritesBooks(context.OperationInitiator.Id)).ToArray(); + return await BookEntityMapper.Map(books); + } + case "@favoriteauthors": + { + var books = (await _library.SearchFavoriteAuthorsBooks(context.OperationInitiator.Id)).ToArray(); + return await BookEntityMapper.Map(books); + } + case "@tagged": + { + var books = (await _library.SearchTaggedBooks(context.OperationInitiator.Id, tag: tag!)).ToArray(); + return await BookEntityMapper.Map(books); + } + + case "@blocked": + { + var books = (await _library.SearchBlockedBooks(context.OperationInitiator.Id)).ToArray(); + return await BookEntityMapper.Map(books); + } + + case "@toread": + { + var books = (await _library.SearchToReadBooks(context.OperationInitiator.Id)).ToArray(); + return await BookEntityMapper.Map(books); + } + + default: + { + var books = (await _library.SearchBooks(query)).ToArray(); + return await BookEntityMapper.Map(books); + } + } + } + return Enumerable.Empty(); + } + + public async Task UnblockBook(string id, OperationContext context) + { + if (context?.OperationInitiator?.Id == null) throw new InvalidOperationException("Unauthorized"); + var account_id = context.OperationInitiator.Id; + if (!string.IsNullOrEmpty(account_id)) + { + var exists_fiter = Builders.Filter.And + ( + Builders.Filter.Eq(f => f.UserId, account_id), + Builders.Filter.Eq(f => f.BookId, id) + ); + var records = await Tables.DisgustingBooks.Get(exists_fiter); + foreach (var record in records) + { + await Tables.DisgustingBooks.TryRemoveById(record.Id); + } + } + } + } +} diff --git a/src/BukiVedi.Shared/Apps/IAuthorHandler.cs b/src/BukiVedi.Shared/Apps/IAuthorHandler.cs new file mode 100644 index 0000000..cb31784 --- /dev/null +++ b/src/BukiVedi.Shared/Apps/IAuthorHandler.cs @@ -0,0 +1,13 @@ +using BukiVedi.Shared.Models; + +namespace BukiVedi.Shared.Apps +{ + public interface IAuthorHandler + { + Task> SearchByAuthor(string id, OperationContext context); + Task AddToFavorite(string id, OperationContext context); + Task RemoveFromFavorite(string id, OperationContext context); + Task> GetAllAuthors(OperationContext context); + Task> GetFavoriteAuthors(OperationContext context); + } +} diff --git a/src/BukiVedi.Shared/Apps/IBooksHandler.cs b/src/BukiVedi.Shared/Apps/IBooksHandler.cs new file mode 100644 index 0000000..f166ae5 --- /dev/null +++ b/src/BukiVedi.Shared/Apps/IBooksHandler.cs @@ -0,0 +1,18 @@ +using BukiVedi.Shared.Models; + +namespace BukiVedi.Shared.Apps +{ + public interface IBooksHandler + { + Task> Search(string query, string? tag, OperationContext context); + Task AddToFavorite(string id, OperationContext context); + Task AddAuthorsToFavorite(string id, OperationContext context); + Task BlockBook(string id, OperationContext context); + Task BlockBookAuthor(string id, OperationContext context); + Task AddBookToReadingQueue(string id, OperationContext context); + Task<(string, MemoryStream)> GetBlobData(string id, OperationContext context); + Task UnblockBook(string id, OperationContext context); + Task RemoveFromFavorite(string id, OperationContext context); + Task RemoveFromReadingQueue(string id, OperationContext context); + } +} diff --git a/src/BukiVedi.Shared/Apps/ITagsHandler.cs b/src/BukiVedi.Shared/Apps/ITagsHandler.cs new file mode 100644 index 0000000..1f15f37 --- /dev/null +++ b/src/BukiVedi.Shared/Apps/ITagsHandler.cs @@ -0,0 +1,12 @@ +using BukiVedi.Shared.Models; + +namespace BukiVedi.Shared.Apps +{ + public interface ITagsHandler + { + Task AppendTag(string bookId, string name, OperationContext context); + Task RemoveTag(string id, OperationContext context); + Task> GetUserTags(OperationContext context); + Task> Search(string id, OperationContext context); + } +} diff --git a/src/BukiVedi.Shared/Apps/TagsHandler.cs b/src/BukiVedi.Shared/Apps/TagsHandler.cs new file mode 100644 index 0000000..c1fac51 --- /dev/null +++ b/src/BukiVedi.Shared/Apps/TagsHandler.cs @@ -0,0 +1,56 @@ +using BukiVedi.Shared.Entities; +using BukiVedi.Shared.Models; +using BukiVedi.Shared.Services; +using BukiVedi.Shared.Services.Mappers; +using MongoDB.Driver; + +namespace BukiVedi.Shared.Apps +{ + public class TagsHandler + : ITagsHandler + { + private readonly ILibrary _library; + public TagsHandler(ILibrary library) + { + if (library == null) throw new ArgumentNullException(nameof(library)); + _library = library; + } + + public async Task AppendTag(string bookId, string name, OperationContext context) + { + if (string.IsNullOrWhiteSpace(name) == false && await Tables.Books.ExistById(bookId)) + { + name = name.Trim().ToLowerInvariant(); + var tagFilter = Builders.Filter.And(Builders.Filter.Eq(t => t.BookId, bookId), Builders.Filter.Eq(t => t.Name, name)); + if (false == await Tables.UserTag.Exists(tagFilter)) + { + await Tables.UserTag.Write(new UserTag { BookId = bookId, Name = name, UserId = context.OperationInitiator.Id }); + } + } + } + + public async Task> GetUserTags(OperationContext context) + { + return (await Tables.UserTag.Get(Builders.Filter.Eq(t => t.UserId, context.OperationInitiator.Id)))?.Select(t => t.Name)!; + } + + public async Task RemoveTag(string id, OperationContext context) + { + if (string.IsNullOrWhiteSpace(id) == false && await Tables.UserTag.ExistById(id)) + { + return await Tables.UserTag.TryRemoveById(id); + } + return false; + } + + public async Task> Search(string id, OperationContext context) + { + if (string.IsNullOrWhiteSpace(id) == false) + { + var books = await _library.SearchByTagBooks(context.OperationInitiator.Id, id); + return await BookEntityMapper.Map(books); + } + return Enumerable.Empty(); + } + } +} diff --git a/src/BukiVedi.Shared/Models/AuthorInfo.cs b/src/BukiVedi.Shared/Models/AuthorInfo.cs new file mode 100644 index 0000000..3f5fa5a --- /dev/null +++ b/src/BukiVedi.Shared/Models/AuthorInfo.cs @@ -0,0 +1,10 @@ +namespace BukiVedi.Shared.Models +{ + public class AuthorInfo + { + public string Id { get; set; } + public string Name { get; set; } + public bool IsFavorite { get; set; } + public bool IsBlocked { get; set; } + } +} diff --git a/src/BukiVedi.Shared/Models/BookDocument.cs b/src/BukiVedi.Shared/Models/BookDocument.cs index 0892848..020d632 100644 --- a/src/BukiVedi.Shared/Models/BookDocument.cs +++ b/src/BukiVedi.Shared/Models/BookDocument.cs @@ -9,10 +9,10 @@ namespace BukiVedi.Shared.Models [SleoIndex("title", 100.0f, true)] public string Title { get; set; } - [SleoIndex("titlelm", 100.0f)] + [SleoIndex("titlelm", 90.0f)] public string TitleLemmas { get; set; } - [SleoIndex("author", 100.0f, true)] + [SleoIndex("author", 90.0f, true)] public string Author { get; set; } [SleoIndex("genre", 10.0f, true)] diff --git a/src/BukiVedi.Shared/Models/BookDto.cs b/src/BukiVedi.Shared/Models/BookDto.cs new file mode 100644 index 0000000..ccc8cf9 --- /dev/null +++ b/src/BukiVedi.Shared/Models/BookDto.cs @@ -0,0 +1,15 @@ +namespace BukiVedi.Shared.Models +{ + public class BookDto + { + public int Year { get; set; } + public string Title { get; set; } + public string[] TitleLemmas { get; set; } + public string Description { get; set; } + public string[] Authors { get; set; } + public string[] Genres { get; set; } + public string ArchivePath { get; set; } + public int ArchiveIndex { get; set; } + public BookFormat Format { get; set; } + } +} diff --git a/src/BukiVedi.Shared/Models/BookInfo.cs b/src/BukiVedi.Shared/Models/BookInfo.cs index a8eb739..530ed39 100644 --- a/src/BukiVedi.Shared/Models/BookInfo.cs +++ b/src/BukiVedi.Shared/Models/BookInfo.cs @@ -2,14 +2,61 @@ { public class BookInfo { - public int Year { get; set; } + /// + /// Идентификатор + /// + public string Id { get; set; } + /// + /// Изображение(урл) + /// + public string ImageUrl { get; set; } + /// + /// Название + /// public string Title { get; set; } - public string[] TitleLemmas { get; set; } + /// + /// Описание + /// public string Description { get; set; } - public string[] Authors { get; set; } - public string[] Genres { get; set; } - public string ArchivePath { get; set; } - public int ArchiveIndex { get; set; } - public BookFormat Format { get; set; } + /// + /// Заметка + /// + public string Note { get; set; } + /// + /// Авторы(массив объектов с полями id; имя автора) + /// + public AuthorInfo[] Authors { get; set; } + /// + /// Жанры(массив объектов с полями id; название жанра) + /// + public GenreInfo[] Genres { get; set; } + /// + /// Серия + /// + public string Series { get; set; } + /// + /// Подсерия + /// + public string Subseries { get; set; } + /// + /// Теги(массив объектов с полями id; имя тега) + /// + public IEnumerable Tags { get; set; } + /// + /// Год издания + /// + public int Year { get; set; } + /// + /// Формат книги + /// + public string Format { get; set; } + /// + /// Книга заблокирована пользователем + /// + public bool IsBlocked { get; set; } + /// + /// Книга находится в избранном + /// + public bool IsFavorite { get; set; } } } diff --git a/src/BukiVedi.Shared/Models/FormatInfo.cs b/src/BukiVedi.Shared/Models/FormatInfo.cs new file mode 100644 index 0000000..698c5d1 --- /dev/null +++ b/src/BukiVedi.Shared/Models/FormatInfo.cs @@ -0,0 +1,8 @@ +namespace BukiVedi.Shared.Models +{ + public class FormatInfo + { + public string Id { get; set; } + public string Name { get; set; } + } +} diff --git a/src/BukiVedi.Shared/Models/GenreInfo.cs b/src/BukiVedi.Shared/Models/GenreInfo.cs new file mode 100644 index 0000000..f159567 --- /dev/null +++ b/src/BukiVedi.Shared/Models/GenreInfo.cs @@ -0,0 +1,8 @@ +namespace BukiVedi.Shared.Models +{ + public class GenreInfo + { + public string Id { get; set; } + public string Name { get; set; } + } +} diff --git a/src/BukiVedi.Shared/Models/TagInfo.cs b/src/BukiVedi.Shared/Models/TagInfo.cs new file mode 100644 index 0000000..f30b3da --- /dev/null +++ b/src/BukiVedi.Shared/Models/TagInfo.cs @@ -0,0 +1,8 @@ +namespace BukiVedi.Shared.Models +{ + public class TagInfo + { + public string Id { get; set; } + public string Name { get; set; } + } +} diff --git a/src/BukiVedi.Shared/Services/Library.cs b/src/BukiVedi.Shared/Services/Library.cs index c0a875b..c8f6930 100644 --- a/src/BukiVedi.Shared/Services/Library.cs +++ b/src/BukiVedi.Shared/Services/Library.cs @@ -19,7 +19,7 @@ namespace BukiVedi.Shared.Services Task> SearchBlockedBooks(string accountId); Task> SearchFavoriteAuthorsBooks(string accountId); Task> SearchToReadBooks(string accountId); - Task DownloadToStream(Stream stream, string id); + Task DownloadToStream(Stream stream, string id); } public class Library @@ -213,13 +213,15 @@ namespace BukiVedi.Shared.Services } } - public async Task DownloadToStream(Stream stream, string id) + public async Task DownloadToStream(Stream stream, string id) { var b = await Tables.Books.GetById(id); if (b != null) { await _library.Download(Path.Combine(_libraryPath, b.ArchivePath), b.ArchiveIndex, stream); + return b; } + return null; } public async Task> SearchBooks(string query) diff --git a/src/BukiVedi.Shared/Services/Mappers/BookEntityMapper.cs b/src/BukiVedi.Shared/Services/Mappers/BookEntityMapper.cs new file mode 100644 index 0000000..6e30bc1 --- /dev/null +++ b/src/BukiVedi.Shared/Services/Mappers/BookEntityMapper.cs @@ -0,0 +1,41 @@ +using BukiVedi.Shared.Entities; +using BukiVedi.Shared.Models; +using MongoDB.Driver; + +namespace BukiVedi.Shared.Services.Mappers +{ + public class BookEntityMapper + { + public static async Task> Map(IEnumerable books) + { + var booksIds = books.Select(x => x.Id).ToList(); + var tags_list = (await Tables.UserTag.Get(Builders.Filter.In(t => t.BookId, booksIds))); + var tags = new Dictionary>(); + foreach (var t in tags_list) + { + if (tags.TryGetValue(t.BookId, out var list)) { list.Add(new TagInfo { Id = t.Id, Name = t.Name }); } + else + { + tags.Add(t.BookId, + new List + { + new TagInfo { Id = t.Id, Name = t.Name } + }); + } + } + + return books.Select(book => + new BookInfo + { + Authors = book.Authors.Select(a => new AuthorInfo { Id = a.Id, Name = a.Name }).ToArray(), + Description = book.Description, + Format = book.Format, + Id = book.Id, + Genres = new GenreInfo[1] { new GenreInfo { Id = book.Genre.Id, Name = book.Genre.Code } }, + Title = book.Title, + Year = book.Year, + Tags = tags.ContainsKey(book.Id) ? tags[book.Id] : null! + }); + } + } +} diff --git a/src/BukiVedi.Shared/Services/ZipLibraryReader.cs b/src/BukiVedi.Shared/Services/ZipLibraryReader.cs index dee128f..9fd56d6 100644 --- a/src/BukiVedi.Shared/Services/ZipLibraryReader.cs +++ b/src/BukiVedi.Shared/Services/ZipLibraryReader.cs @@ -19,12 +19,12 @@ namespace BukiVedi.Shared.Services _zipFilesPath = zipFilesPath; } - public BookInfo ReadBookInfo(string archivePath, int index) + public BookDto ReadBookInfo(string archivePath, int index) { using (var zip = ZipFile.OpenRead(archivePath)) { var entry = zip.Entries[index]; - BookInfo book = null; + BookDto book = null; if (entry.Name.EndsWith(".fb2", StringComparison.OrdinalIgnoreCase)) { using (var s = entry.Open()) @@ -36,7 +36,7 @@ namespace BukiVedi.Shared.Services return null!; } - public IEnumerable ReadBooks() + public IEnumerable ReadBooks() { foreach (var zipFile in Directory.EnumerateFiles(_zipFilesPath, "*.zip")) { @@ -45,7 +45,7 @@ namespace BukiVedi.Shared.Services var index = 0; foreach (var e in zip.Entries) { - BookInfo book = null; + BookDto book = null; if (e.Name.EndsWith(".fb2", StringComparison.OrdinalIgnoreCase)) { using (var s = e.Open()) @@ -113,7 +113,7 @@ namespace BukiVedi.Shared.Services #region FB2 private static XmlLoadSettings _fbSettings = new XmlLoadSettings(new XmlReaderSettings { DtdProcessing = DtdProcessing.Ignore }); - private static BookInfo ReadFromFb2(Stream s, string name, string path, int index) + private static BookDto ReadFromFb2(Stream s, string name, string path, int index) { try { @@ -124,7 +124,7 @@ namespace BukiVedi.Shared.Services var authors = Authors(file.TitleInfo.BookAuthors); var title = file.TitleInfo.BookTitle?.Text; var genres = file.TitleInfo?.Genres?.Select(g => g.Genre)?.ToArray(); - return new BookInfo + return new BookDto { ArchiveIndex = index, ArchivePath = path, diff --git a/src/BukiVedi.Shared/bin/Debug/net8.0/BukiVedi.Shared.deps.json b/src/BukiVedi.Shared/bin/Debug/net8.0/BukiVedi.Shared.deps.json index 236813f..3b731c6 100644 --- a/src/BukiVedi.Shared/bin/Debug/net8.0/BukiVedi.Shared.deps.json +++ b/src/BukiVedi.Shared/bin/Debug/net8.0/BukiVedi.Shared.deps.json @@ -14,7 +14,7 @@ "LemmaSharpPrebuiltFull": "1.0.0", "MongoDB.Driver": "2.24.0", "Sleopok.Engine": "1.0.0", - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "runtime": { "BukiVedi.Shared.dll": {} @@ -201,13 +201,13 @@ }, "Sleopok.Engine/1.0.0": { "dependencies": { - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "runtime": { "Sleopok.Engine.dll": {} } }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "runtime": { "ZeroLevel.dll": {} } @@ -381,7 +381,7 @@ "serviceable": false, "sha512": "" }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "type": "project", "serviceable": false, "sha512": "" diff --git a/src/BukiVedi.Shared/bin/Debug/net8.0/BukiVedi.Shared.pdb b/src/BukiVedi.Shared/bin/Debug/net8.0/BukiVedi.Shared.pdb index 172277063ba4a51603aef808d25fc5ad71a15fb5..59e76c2c40e040dae3bbe4d5d1156717ff62b01e 100644 GIT binary patch delta 17883 zcmbt+2YeJ&*Z!GF$hK5c2q7Cbn?N9>03i@U%F@yxKthue*fb!J21&q3nb}DKp(>6b z3TP0-jwq1D1eyZ97W#hZx1c|OHn^Pu-YAA-IL{U>x^ zBN8==R0v%Gy<39uJdBIb-$RF)1d26@R0LfPeFXY6^nLE=I(Lzt^APAY4-prjYl1-C z6L6(qTVO{3F+e}g=08@do zq3Q*3qIy;I(D$e6q2Y9hIsC$VQEp-{`UZ#_){82Edw{2asHEPM0BlS`!Eo0IdXyRc zr3jjq8bMX5ENS+Mpo-xUv=~?pGz{-Y>w)1T`cVcj9+(2;0Y$(9U=dIY$iOOK1F#7= z3RI2kM~{q*qK|=#z&F5E;1}RepiA+nC~_YaO}?XI=)qC3XZXsppuUNUSIIhK>dX0mFb1 zK;Y1xlnFfnmTTh65SEuCYcs2)qV7m}R8n(C+{r0G|S109SyYfZqVhHj)nT1pI;EY}Td; zJ!V3Wnb4LAZJE%PWI|&m3d=T8BrpL520&kd?5WFc z(I_kE1D_9kKIj#n)^c6p>k402lYG4^qFF~vW?gO?>bT+uFRX?q1r?1;2rr9Tg zR&sU=XB(zCORzHfJ38#<=^ggS86CEeN0jKK5i|>=&A!Olb7pn;|HavxX0uKWj-{Kk zS%Fw`v$qv=@~7=65bhdF`}1K~q)1v`&{iUnj&k-5&K^|QQRaTmexI{Fi#p0o;q2|4 z?OxnbCW+Z>R1P_Tqt-!hdrpY z_56uk=*QBIz@D-WJGZ>U9#GL?KhN2Tl^y;goc-*gHb2ukT3_YVn>5YrU>&7ZGlP9} zbSGz@sowX8VY9(B5ciJkHj^kpea5#J?ljxD4!%c$Hm--go8v707{^)sagMY26Kbem zPLILuZ3M%&mpHDj_uDBQ?o{g)jE3A|KvD3 z`c00rmPrlmzOW*ty^S!qj6w(Z0mtoddz{t5ZE-tiZQ}O0owK+n$64Hq<1Fs2Ug$nv z^6%sg;5e(*jpM9VAjes}JI7f(h~q3C%yAYsa~$zp3gH~AKu?ad1}q$B@lcMlxRv89 z9;Ut)R3Y{2Rx6g{EZ(2vEIxqaEIyFqEFQ;k#3hR79IU`#j^u{gecv~w0uGm1kKdKC^>MxCbZ7>u_MxAezN-7N5;=7PoVp#q&AN;sqRM@j{NX zcu_k?|FZ(cLXY-A6aYS_y#U+Ah~{#fm7m9P7BAsAi_hmci!b0fip0H7e$;cECA5V*0oEfAXdJ)o zun(*7AXk9(z*dg42DWwLO@gt#2ddG`PL98f^1C_CX3P^D$8S#bG~*IE6F7(pdxe1Z z2H7=zt`mR06W`Z~@9)H4=)_;_#9soJ+6E0f;DJsBUgo$v;s-hI1^y3?vq5*L6Fc@j&Kf+*aS!k}Io^nlJ;CvNz)x}97yKPT>ge)| zNa-|JAQVS9!}0aV@GQrZQT}6&2cZ0C9Pf(*T;TXNl>dU`nc$Zs&cPbI%<(r|2tSi{ zB*@~|gs}D=V?A)4;|FoT-#Gp~xQp0Po~dFD|Rg1(iRM|`JCfZ zR4C*4yWo|bcooN4{ly$-J6kQsSpv&CajAnB(knP+rNcodQDG&QG3${=j{kx9T8^_D z$_*S}48D=$HNw6a%VI$~lYoj?Z66-$3f)Ds|2>qo&Q>0S#@|RZL9?ZfttJB1B(Y_V zJv(9FD+F4X>?@}k2+{ccqb<;(>_S^L$J+F8=w3i? zAVTv|MqlVipdS#W`P9r9=vbgXFhKJqWW_-b0`Ncy3AvBOgCb(T@DJ5^{n%m9NkFp3 zM~q`TnGKMJYmQOlM?#MRMgvX4U~F3n*s6wNdm4f*DG_VvRIHnKV67a7^>GT8#FgV!4}!C2kUyweeWWCekHg0#>ZaSfz5X63JM7B&;|NtTHNjiT7bK*@OjT9Tttd zC9D*yu{x~Bim(Bzz#2^aZJ6v^F~PTEQg6mYz8{l!3nuIXn4}M5UOtGq_z>n(6Xwt# zmF9-_b?_8>HNy@_YQ>kOoRlvB8rAsi%362AY{-ho=%!Ppcpev@}JA=Wa+nZG$w>rj#al9)Z-; zF-QYFm(mQ+dysm%oYEqJ{E*TD@^cEAm`x@<{hnfhEv8yvXG0n&Ce;SdBS|*c3sUW{ zm)K;;U66YE9@0Rc+M3{@;Z5*NhcwWH;Wl?2rHp9t(9w&K20A=~Jav>gk~|GmIMU)N z=}3h#(AJSQ1WrL3=>3s)FCDEOB}4u>stNMc=w`^6v=+z|NIgwXBX1oQLh5Njngw=s znho*-q=9}(v%?;r-UPWTy#?}-B#V!Zax*MGsGDJfJslEX^yX&RK{jQ`kPkuX=^01^ zJ(|%3&-0LadMTqB_8~}Cxf#*dGFsp{pWFh^m1OFwqt7!ekRh2i$SIk2$n(ket}H6U z&PtSFXD2p6&dzMsqRp_SE6FV&MVT#H(Uz|0-c0gk9`egm<-k_^`ib8x4>hZ z&;m~+q=76GsK1WlA@!6x!2){}q@MC24K#Iv4W9Xsm>rPlj|p~o?t#?Pi3u|7s}p1i z#5+eu*e!?RSiTm>q#R2et~8{9#^l)G$<44a52S(YId*tTAoWy}Bg0+}si%e<8l-jVny7M;49^)zBOQh`(Wyx-@chr@7I+?lG|@AYZHYSicB(DW zNIf7;lsmNvo-Nax;AxoF1kan(XqZl-xEVCeNCKpZf@au<>FDB2J3MKSCMucP3{Os8 zGdx2fO_Y&mNz&12NFy~tn&{;`8J;P#WO%|MO_V&V1)gR|BRvMmTDB!)9L%;Q8)+D% ziDu1iVxAwM@Z1iP6>3V+(GGi4ijgWHP1I<&r0VF2d`qf{=H=UMSau5RHX{vyG|}J! zc{m0jq>&zhG|_VfE%01}#52GG+Xx*+71~A^$z0e3dkv(K=0lpOwva}mu2euHjdTda zL?;XFaJd%Q;kjPe40~)*GweZ-CK_2}8HK9|X{5U#O|-g5hDRut;dvLfiCT(U;KAYH zi7vK{X0~m#k@AY0VDE)A(*4Dh#*(HqBYj>hQ5qgB7Te((J;x4LFGv#&n$xU#n&DXr z+eB;TSkiU$E+hum99gqv*y7w4&2E96FxQr$qemf)R0nCIZFB9JI@&hRo@u19kS3Zj zuNj`BkgOM*r7WCfNi!ayMnd8&ODtnh0n$kIkS0<~WO#)6GCUu`Hqq6R7I+TKZ-J*A z(nPD~+s5k1XMqimT7Q6TBK?9EctT2B;5h=@L|-njWn*@f+VJ@GVMr4lDQ(Ke`oE>D z39gxtCX&i%9Hw76jWberNanG_)1$%;&#&cnc)ncF4A1V0W_VUWnrMB6WjwBQrDeR4 zd?8svGCcb$Wq7tiGEWOU(xMi4?p)Xc&-I123A!<~tjab4XAg<9uc90s#Z^-d&I7iI zx>noa!I*%jq`DdQF-RlrskY=|gRZgU8p#{dM15=adG;+6CD-AVl~vxuYpUl}EXv3) zFDflw6jNAbm?^k=`iEE-R9cRIwRi3H;At*}d8)AWDqC`X-m}ox@@d8W(dXC9tS!0G^r2tLw@;j__qNv@es7CU zrqub!9o4_KJZpb$_K{UjZjFvhk9c?cl>y@iMokjOZtos)aYg-yLH?(_Gym?`j^36H zUllw&)_cveykCA*vm%~(&Fk30-}em8%3j!i&7GTLexK}>IVpc`m2{iL9fg+2P1*PV zDXa?V;rr-MezUiGg#?fM=*>$FhIN;g^?m%l`*wS>y0@$Pu*I@}^6S@g->&(1UEGKV zH{P5!eQEENztpH-SDesKuld)2q59F~)g{#>#Z?A&>OK{$yG^Zq=J?3*xw@ratb2z; z2~tn@>&rVPt8P)ZlvtzMZgsq&-W3(iRjDKO`KW=sW2pK=R6OrkqQ*wY@s0y(*{zOW z)Tg2ca3$&otCyl9c}JBR923Pmo=_*o^y3{D)YUP39u0x&o3~VHn4;c@NfaA4s6%5D z#D=%js@OimJe*@BvwThk*HfGape$(F={jX`2H8*B? zO}$A%mbx{zyDLhjsRv?*N-*jzQI6)DT|X`VTOBQyHfP#7i#DWfu*_`P5RMm ze)3!uRGb?(@yfsR7%xu+MGFDm|P%?B-~imv6!J*ITocdX)@_apUXS-am8uRXXee0sOd zXY*{O8{blw^$$j8t$JVG);~1Ch#~%$W*Yr1Zx79(RSy|{9@4eChufjulN&w@$UOLJ zsf*c^J2`iYlCB=^AL`ne-8ez@3iEZXCj5AOJ}>5h|L=Psw!zx@lo&1dIVRu(U+@?{r8n=rLb4+elo>tsPgDXY^g z4)ggO%KM+ps7FH&#hfVKP)UV8_eOl{|3mlc+Ae#W4(hTi%I8*$8WHT&>fr$)Zm7C? z^+xr=fF!5+sTwvg4k@nbsZJj_m>E;l`v#^m;~w?HfeFlbPxXyU9@&_^*306OS8%uc z#s`Mq``b@fBVN3@eRP+iFlBFjeb6VxYvKpYiS>29pE>%@>f-XMl8W*wZbe-?K~>{s z>et@AR$cqR+9vgvxVKu#y5fB&2Kft;GqirA<-n%(Ll>uCR6ksM-DubrIx8yAaK}e4 z58Jt5@UGb#Z;pG>Q4@wAA)ZmQ$GmRyUipJ^Gym&MA9eo|FTOB(@1`}n;iXULe(Zm4 zd-&R|dFQ-(-TW-O-;Rqq|AR|2=bTR(cJ1x(4dZ_~=;?Jau=m&7Q=&6A4p0AMk-78( z>3P3^Enm6*FmH#yZHkNX-t@F*etxZAM5N;1z2E+WU#Dl@*Slni-}R-L_YOKZWmvx) z{~{M*X4S};@Zk;d{eRwU>$7`(=vS7VUC-AKme;)gk9!7=vdzC@`y%?EoA#d=aF6>7 zndP}#kEXu=Vui`e>yZDG^5`=2I;N-;FIWg#1sT7&r93$Io9MZ=Cx*-n zh&%p_`L7kyYD!D_O7?s)G;*2f6?!o3k)*TJKijvvCVStvi95x>S=CohQ8Rwk`s3h` zyI%|+{mSC4*+s{0Nc$d3PPYc?C%*Fy$^NwKU~S3F&$?x-o3Z1Sg*Q&VsJhv|>vmv< zaG*dquv|E>N;sej2X+bv_6rA2s>b|%ez%LM@8+im-7X-!d|G(iZW9i^ zyzfTAX5senL*s-))6{2*ZbbcE>xU-`hf8q`;qY=ag(O*p4~nn$O%;@xX5}e=FM;IO z1^JTT*ep2yDL5_*N}XWB&y8}U=tyx@o>YIBvrY(6m(2|l!uH)iS1%fR#^7fGGCF#y zkC$u+4-@|G*v&NjH+JX)C->bkKT7QRcjb^{GmT2$x3kn+h`Vhet;FczC^mX56NOAH zW+w!_PW`GZMDSC)lxM{}Aj&TZj@SSpz|C9m7UTv&KJ6y|B;cPTQ*d1KaHXYQwQ~Iu z`9~3(-tux)=%xBpY`*;^#ieLv+zo0?{^Upig81UprzrrbiDDoj&4 zt5Zd2O7AS9zPzwc_uHn-I$8bq!WF8tXriQdw(IU}!rj?~cTcS)?{H1|_0m+J^O%9o zV+K1*21jWzi?fI&Qe)v3r*b;`I4kt&qdB9T6`}@ctpC6sPVKBQs8u;DCOA(dp|@5f z$(dnNg!<1#L;vPFomS0N;X;}^qADrmZ%!STs+q>lQnyvr>;0T(?-(~dv?K~$kIke zh!G=5K4}g$%O7~+A?JKS-XS==1V@a3H{;17%4fQwEx~cb>^P-U3vdC@~iU`Z{G*aG~Ng6pCo9L8$Hq55zyoNI;VE}MeHBu9>NMi ze$~w}USR)rnw9gchm^sBa<5>-LKP$`pSjlM8qI#fbV0ssR(#kWD>#-2j<>bAuc&yt zDvLYfo(A-pqegI?L>x~HP{6}gS<+D;SnI0gg5z9U13g@oRkzLMO9TEMK}i&pEp54c z;aZ2kIq(y*1$nc15}U{qofqSv*>P0oxM^_Q6d(;qp{wAKB#SWVt$8?TA z4Gydee;V+|2o68Np*TyuDJsbc;j;z#rrDu4JC+Jcm|2N3D~}3wqs(>L=DOoT{d{wM zmAU>4p`pRtu)*B$r?7I1dF2lC%4@yx#KoZ#9e24Z{oIsY`ns{kx?}EA{UXo$&%GPg zcWt=gx3Vc<FS8P>Qz{Kgr2vWdyBznj{eg{2B}PKWH5WTJbWR>3~|CwrLjn#dpo_Vdf|C^qt zE~%L->{id$gbTA&*Tq(kCk$E;6PtbvX1a^~i=Am#`B#k#@~;}lI&NcrcgKPPr!Jkzw9Zjp%Cyljr!v{Dx-ZExy@|m> zVJz!6)%+!XQffXchsVJr$mcL3B1Apjizy{f5iheNpe;!=L_MA+O(gu$ih#ts25+8U< zE6bkK8?~}#633Bzs8CJ5^Mv?L23|J~R4uimy^5T5@#M@zf@8+M>RKkTDu&JgvPR@E~^KWSYxWFbhRo^k*!SqQOOSf zuDz-6xTf}49qEKlA>E3!dF5(BU5)Abzd_lnkdEu>#k$@?rD~{8$1PD#{Q+Ht*szqA zEmFN3jtf=lxrYAT6nE{CvlkPb6M;QO?OCl_R`&B$yqqrf#I0hdB$6WMhnZ-d5ux7 zN`z&(x`i2$kt@{Wje~=g=wwuz4k*#u0->FNRX#-Fk{YzSzo&vH1^BRKq^~TiQ&$fX zl{j_%>R^{h*`YqQIzB)dteqx%yMcX}?ky|o_0Z@FGA zVOHuexj}tsO`5whq8Dn7U|Eb%udWG{*kyAy#W2+`Bta*yB%>JYBg^tCcrd(;+Uzp2 z$tmjNDPN>%cu@ckZSi;WZ4IL7Cf8swLOwvLM*IN^&0){^wbgH-sK=jGOj36&=_bYCh~ofd${EO? zG)udR?0pUIU~B@&;T5an2w9a7T$nY^gJHR|;$UbA*Gt}nXXflhgtj$QJ9GBje>|W} z)7oS2dpI``bkP8Lt+O2oS@%Ih@)M%I5G`#c`62v)A*?N}ZT8{U<$F=j)uXa zJ{Yftw&sCLy|fQF^3vzv%(Mv4GGb+5K5Q>?IPXX4hHTf#}`fm_BSd zbeux3W>Oz{J$%R!dsYf^Ow|s!kot=7P<}_hYRAezSzJp}3Qj^^(k!iq*&8x#`;E1T zz7uY);tvjSn)C;g<@cIavMfY?; zonjw!LWSV!D(dC^9mA@%N`Z(!p`0G0Q|Aa_8>7slrNL0 zd@Na&^VYhFG+$;H0X<_OAs#)`OS?y~-`Xd=*#gnp9j@-$8ROxhb0W2#ah0e~Vz&`( zXRK!yt_3m+YBjAawFy8uASv_rBCB@*W&U)OS_~-jwad!N?E=`X;A!a7&h&8;=7+uR zex&bVReY?<5@df5;?C?d|BLLCjnb{@-=STw|9kpMS$pn%fR&i^`j{`a|4)joHs+UHIcKLsRFxnNbkwARg_ zv9jtsKlG-&1}E50)Z=eAMY6J+Wt^oujTFhE?SgERj1l$Soa5YI#Lm`DWG|Cpr_;u} zCz_&h0Df2`WwACQ*z0uc!)wW;-Mvl1fZjuP`96d(jIjmC_alSb>|A)H{-0LnLI1_d zT#J>Nz2k)hYulFJqgZ}Zk;tZwM0Vdkks<#%5!_k)U$zKI+as2>?-9$|5;=xMQb^v9 z{ZH$XYIMm9$OOHPyNlM9x{s*GYKm=tHVODCj_@T0>veVOHZc!Qth@QQa~6vFXjW2k z?kFg#N6~4Wi!vwH1g_B%XURlSkNer0)*}^CxIQ1NT-y@23^{9mOHznSu1F^!ztOB| z=WRTiX=C(!?O?iivobopPo3l(~ln}_)k0%2)<2)9Her)hUOw2_Qz74KP!+D zc1wz7qg(VAXJcpA152$+lvR1uT9<9DJ8rG7vP$(|SQ|E28~(Je++kgLjqbv_-aZ8` zAb)-eP^=gcK-h)aM}W2q?P0eoSUM{Hi`x}kDSZx_8HS!{yGPR|=>%k52`CENcKQH{ zlE6-ny~}zhv|qc{?qArl&bChN#!$qazg39^4zOuVZdQ5KG~Bnf?M>`%bh4;V(UyhQ zG2ELiqw+=(V;%qVj9ZsL+)Sq5x|??1NG)1UY>p_6r;y4OmU^QDIc{gEH(J;?Yw0ZF z*AVHdt?V{-6P<5$lv^FI;EwPCXL@*@Clu+)bO6lHH(val(d^f?QTpqP(@e zb#`}(MY#QH(|A!I#coTTleU1uU0KU*vn~)7wVMid@2G724iZ0X!Rn@uh0VVGwH<37 Ij&+p&AMlDhVgLXD delta 9362 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 delta 65 zcmV-H0KWf#oCScK1+WM_2=oZl9dVi30h0j&6Om9IgFrmDKs*7&0~qg6E@lA$000MH XmW{xdeMGt89M#Aa|2nrEKmp_p_Z}DI diff --git a/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb b/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb index 67657c71695da15316b089860883edb39679903b..b40b41d5143d56f55f8e4bdb2bbdc9cdbd318526 100644 GIT binary patch delta 61 zcmV-D0K)%(oB@EG0k8-p2+OIMYLBGa0h5tD6O+I*A+tmzz#AAl_&{a>0001?u)|(4 TVf;X*+>SV=FkBw996;m^_r4f? delta 61 zcmV-D0K)%(oB@EG0k8-p2=vU|9dVi30h5tD6O+I*A+tmzz#ACvP%dTx0002LpSMG> TtCUKZE0YwgGFYFp96;m^{Qek< diff --git a/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb b/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb index 87ef50d1695c01d2315155f98402e4e3907519fd..9589249b33e12d2ce380e40b115417221b7db019 100644 GIT binary patch delta 49 zcmV-10M7q_e1Lqg2p$G~^rLEzq_Ykl_7fO8_&{a>0002b{X@xV_ytO`tc~8yiOWT^ H95Un!6EPMC delta 49 zcmV-10M7q_e1Lqg2p$Gm-1{AInX?Wa_7fQIP%dTx0002O>={yh)T2YaQ?R%|00=#^ H95Un!?Tr&X diff --git a/src/BukiVedi.Shared/bin/Release/net8.0/BukiVedi.Shared.deps.json b/src/BukiVedi.Shared/bin/Release/net8.0/BukiVedi.Shared.deps.json index 236813f..3b731c6 100644 --- a/src/BukiVedi.Shared/bin/Release/net8.0/BukiVedi.Shared.deps.json +++ b/src/BukiVedi.Shared/bin/Release/net8.0/BukiVedi.Shared.deps.json @@ -14,7 +14,7 @@ "LemmaSharpPrebuiltFull": "1.0.0", "MongoDB.Driver": "2.24.0", "Sleopok.Engine": "1.0.0", - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "runtime": { "BukiVedi.Shared.dll": {} @@ -201,13 +201,13 @@ }, "Sleopok.Engine/1.0.0": { "dependencies": { - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "runtime": { "Sleopok.Engine.dll": {} } }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "runtime": { "ZeroLevel.dll": {} } @@ -381,7 +381,7 @@ "serviceable": false, "sha512": "" }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "type": "project", "serviceable": false, "sha512": "" diff --git a/src/BukiVedi.Shared/bin/Release/net8.0/BukiVedi.Shared.pdb b/src/BukiVedi.Shared/bin/Release/net8.0/BukiVedi.Shared.pdb index f921012fcc37fa7476389b2925b31982647acbc6..2aed3aacb4c8f33a46591280d71aeea8fbc41c30 100644 GIT binary patch delta 15465 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 AL;wH) delta 128 zcmccMGS_iJI@=R{?V67CiMj75pOX@pEYDoaA@n80p(Fhc$K+CW?ak+z4VZYoCzXIj z7#SJGCO=>m+pNge#>By9;0;lCkX?E5d1j%_PdLPxM9+Si3RBA&m0FbVlUkOVGqF*9 WvW_t4WC!k)$=ZxYo3C+Ki2(orC@pjV diff --git a/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.csproj.CoreCompileInputs.cache b/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.csproj.CoreCompileInputs.cache index 5df5d54..cb23dd3 100644 --- a/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.csproj.CoreCompileInputs.cache +++ b/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -2bddd0bc3dcd27073c70a4760f8dbf79dac12620146c67283751aa5c04e62c2b +8f1511391c660118f311ede1de029df8d3c4dca0dcff3c3fe53339a3d1836ea1 diff --git a/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.pdb b/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.pdb index 172277063ba4a51603aef808d25fc5ad71a15fb5..59e76c2c40e040dae3bbe4d5d1156717ff62b01e 100644 GIT binary patch delta 17883 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 Ij&+p&AMlDhVgLXD delta 9362 zcmZ`<34Baf`+o13m@S(n3z;M%5o8gG$R5dLn=BGr1d)UZ5>i2=Vkt5+5-lNZISoqa zSR2(+@}ZWtqqIu3Ra&YGQ(srhM>ksS*YE$FL2~M^^Yc9K`@HWt?>YD0bMMSOar&aH zb+zo-L8k8ghyv?~+=GeoB=`lhYbs|*#dVS>9d-uneAu0^`(dxZ-hlO&OB5`ZQ4#DU*cRAU*o&~=z;BV zQecO`nqgPKz5{y}_Agj?nIchRGy?IQxcyr|7dAJvX&MD z%Yc>1{`5RBB*mXb0!4rkm;%fIYJr77Jm*MXmbyMUCc zBPHNg4)RRxMZT#4v^6!5e9{8xi!{um{S!#d>4Buo2&AbQzEsU`B=V#E8GaO<`Jj;> z&29HPVrMh`=r#~#z>(s%r45Gev=!J1>;(=2R}H*_2T_&>DF9c%1JDA2KnM^C!~rQ; zysZ}*vb-oC7zGpq6M;&g8kh^z0ZV`t00Y(mVWwy=+61Q+*bVG=6!WInv%Kjz@E&j$ zxaf$>$R%5b_PCc|eX{w$ohTr?69oeiz=~`+Z3cD#ky&zj74`t|2Jkj;8aM}h27CpW zz6ad|ZUg@Xk6KQgsaAurP%n8MuP|OL%oTw|}Jpdih7dVI5XFxdoXh+}9m}F;6 zlGjmCQjP)(U4b*EKn(@@E6|_kl$4&MG*NDjl12byfeAnbu+yN#rQnTJD4;?C6^>R# z(;Xevh^Y}%qo^81c{>ea8pJecr@7zG88K(XoYBttemfUT&IOZmq1ibuxYc^)5=gL}~D?GxxhvAK>Qs0Wn`{!fD6YsiB(+-j+4h?b1NRG=D| z2bh6nz)D~puo-v>*b5v2-U3XgKxcu^fGfaNM`11fbl=`>9|+Hcya$77>5SlqDi)j?UyqC-_&OM|XIliM&rr`2QCCfC(M##|Zw4cHf(Ro6zR$vRdUsl#K5i{!sv%fCpO1UhxbX z7TK<~$Zey)>lcOgynm~pmGE~6n&)3)y}U*|G$#Mi(J^L|*A~+eA;NpTE@)o$4MFq# zn}X(fo1l6AsGxcNEkX1AF+n5Gc6<9u3iiHtkWX~`%)HR%6m{qn=F+3wC%!!&i2OPH z7J6_bUD}#@;K#~0LTNtKw}R$V`A*P0|Gl7j{s%$x{8d5o{53)I{B=Pi&)j@cyZk7` zc$=SCna>ajm)9p~SjVa7nLmY=y!u~)=K22#n& zc^?-+^SrB|dESjlzQatO4@JEM&3kzZn)m7@(D==b z_o9yehtPhwa6H5(3)%(w3PCT$DXtWBJ#>|z zyFt$s^cBpgM$o-5I5B(0W5-ULHhT z&~JCbm=83+{=5N`0{^y1ngx9b13oY4|3GgMbT#zLQvde;{291g(EMF^ub}y&+;?B| z@o6Orye2gG6tTmC=8y0<1kE3CM+IF2eO%B}p-%|Ezo#AJ)9dJPMriO0 z8k`gKUgXaU`Wfhpg0`Xk7Z2&n59up{-i7|(Nc^i1@3Q=pLv7=O=SZfnqH!(oov<^8 z?_@YR{LZm_jq`P^a_Em@HL(1?;Y(8@OFX}4_=ZFmhhCe&HypYHc(p>lPYVC$^#*zX zogJ~7RQ_AU7w~iFO=&vVUi@qXI0DTXy5>;jMosU=`4$w<6c$~%I5f+cfRxBP>3Ane$;C>p5duS+`W=f-Rvy|Wl zDaAc868Aw7*8V80_hDG$1z6X^v6c(5en(KVWX7^IVJTX${1}$pb6950SXwKvnx4T5 zT835Agq89%R!1XNLouWuM=$WuYr|x2dtu733f#O1S`oa(T<2B zk<{o5R#FUDMIoj{9YV=qB^82Il#{4Oq!g^A*xni*E`ybHJJAmR4=@&W5^1dPH`` z>*3E$GQzJPYzDsyR?=OtihdYuMZ`JTibw@mMJ364X9Z=a*j*H41FPsn3b`t%Ku@lC zzt!vDZvd-kn_dt9JXl4S^hT4Lf>^2Ey1U>0l+*rt9F> zrR%}hz$%h5jPQ#xtl(W4cFys-E($8i)OA7MOg;R`U?t7UG{S!&(+q9}E9n5(q@vxK zR)mg#m2@=I2LBx}?`-R$qW3cGh+IpsBXTE!x?*Ky>cIUBda%)81Yb)qcI8 z!?(h(H(22}fw3A4Hbk)W5NS5p!IcK;r=Z|m>Zd06TqFDvu$uC7ZSd`2HQB%#GJTk< z3s#WV5M8jEltaw$hlACWI>Z*HpmBM&Fg3-2H8dhm*Iz+zgVnSJtf3=$W<>n+&4?(# z8uHAyBcdN_N923>8oHCO4_8pkaDBL%%7^L0HPkZ9ipZ6bRzyBDjj$r*K9U9~Xi)(T zP}2~wh9(yn5eX|aBJ%7gBO-01Y>2Ecv>{Rt*3ha#U4(+PqjeE#x(Z)Iokp7xv4Yh! z1FWH^M%xilkFg{2BYa+2AE}^|WAu?~S~A9@kJM1>7%M{YW3343z`T)lAWrF6>p(Rf z1Z(K*SY4EYelF5QX=rbeaS$Fggt6jEwO1j8dTw^Sd`eSN%|UM#i3zYA8=SEZC- zatxfHrvBq80lQ7(jR^{R8jKSN*3hEyHb=yU$T9dh6XSJ>3i6(yOH`9;g4yAl;b%{< zJA6C*MHBQ%3i<)8rW0Td*(X>L>1wnhvf$okMOp3asckExD`dXP%o(#QXIGX#u1ZC0 zW=;5{$5kbg+||P`VA^c9Bz}NK{Xm*`Fk5`Ep#RN&74sG^7Lg#dw~S!Z68d+vw=8E{ z69x+U7`uY~wf6dpi3KJ`30lu4{!Q1hO^K00{s_C27$WH3Sofr`4qe}$JZlQrbBnS=ZJy7SXAYUZ@^85w1>%W!ry_fJPdL&I`* zb8vhloRhjAwFQ6P+WmP}-mcQW8k2rI`q?mA{(BAczPxGs6JKYa?b*=_XJut_bWlUX zk|WFmTx+IW>mVS?o{E} zvhB4o-+jE9d8GF5jFuap+|II7lkT}cvBuOW6nbh9JDM89ooVck)D-S)W65c8-1(k8 zkv14(EbXmp8@@f`{jt|K=6HYl;+eat`=_iOzJB?5mnYoZwtm{!oc{&;B26n>TF&mK zl_-~PUD~>I*V27#eEO;TV%ZaI5g8tm>0YXFyRPQ91?v```0&8hZ=Wpl{W7%Ja^%#` zzBgNf*RJU`e&_bGDoafuejvWW-plP2+5O2oX_vpU=XQyTx-oWIal`)2uel%3EnT|2 zR=yfbI; z=(8p%R`ykW!uN7pPpiFY#8#Fpzfs=wYTC7}AN{*!>*Qx$_i9$%IX7r}?S?rcMwD(| zF2D84Q)wX$>tbw`)yk2NPwHRe<{WxAyvgY$r-j+uHak5x%Wv{WA1z!mA=0qw?eKSZ zpV@wLz`+}b8(y!sZw)WI828MtU;nW($+&6az&-ug=(~BQ4ae5)sQ9x$U$Or1k{y>@ zXH;A&KDqeBmSgkhHHUUz6&Cu~2(90n*H@ff5|(~CdE5c>n0M0-CVrc6d+NE*`)7L| z*53Kg+Tv30;@y)rU3I&3@>bQe-%dGVYnkHJ(iB&|FwVYq&xpv=86SKQIpA*k7hm3Z zJvyNJ&1arS&fQ(@Z~foSgB!yxt-s-a;e+45tnu60_15HVCo;8nrww_p=RU=*&BM;V z@rPW}N}f_TsjK8Bxw1Qk*|Mnkw&_{bGSkiB;T2@ZuWw z>C?*!rk2%I53eboSX)^&JA86g6@C~yI+%&9W3nvQvj3B@_Qd9&Yi5l*^#3~;YOAWm zPR25sU*UvXNAJ9ybtuL8X63e?dHHQ6xm#r3Z^gX1lkeOeulq>8aCd83v-HU<=QjQO zZC?3V0p3S+pIsok2iO`!292s@u9hD#uc1W%YbiLfU^x+JA>_p0(%E=>x6Ofw$YH*Q}Nvoj*8EI#|wp zXa6_spQ;}!lMcyJlPt}W<+Nn^L0W8) zGEp}Q3I$VQG9X+zK~Z8WFpoXq@iU{|xTi~J-HHg{2O_&S;S zHOUg;DS38wm)s@u63KkFv-u|p|17zZPKHt zT$l*c_~1uQ3D?a=87KJh!G6r?dfNfhREe#!4C?X7F8m2xBMtjxgAB}PS*nkozo2)) ztFuM#qLn-(nR|c-1(-j=pAXsGWdY9VN*)csBXV3e+qP_qWMD3hy`>yBura_TN99QJ zmuvrAR@N9M<*}z5hnIYd-->ugHh+g-n%FcoU(4cFVZK$!t&{mzBe!z%ZHJc3w;ftx z{!`E6&X&rF_v~XO+$tcCz#&=33^F{n^yRS^?$?}#D2uVZS2v{odH+;vws-@CVfNwqBFOV59n_}`=_Z8{h zRgN6rhC&W!!Ixx1$$Vreo4MkoY-Tq8MB~jyHf6eDmzfWTcXRV5wyzSNIdSCTxt7qRVT@F!Q+?_o1tc{$jmZ&*x@K1?-vUGJ4c0`=aA1!1>I_qh*mG-YHO+T1alRXGX=dHm_K}KN;@T`c59-&xrl^)J zSx5^@S=#gOO5>SkU4)nAWyj^_dv5pEHQ&_npTI`03w5>Zz8B*AKmJCxd|jxsWv>D& zj&Bx4m$A3jrOGV(nA3WHX(9_+AK_wo%~6c+zv(8iiR;5$Er;)w;M+$*lUd99NH5D9 zjz)YF?p}^>D+QLbuh$Rowj6cj_yV}M_;^2xs$iilDKg7(R@Ks9n!?t#gvl)@bW_oZtKXrm@BigJhO-%(g)* z3$9|9H$;0_&hz6UzB%{622E!n8zWsU7w^rK=YwXj$2LaFEnfu9WLEB6PN-(*HyZj_ jt^}cH8Xy0PV<5gu=X(DZBH6G2b1U_j#p0}5TKm)~Yp)=)+ece4}wRtSTes~F5+44-^nNPhE5o~xn& DGr1@5 delta 1180 zcmbPd{m*4WCfjV0kM$kt6Z1bxGO{u-FfcMQ@Gm!#(E1(oKNWag$aa!lUHCOr87 z8;b*DJx~P*FhWQUAhp3hzFzPumla$XXo4uz1W$iG=ltA)qSWHz%=|orK_=J?+FlhC zCTa4Z6WJinsMMl-pVYF{97aZ%D@@TfgWUooz>WgiE(EpRIX@>SHMs<6b1}kdGj!d! z{J;%0#V0eb5TQMcIPG9RaFvm6cmgI_rGI+{x>h{5F@eso?dDA-ct&u)qjxU_h`z zk})Eh>WS6K>Qj}Qs0s9~& diff --git a/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.csproj.CoreCompileInputs.cache b/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.csproj.CoreCompileInputs.cache index 7fc31d2..ff42b00 100644 --- a/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.csproj.CoreCompileInputs.cache +++ b/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -79899f010b0c66fc84b9abdf331440593c067d267d0f470e1f4033e933b4c19e +946ae02ae1d24f78debab34bdbac2f87234e55c2d9142e2f73b46c18adb4ce88 diff --git a/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.pdb b/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.pdb index f921012fcc37fa7476389b2925b31982647acbc6..2aed3aacb4c8f33a46591280d71aeea8fbc41c30 100644 GIT binary patch delta 15465 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 Z!ikRfOogeZ2f{pY= 1.0.0", "MongoDB.Driver >= 2.24.0", "Sleopok.Engine >= 1.0.0", - "ZeroLevel >= 1.0.0" + "ZeroLevel >= 4.0.0" ] }, "packageFolders": { diff --git a/src/BukiVedi.Shared/obj/project.nuget.cache b/src/BukiVedi.Shared/obj/project.nuget.cache index b1cc1c7..a981fc4 100644 --- a/src/BukiVedi.Shared/obj/project.nuget.cache +++ b/src/BukiVedi.Shared/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "yT5XSXnkL8QDzBzWmb4d84rvHwETnt31t/sfuePGLwfvd9Qc6aS9gJSYjBmenihhmuQWC/N0ANii96e18tjqlQ==", + "dgSpecHash": "I5NF3rZJZUmDLwIKUi7T7NRpUaNrPoHKlXnBGtdzl5MdYPzg4P1cn162b2nsZJbsHNBvnds14OIqZJxmohNxNw==", "success": true, "projectFilePath": "G:\\Documents\\GitHub\\BukiVedi\\src\\BukiVedi.Shared\\BukiVedi.Shared.csproj", "expectedPackageFiles": [ @@ -22,7 +22,8 @@ "C:\\Users\\Ogoun\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\5.0.0\\system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512", "C:\\Users\\Ogoun\\.nuget\\packages\\system.security.accesscontrol\\5.0.0\\system.security.accesscontrol.5.0.0.nupkg.sha512", "C:\\Users\\Ogoun\\.nuget\\packages\\system.security.principal.windows\\5.0.0\\system.security.principal.windows.5.0.0.nupkg.sha512", - "C:\\Users\\Ogoun\\.nuget\\packages\\zstdsharp.port\\0.7.3\\zstdsharp.port.0.7.3.nupkg.sha512" + "C:\\Users\\Ogoun\\.nuget\\packages\\zstdsharp.port\\0.7.3\\zstdsharp.port.0.7.3.nupkg.sha512", + "C:\\Users\\Ogoun\\.nuget\\packages\\zerolevel\\4.0.0\\zerolevel.4.0.0.nupkg.sha512" ], "logs": [] } \ No newline at end of file diff --git a/src/IndexExportTest/IndexExportTest.csproj b/src/IndexExportTest/IndexExportTest.csproj index 445464d..15fd14b 100644 --- a/src/IndexExportTest/IndexExportTest.csproj +++ b/src/IndexExportTest/IndexExportTest.csproj @@ -9,6 +9,13 @@ + + + + + + Always + diff --git a/src/IndexExportTest/Program.cs b/src/IndexExportTest/Program.cs index 5d339c4..cc210f7 100644 --- a/src/IndexExportTest/Program.cs +++ b/src/IndexExportTest/Program.cs @@ -1,4 +1,6 @@ -using Sleopok.Engine.Services.Storage; +using BukiVedi.Shared.Services; +using Sleopok.Engine.Services; +using Sleopok.Engine.Services.Storage; namespace IndexExportTest { @@ -6,16 +8,22 @@ namespace IndexExportTest { static async Task Main(string[] args) { - var store = new DataStorage(@"/var/www/books"); + var library = new Library(); + + + var store = new DataStorage(@"H:\TEST"); await Dump(store, "author"); await Dump(store, "genre"); await Dump(store, "title"); await Dump(store, "titlelm"); + + + Console.ReadLine(); } static async Task Dump(DataStorage store, string field) { - using (var fs = new FileStream($"/var/www/{field}.txt", FileMode.Create, FileAccess.Write, FileShare.None)) + using (var fs = new FileStream($"H:/TEST1/{field}.txt", FileMode.Create, FileAccess.Write, FileShare.None)) { await store.Dump(field, fs); } diff --git a/src/IndexExportTest/config.ini b/src/IndexExportTest/config.ini new file mode 100644 index 0000000..f89aa27 --- /dev/null +++ b/src/IndexExportTest/config.ini @@ -0,0 +1,9 @@ +login=ogoun +password=A3n1g4e1l5# +libraryPath=I:\Library\Flibusta.Net + +[MongoDB] +ConnectionString="mongodb://192.168.0.222:27017" + +[Sleopok] +path=H:\TEST \ No newline at end of file diff --git a/src/TitleReader/bin/Debug/net8.0/BukiVedi.Shared.pdb b/src/TitleReader/bin/Debug/net8.0/BukiVedi.Shared.pdb index 172277063ba4a51603aef808d25fc5ad71a15fb5..59e76c2c40e040dae3bbe4d5d1156717ff62b01e 100644 GIT binary patch delta 17883 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 Ij&+p&AMlDhVgLXD delta 9362 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 delta 65 zcmV-H0KWf#oCScK1+WM_2=oZl9dVi30h0j&6Om9IgFrmDKs*7&0~qg6E@lA$000MH XmW{xdeMGt89M#Aa|2nrEKmp_p_Z}DI diff --git a/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb b/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb index 67657c71695da15316b089860883edb39679903b..b40b41d5143d56f55f8e4bdb2bbdc9cdbd318526 100644 GIT binary patch delta 61 zcmV-D0K)%(oB@EG0k8-p2+OIMYLBGa0h5tD6O+I*A+tmzz#AAl_&{a>0001?u)|(4 TVf;X*+>SV=FkBw996;m^_r4f? delta 61 zcmV-D0K)%(oB@EG0k8-p2=vU|9dVi30h5tD6O+I*A+tmzz#ACvP%dTx0002LpSMG> TtCUKZE0YwgGFYFp96;m^{Qek< diff --git a/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb b/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb index 87ef50d1695c01d2315155f98402e4e3907519fd..9589249b33e12d2ce380e40b115417221b7db019 100644 GIT binary patch delta 49 zcmV-10M7q_e1Lqg2p$G~^rLEzq_Ykl_7fO8_&{a>0002b{X@xV_ytO`tc~8yiOWT^ H95Un!6EPMC delta 49 zcmV-10M7q_e1Lqg2p$Gm-1{AInX?Wa_7fQIP%dTx0002O>={yh)T2YaQ?R%|00=#^ H95Un!?Tr&X diff --git a/src/TitleReader/bin/Debug/net8.0/TitleReader.deps.json b/src/TitleReader/bin/Debug/net8.0/TitleReader.deps.json index 52dac63..103c31b 100644 --- a/src/TitleReader/bin/Debug/net8.0/TitleReader.deps.json +++ b/src/TitleReader/bin/Debug/net8.0/TitleReader.deps.json @@ -179,7 +179,7 @@ "LemmaSharpPrebuiltFull": "1.0.0", "MongoDB.Driver": "2.24.0", "Sleopok.Engine": "1.0.0", - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "runtime": { "BukiVedi.Shared.dll": {} @@ -209,13 +209,13 @@ }, "Sleopok.Engine/1.0.0": { "dependencies": { - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "runtime": { "Sleopok.Engine.dll": {} } }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "runtime": { "ZeroLevel.dll": {} } @@ -394,7 +394,7 @@ "serviceable": false, "sha512": "" }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "type": "project", "serviceable": false, "sha512": "" diff --git a/src/TitleReader/bin/Debug/net8.0/TitleReader.pdb b/src/TitleReader/bin/Debug/net8.0/TitleReader.pdb index dd4d92727e7d0c6dcf657fcdd5c86864bfa40269..db2ebb2861a710e5e78b4b8f2eb79b5f141122ea 100644 GIT binary patch delta 661 zcmV;G0&4w?Zj5e_d=%V1uAJWRFi3??aTy5yCRO!!)9kU3fChhs(b3Va7nW1xf%Yif z_>NvT!hYwB6+#<%ZcsA6(6?2AZ5IRp0Iic-OT#b}$KQp0hl5XwtnJp#T@mJF;)5V_ z=!5uhnw)llG?84CetXkxl!+GxGkr-<{`sA2;<){Sx4pM>u$eGNq)@2^|jK;g~y>Yg2AwLHP^sqL+5^ zZa+zJm<|}r(-9#X4U)kn4lnyWOGo)IY&k#N?Ss+WGk0t)HAOQd{xyHQz^>Rz4s~hs& z$;JhfN(*9tJNQ6m0N?-s*f{T#v#NAJxP~I))x=2~Ol56tVN+;fa&S;`Wny({Y;-PU zY-|7k0Xz6WW&nTy0AD_uXX!0xK&dxe7Bk4L9ZY3yZDCVrVRCR#a%Ez5X>4>xb!==d zWNd5z00BGrKxP17VFDp4d;$+4x<;Zr*jnDRrgcrTD-5Fo7+!Sn%mBau0FL~+H;=X? vMZR{MO=QRYf3xNeM&cr?BhoS<^8TjNEbh(OX%_?2zkldjdv5l|2@P!Z(b})g;+a?P3+NJBqgns1 z{`QW_Wd&a4&u`Ss>^K>q9FzzJU#X{;*kE!(HK z$>A|)LN>ppIEU)W2ElZJ9VuSfDPkIVC)mTKI?g1VZv7x8a4Ob|vba z++41o`@42`?zR7u`ZdRXU7oDC^EoCnNvK{E zS;oM?$iU;mVn2Hyr^AHlw+m;l>fANii#w_QeSlsX!vh8e0hX6LRla9BOkA5bJ(yMD zsZVNdZenmoVo^arQEF0YW=@G-N=^>Y7_f#028IRU?v1ZK-nq;;zUXsNVbm^64Q{15 zImnt45}D*e<3Akye$;)JJsL5UWxQI* tv)SS7=4X8FN)me%Ze3@1Aj}q(N6#&rCFx~(F diff --git a/src/TitleReader/obj/Debug/net8.0/TitleReader.AssemblyInfo.cs b/src/TitleReader/obj/Debug/net8.0/TitleReader.AssemblyInfo.cs index c38fa9a..81a7141 100644 --- a/src/TitleReader/obj/Debug/net8.0/TitleReader.AssemblyInfo.cs +++ b/src/TitleReader/obj/Debug/net8.0/TitleReader.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("TitleReader")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+653045cfe4c19cb8cabc63ce1b8f61d4b7e4f26e")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+431f2503a837ccf39eac97076a865db39f86a8dd")] [assembly: System.Reflection.AssemblyProductAttribute("TitleReader")] [assembly: System.Reflection.AssemblyTitleAttribute("TitleReader")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/src/TitleReader/obj/Debug/net8.0/TitleReader.AssemblyInfoInputs.cache b/src/TitleReader/obj/Debug/net8.0/TitleReader.AssemblyInfoInputs.cache index 7f01128..e0f1ae1 100644 --- a/src/TitleReader/obj/Debug/net8.0/TitleReader.AssemblyInfoInputs.cache +++ b/src/TitleReader/obj/Debug/net8.0/TitleReader.AssemblyInfoInputs.cache @@ -1 +1 @@ -b6e867e96464d226d6f64f5bb8ff88fd91a7dc10b0cbc8df658695411d89c7c7 +d7606117e667c055ed565f5f0d94c916cbdbb0bbb171442e9a9d4b51ab356451 diff --git a/src/TitleReader/obj/Debug/net8.0/TitleReader.assets.cache b/src/TitleReader/obj/Debug/net8.0/TitleReader.assets.cache index 893adf6b66abc3c6da2c89b5a181ffac6dc4ec2b..1e81a2df76b4da8f9217db64313ee49ed6e6ae7e 100644 GIT binary patch delta 29 fcmZpQ?ug#tsl=Ji009}BgOm)o*;q~V4D<{DY+eQt delta 22 YcmeB(Zi?REsl=(o00HTngOm)o0YT&h&;S4c diff --git a/src/TitleReader/obj/Debug/net8.0/TitleReader.csproj.AssemblyReference.cache b/src/TitleReader/obj/Debug/net8.0/TitleReader.csproj.AssemblyReference.cache index 105f8d65a3d5d882020b46017afecdc855d28b14..ae0d9ad3acfeb5daf0b7205f0ff18080dcf1d273 100644 GIT binary patch delta 140 zcmaDC{NHv$3fqL9iPM)AP0V^XIY&ugayfev+qpxf)0P!YzR&&G^$Oz`u0(p}&cyuQ> d2x@P(c6SLk)G72*=FfcMQ@Gm!#(E1(oKNWag$aa!hO#o;ZP3 zr5-2^0*nxn14wPKkFOWJ%4G!?p3E((4peK2rWULNNPx8htq_M=;ggwHsOMTyP?TC+ zoSC0j471A(O+QwLDPrgiOHQT%0M+H_|yO$Cylb76rF3npyt*NrqT>|EDBc&;rpWM;(;7UibSVKlHDzm^XGY6gn9I=>&5kg3*J0dqn zFDNxJCABCVm^f35V6L*mVh%=50-7TNbrr~*2$%fi(%jU%5||+tL>dCi&CbB=m5=aC zC{fzM@y=CdqGzCIY+!6?$;im9=jR&YoL`jcSWv(S3QiFC4+V^q(->3OW{Z5R??|6~ zf$^gxBP&oA=o6SD(25j$q8!1=TBB=G?Zin6~I7Q?!45J;*!L?l*FPGMkb)x#0JqYEPgsuE&Tti z?%hD33TW94W}&1A9#D!1Mm7v&2|P(`=3yyi6lP=wnZU@%kz1UcUzC%X#K;1vRSdA$ ziY@ZkAbA0%t)572tUgt_iOP&DK-+nMScjj1;ea-f0R@a`#=ylv3`k{#;#XdfU)_ol zbH!83^NX^<=7KT-!nggb%YeQG1t~V)5?97Ts+M4K-G;+y42+G8llfWvCO=@+-h6=F g3QwdE=S)bkjK6AvcqNGHUJ0KZz%Rd9i}R`|0Ni_}%K!iX diff --git a/src/TitleReader/obj/Debug/net8.0/TitleReader.pdb b/src/TitleReader/obj/Debug/net8.0/TitleReader.pdb index dd4d92727e7d0c6dcf657fcdd5c86864bfa40269..db2ebb2861a710e5e78b4b8f2eb79b5f141122ea 100644 GIT binary patch delta 661 zcmV;G0&4w?Zj5e_d=%V1uAJWRFi3??aTy5yCRO!!)9kU3fChhs(b3Va7nW1xf%Yif z_>NvT!hYwB6+#<%ZcsA6(6?2AZ5IRp0Iic-OT#b}$KQp0hl5XwtnJp#T@mJF;)5V_ z=!5uhnw)llG?84CetXkxl!+GxGkr-<{`sA2;<){Sx4pM>u$eGNq)@2^|jK;g~y>Yg2AwLHP^sqL+5^ zZa+zJm<|}r(-9#X4U)kn4lnyWOGo)IY&k#N?Ss+WGk0t)HAOQd{xyHQz^>Rz4s~hs& z$;JhfN(*9tJNQ6m0N?-s*f{T#v#NAJxP~I))x=2~Ol56tVN+;fa&S;`Wny({Y;-PU zY-|7k0Xz6WW&nTy0AD_uXX!0xK&dxe7Bk4L9ZY3yZDCVrVRCR#a%Ez5X>4>xb!==d zWNd5z00BGrKxP17VFDp4d;$+4x<;Zr*jnDRrgcrTD-5Fo7+!Sn%mBau0FL~+H;=X? vMZR{MO=QRYf3xNeM&cr?BhoS<^8TjNEbh(OX%_?2zkldjdv5l|2@P!Z(b})g;+a?P3+NJBqgns1 z{`QW_Wd&a4&u`Ss>^K>q9FzzJU#X{;*kE!(HK z$>A|)LN>ppIEU)W2ElZJ9VuSfDPkIVC)mTKI?g1VZv7x8a4Ob|vba z++41o`@42`?zR7u`ZdRXU7oDC^EoCnNvK{E zS;oM?$iU;mVn2Hyr^AHlw+m;l>fANii#w_QeSlsX!vh8e0hX6LRla9BOkA5bJ(yMD zsZVNdZenmoVo^arQEF0YW=@G-N=^>Y7_f#028IRU?v1ZK-nq;;zUXsNVbm^64Q{15 zImnt45}D*e<3Akye$;)JJsL5UWxQI* tv)SS7=4X8FN)me%Ze3@1Aj}q(N6#&rCFx~(F diff --git a/src/TitleReader/obj/Release/net8.0/TitleReader.AssemblyInfo.cs b/src/TitleReader/obj/Release/net8.0/TitleReader.AssemblyInfo.cs index 719a3c3..7f9eee5 100644 --- a/src/TitleReader/obj/Release/net8.0/TitleReader.AssemblyInfo.cs +++ b/src/TitleReader/obj/Release/net8.0/TitleReader.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("TitleReader")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+653045cfe4c19cb8cabc63ce1b8f61d4b7e4f26e")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+431f2503a837ccf39eac97076a865db39f86a8dd")] [assembly: System.Reflection.AssemblyProductAttribute("TitleReader")] [assembly: System.Reflection.AssemblyTitleAttribute("TitleReader")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/src/TitleReader/obj/Release/net8.0/TitleReader.AssemblyInfoInputs.cache b/src/TitleReader/obj/Release/net8.0/TitleReader.AssemblyInfoInputs.cache index ae363b2..8cc1727 100644 --- a/src/TitleReader/obj/Release/net8.0/TitleReader.AssemblyInfoInputs.cache +++ b/src/TitleReader/obj/Release/net8.0/TitleReader.AssemblyInfoInputs.cache @@ -1 +1 @@ -588b6177dc8dadc34104d72c7f17ba8cc3301324d19dcc1fef526a0a4fcaa5de +a7282ddb1bbc4aea6cf73d9f5cd24625e715891dd94841b8c41be90b8822b144 diff --git a/src/TitleReader/obj/Release/net8.0/TitleReader.assets.cache b/src/TitleReader/obj/Release/net8.0/TitleReader.assets.cache index 93c16844266308c29e7815bc199995b0c3e4f48d..fc986a6c3c1a556b858368058c5888c3acf5baa7 100644 GIT binary patch delta 29 fcmZpQ?ug#tsl=Ji009}BgOm)o*;q~V4D<{DY+eQt delta 22 YcmeB(Zi?REsl=(o00HTngOm)o0YT&h&;S4c diff --git a/src/TitleReader/obj/Release/net8.0/TitleReader.csproj.AssemblyReference.cache b/src/TitleReader/obj/Release/net8.0/TitleReader.csproj.AssemblyReference.cache index 56fb9930a379e3d1f7ddc521cfe28d85a2ea7130..a22402ccc8b588edaa43b3276b6a9f0cc2fb7221 100644 GIT binary patch delta 1039 zcmez6yeD`<5}TzROW(4hi5YJs8HE`b7#JBD`GPBpOHy<7f=csBGILWIIVLx7f!YJo8sU}6U`u+0lARhZ8?mPfj4+hLABK}dxB|sFpVxuI2g^d$r$Yt5$(lHI(VOOA={dr}Edbn|JRsZ4B7^tEd`(kG|!zXuyBA>=Q1 u_RCbTCPqd^&ZyL)e4o^^)EvgifqWuh3l