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 1e176b0..ddf66c9 100644 Binary files a/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.assets.cache and b/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.assets.cache differ 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 f9fa781..ea9fcfd 100644 Binary files a/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.csproj.AssemblyReference.cache and b/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.csproj.AssemblyReference.cache differ 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 6f925bf..3dcb327 100644 Binary files a/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.pdb and b/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.pdb differ diff --git a/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.AssemblyInfo.cs b/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.AssemblyInfo.cs index 39c3d25..2067511 100644 --- a/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.AssemblyInfo.cs +++ b/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("BukiVedi.App")] [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("BukiVedi.App")] [assembly: System.Reflection.AssemblyTitleAttribute("BukiVedi.App")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.AssemblyInfoInputs.cache b/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.AssemblyInfoInputs.cache index cdf3c95..aa72588 100644 --- a/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.AssemblyInfoInputs.cache +++ b/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.AssemblyInfoInputs.cache @@ -1 +1 @@ -fdd5f880a586f54d63e65e077bb04d3db4265027ab5434a4a34588cbd432d5ad +731a41efb4470858e97b70db5c6c673a43866001a9d9b8ac769cdb5c62d8eec0 diff --git a/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.assets.cache b/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.assets.cache index 5933374..01f89d6 100644 Binary files a/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.assets.cache and b/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.assets.cache differ diff --git a/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.csproj.AssemblyReference.cache b/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.csproj.AssemblyReference.cache index b2a89ad..0cc8d4d 100644 Binary files a/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.csproj.AssemblyReference.cache and b/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.csproj.AssemblyReference.cache differ 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 491a7e4..b3958a1 100644 Binary files a/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.pdb and b/src/BukiVedi.App/obj/Release/net8.0/BukiVedi.App.pdb differ diff --git a/src/BukiVedi.App/obj/project.assets.json b/src/BukiVedi.App/obj/project.assets.json index bb63836..4084aef 100644 --- a/src/BukiVedi.App/obj/project.assets.json +++ b/src/BukiVedi.App/obj/project.assets.json @@ -312,7 +312,7 @@ "LemmaSharpPrebuiltFull": "1.0.0", "MongoDB.Driver": "2.24.0", "Sleopok.Engine": "1.0.0", - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "compile": { "bin/placeholder/BukiVedi.Shared.dll": {} @@ -359,7 +359,7 @@ "type": "project", "framework": ".NETCoreApp,Version=v8.0", "dependencies": { - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "compile": { "bin/placeholder/Sleopok.Engine.dll": {} @@ -368,7 +368,7 @@ "bin/placeholder/Sleopok.Engine.dll": {} } }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "type": "project", "framework": ".NETStandard,Version=v2.1", "compile": { @@ -901,7 +901,7 @@ "path": "../../../sleopok/src/Sleopok/Sleopok.Engine/Sleopok.Engine.csproj", "msbuildProject": "../../../sleopok/src/Sleopok/Sleopok.Engine/Sleopok.Engine.csproj" }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "type": "project", "path": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj", "msbuildProject": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj" diff --git a/src/BukiVedi.App/obj/project.nuget.cache b/src/BukiVedi.App/obj/project.nuget.cache index b0eae1f..9e2953c 100644 --- a/src/BukiVedi.App/obj/project.nuget.cache +++ b/src/BukiVedi.App/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "khX5RP6JJFT2LBLzj+Ot4o0IXXnuCqfW0ZG0t4xzjbbr+k4RiF1Ho6zHhDdd5SOV8/ypGBf2EKTEXhGJLWyDqw==", + "dgSpecHash": "cgT03nZvFhiSJWavUt+O9IWjN5VoS+X4EMqHGR07TZbMsT+VDQcLTRikmEXkuWgt3Qvgp/8+UNd1Imh81KhCvQ==", "success": true, "projectFilePath": "G:\\Documents\\GitHub\\BukiVedi\\src\\BukiVedi.App\\BukiVedi.App.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/BukiVedi.App/obj/publish/linux-x64/BukiVedi.App.csproj.nuget.dgspec.json b/src/BukiVedi.App/obj/publish/linux-x64/BukiVedi.App.csproj.nuget.dgspec.json index 8768522..f25bc05 100644 --- a/src/BukiVedi.App/obj/publish/linux-x64/BukiVedi.App.csproj.nuget.dgspec.json +++ b/src/BukiVedi.App/obj/publish/linux-x64/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/publish/linux-x64/project.assets.json b/src/BukiVedi.App/obj/publish/linux-x64/project.assets.json index cd3c882..c34bf8d 100644 --- a/src/BukiVedi.App/obj/publish/linux-x64/project.assets.json +++ b/src/BukiVedi.App/obj/publish/linux-x64/project.assets.json @@ -312,7 +312,7 @@ "LemmaSharpPrebuiltFull": "1.0.0", "MongoDB.Driver": "2.24.0", "Sleopok.Engine": "1.0.0", - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "compile": { "bin/placeholder/BukiVedi.Shared.dll": {} @@ -359,7 +359,7 @@ "type": "project", "framework": ".NETCoreApp,Version=v8.0", "dependencies": { - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "compile": { "bin/placeholder/Sleopok.Engine.dll": {} @@ -368,7 +368,7 @@ "bin/placeholder/Sleopok.Engine.dll": {} } }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "type": "project", "framework": ".NETStandard,Version=v2.1", "compile": { @@ -657,7 +657,7 @@ "LemmaSharpPrebuiltFull": "1.0.0", "MongoDB.Driver": "2.24.0", "Sleopok.Engine": "1.0.0", - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "compile": { "bin/placeholder/BukiVedi.Shared.dll": {} @@ -704,7 +704,7 @@ "type": "project", "framework": ".NETCoreApp,Version=v8.0", "dependencies": { - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "compile": { "bin/placeholder/Sleopok.Engine.dll": {} @@ -713,7 +713,7 @@ "bin/placeholder/Sleopok.Engine.dll": {} } }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "type": "project", "framework": ".NETStandard,Version=v2.1", "compile": { @@ -1246,7 +1246,7 @@ "path": "../../../sleopok/src/Sleopok/Sleopok.Engine/Sleopok.Engine.csproj", "msbuildProject": "../../../sleopok/src/Sleopok/Sleopok.Engine/Sleopok.Engine.csproj" }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "type": "project", "path": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj", "msbuildProject": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj" diff --git a/src/BukiVedi.App/obj/publish/linux-x64/project.nuget.cache b/src/BukiVedi.App/obj/publish/linux-x64/project.nuget.cache index 0046a43..03e8e27 100644 --- a/src/BukiVedi.App/obj/publish/linux-x64/project.nuget.cache +++ b/src/BukiVedi.App/obj/publish/linux-x64/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "YieecpqSbR1Q03HaeUp2CKgHkYXxRAAhOAbWwh8Y/r3bb53xP809lSyjzaaR59H8XIbINJ6PeUVYKgglvcHt4w==", + "dgSpecHash": "WT8+/bOG0gQIp6FInML/Lmsskjf0rg/5st9Dd3VHXhEoUwL33AGiTDPmzKYmwAabUxVLuUF2b5V0y6nxXgGKEg==", "success": true, "projectFilePath": "G:\\Documents\\GitHub\\BukiVedi\\src\\BukiVedi.App\\BukiVedi.App.csproj", "expectedPackageFiles": [ @@ -23,6 +23,7 @@ "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\\zerolevel\\4.0.0\\zerolevel.4.0.0.nupkg.sha512", "C:\\Users\\Ogoun\\.nuget\\packages\\microsoft.netcore.app.runtime.linux-x64\\8.0.4\\microsoft.netcore.app.runtime.linux-x64.8.0.4.nupkg.sha512", "C:\\Users\\Ogoun\\.nuget\\packages\\microsoft.aspnetcore.app.runtime.linux-x64\\8.0.4\\microsoft.aspnetcore.app.runtime.linux-x64.8.0.4.nupkg.sha512", "C:\\Users\\Ogoun\\.nuget\\packages\\microsoft.netcore.app.host.linux-x64\\8.0.4\\microsoft.netcore.app.host.linux-x64.8.0.4.nupkg.sha512" diff --git a/src/BukiVedi.App/web/assets/heart.svg b/src/BukiVedi.App/web/assets/heart.svg new file mode 100644 index 0000000..97702bb --- /dev/null +++ b/src/BukiVedi.App/web/assets/heart.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ 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 1722770..59e76c2 100644 Binary files a/src/BukiVedi.Shared/bin/Debug/net8.0/BukiVedi.Shared.pdb and b/src/BukiVedi.Shared/bin/Debug/net8.0/BukiVedi.Shared.pdb differ diff --git a/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharp.pdb b/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharp.pdb index 257050a..9ede083 100644 Binary files a/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharp.pdb and b/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharp.pdb differ diff --git a/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb b/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb index 67657c7..b40b41d 100644 Binary files a/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb and b/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb differ diff --git a/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb b/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb index 87ef50d..9589249 100644 Binary files a/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb and b/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb differ 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 f921012..2aed3aa 100644 Binary files a/src/BukiVedi.Shared/bin/Release/net8.0/BukiVedi.Shared.pdb and b/src/BukiVedi.Shared/bin/Release/net8.0/BukiVedi.Shared.pdb differ diff --git a/src/BukiVedi.Shared/obj/BukiVedi.Shared.csproj.nuget.dgspec.json b/src/BukiVedi.Shared/obj/BukiVedi.Shared.csproj.nuget.dgspec.json index 81e3daf..957c143 100644 --- a/src/BukiVedi.Shared/obj/BukiVedi.Shared.csproj.nuget.dgspec.json +++ b/src/BukiVedi.Shared/obj/BukiVedi.Shared.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.Shared/obj/Debug/net8.0/BukiVedi.Shared.AssemblyInfo.cs b/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.AssemblyInfo.cs index 80a46be..7ab13af 100644 --- a/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.AssemblyInfo.cs +++ b/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("BukiVedi.Shared")] [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.Shared")] [assembly: System.Reflection.AssemblyTitleAttribute("BukiVedi.Shared")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.AssemblyInfoInputs.cache b/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.AssemblyInfoInputs.cache index c5c3e17..7f32097 100644 --- a/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.AssemblyInfoInputs.cache +++ b/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.AssemblyInfoInputs.cache @@ -1 +1 @@ -6662423c1e23f623328b320f21205ebeff7a4aebfe8c7b0b24e3f18247b7d14a +22258ed3f3bd48ae74b9c3607cf0cf82ec9b3322b631691b32743438f798c7cc diff --git a/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.csproj.AssemblyReference.cache b/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.csproj.AssemblyReference.cache index aecaecc..815d751 100644 Binary files a/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.csproj.AssemblyReference.cache and b/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.csproj.AssemblyReference.cache differ 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 1722770..59e76c2 100644 Binary files a/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.pdb and b/src/BukiVedi.Shared/obj/Debug/net8.0/BukiVedi.Shared.pdb differ diff --git a/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.AssemblyInfo.cs b/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.AssemblyInfo.cs index ad61e1d..50fa052 100644 --- a/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.AssemblyInfo.cs +++ b/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("BukiVedi.Shared")] [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("BukiVedi.Shared")] [assembly: System.Reflection.AssemblyTitleAttribute("BukiVedi.Shared")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.AssemblyInfoInputs.cache b/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.AssemblyInfoInputs.cache index 28255ba..73796d8 100644 --- a/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.AssemblyInfoInputs.cache +++ b/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.AssemblyInfoInputs.cache @@ -1 +1 @@ -28e06cd4b9a59e2ff22da92879fdac725f071bab5552441829896eec6bfa3411 +06715856c937a6aa0ade3b1fa065928029591cc434dd76545f239523dd28567b diff --git a/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.csproj.AssemblyReference.cache b/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.csproj.AssemblyReference.cache index e391ef1..05631fb 100644 Binary files a/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.csproj.AssemblyReference.cache and b/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.csproj.AssemblyReference.cache differ 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 f921012..2aed3aa 100644 Binary files a/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.pdb and b/src/BukiVedi.Shared/obj/Release/net8.0/BukiVedi.Shared.pdb differ diff --git a/src/BukiVedi.Shared/obj/project.assets.json b/src/BukiVedi.Shared/obj/project.assets.json index 4f8b5f0..5678192 100644 --- a/src/BukiVedi.Shared/obj/project.assets.json +++ b/src/BukiVedi.Shared/obj/project.assets.json @@ -340,7 +340,7 @@ "type": "project", "framework": ".NETCoreApp,Version=v8.0", "dependencies": { - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "compile": { "bin/placeholder/Sleopok.Engine.dll": {} @@ -349,7 +349,7 @@ "bin/placeholder/Sleopok.Engine.dll": {} } }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "type": "project", "framework": ".NETStandard,Version=v2.1", "compile": { @@ -666,7 +666,7 @@ "type": "project", "framework": ".NETCoreApp,Version=v8.0", "dependencies": { - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "compile": { "bin/placeholder/Sleopok.Engine.dll": {} @@ -675,7 +675,7 @@ "bin/placeholder/Sleopok.Engine.dll": {} } }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "type": "project", "framework": ".NETStandard,Version=v2.1", "compile": { @@ -1203,7 +1203,7 @@ "path": "../../../sleopok/src/Sleopok/Sleopok.Engine/Sleopok.Engine.csproj", "msbuildProject": "../../../sleopok/src/Sleopok/Sleopok.Engine/Sleopok.Engine.csproj" }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "type": "project", "path": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj", "msbuildProject": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj" @@ -1217,7 +1217,7 @@ "LemmaSharpPrebuiltFull >= 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 1722770..59e76c2 100644 Binary files a/src/TitleReader/bin/Debug/net8.0/BukiVedi.Shared.pdb and b/src/TitleReader/bin/Debug/net8.0/BukiVedi.Shared.pdb differ diff --git a/src/TitleReader/bin/Debug/net8.0/LemmaSharp.pdb b/src/TitleReader/bin/Debug/net8.0/LemmaSharp.pdb index 257050a..9ede083 100644 Binary files a/src/TitleReader/bin/Debug/net8.0/LemmaSharp.pdb and b/src/TitleReader/bin/Debug/net8.0/LemmaSharp.pdb differ diff --git a/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb b/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb index 67657c7..b40b41d 100644 Binary files a/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb and b/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb differ diff --git a/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb b/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb index 87ef50d..9589249 100644 Binary files a/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb and b/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuiltFull.pdb differ 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 dd4d927..db2ebb2 100644 Binary files a/src/TitleReader/bin/Debug/net8.0/TitleReader.pdb and b/src/TitleReader/bin/Debug/net8.0/TitleReader.pdb differ 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 893adf6..1e81a2d 100644 Binary files a/src/TitleReader/obj/Debug/net8.0/TitleReader.assets.cache and b/src/TitleReader/obj/Debug/net8.0/TitleReader.assets.cache differ 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 105f8d6..ae0d9ad 100644 Binary files a/src/TitleReader/obj/Debug/net8.0/TitleReader.csproj.AssemblyReference.cache and b/src/TitleReader/obj/Debug/net8.0/TitleReader.csproj.AssemblyReference.cache differ diff --git a/src/TitleReader/obj/Debug/net8.0/TitleReader.pdb b/src/TitleReader/obj/Debug/net8.0/TitleReader.pdb index dd4d927..db2ebb2 100644 Binary files a/src/TitleReader/obj/Debug/net8.0/TitleReader.pdb and b/src/TitleReader/obj/Debug/net8.0/TitleReader.pdb differ 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 93c1684..fc986a6 100644 Binary files a/src/TitleReader/obj/Release/net8.0/TitleReader.assets.cache and b/src/TitleReader/obj/Release/net8.0/TitleReader.assets.cache differ 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 56fb993..a22402c 100644 Binary files a/src/TitleReader/obj/Release/net8.0/TitleReader.csproj.AssemblyReference.cache and b/src/TitleReader/obj/Release/net8.0/TitleReader.csproj.AssemblyReference.cache differ diff --git a/src/TitleReader/obj/TitleReader.csproj.nuget.dgspec.json b/src/TitleReader/obj/TitleReader.csproj.nuget.dgspec.json index 0d0ad8d..abd4398 100644 --- a/src/TitleReader/obj/TitleReader.csproj.nuget.dgspec.json +++ b/src/TitleReader/obj/TitleReader.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/TitleReader/obj/project.assets.json b/src/TitleReader/obj/project.assets.json index 001119e..b81fafc 100644 --- a/src/TitleReader/obj/project.assets.json +++ b/src/TitleReader/obj/project.assets.json @@ -312,7 +312,7 @@ "LemmaSharpPrebuiltFull": "1.0.0", "MongoDB.Driver": "2.24.0", "Sleopok.Engine": "1.0.0", - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "compile": { "bin/placeholder/BukiVedi.Shared.dll": {} @@ -359,7 +359,7 @@ "type": "project", "framework": ".NETCoreApp,Version=v8.0", "dependencies": { - "ZeroLevel": "1.0.0" + "ZeroLevel": "4.0.0" }, "compile": { "bin/placeholder/Sleopok.Engine.dll": {} @@ -368,7 +368,7 @@ "bin/placeholder/Sleopok.Engine.dll": {} } }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "type": "project", "framework": ".NETStandard,Version=v2.1", "compile": { @@ -901,7 +901,7 @@ "path": "../../../sleopok/src/Sleopok/Sleopok.Engine/Sleopok.Engine.csproj", "msbuildProject": "../../../sleopok/src/Sleopok/Sleopok.Engine/Sleopok.Engine.csproj" }, - "ZeroLevel/1.0.0": { + "ZeroLevel/4.0.0": { "type": "project", "path": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj", "msbuildProject": "F:\\Documents\\GitHub\\Zero\\ZeroLevel\\ZeroLevel.csproj" diff --git a/src/TitleReader/obj/project.nuget.cache b/src/TitleReader/obj/project.nuget.cache index 60a3f0d..2609510 100644 --- a/src/TitleReader/obj/project.nuget.cache +++ b/src/TitleReader/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "kWMsTMYfHKFRfmEETdspspZMDX5Q7j8a9bwhSWnX9GUwk9jMvNjEEVpRTQ1BcySO4xIeyDgBFMoFZ/6NKYNuOg==", + "dgSpecHash": "Sw/P8SWtQDkQsfDVJxqQlQjTkIGfP1lboPxZ+pAQBR6QlHJi296GVIfCq+cIhVP0NOhSpqFErs2oyZY9AwwjkA==", "success": true, "projectFilePath": "G:\\Documents\\GitHub\\BukiVedi\\src\\TitleReader\\TitleReader.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