From 55c378d992a77b2e7bab92c27e38534159cb0527 Mon Sep 17 00:00:00 2001 From: Ogoun Date: Sat, 1 Jun 2024 22:43:44 +0300 Subject: [PATCH] Refactoring --- .../Controllers/BooksController.cs | 1 + .../PublishProfiles/FolderProfile.pubxml.user | 2 +- .../Services/Mappers/BookEntityMapper.cs | 42 --- .../Debug/net8.0/BukiVedi.App.AssemblyInfo.cs | 2 +- .../BukiVedi.App.AssemblyInfoInputs.cache | 2 +- ...ukiVedi.App.csproj.AssemblyReference.cache | Bin 10429 -> 10429 bytes ...ukiVedi.App.csproj.CoreCompileInputs.cache | 2 +- .../BukiVedi.App.csproj.FileListAbsolute.txt | 2 - .../obj/Debug/net8.0/BukiVedi.App.pdb | Bin 30880 -> 30220 bytes .../net8.0/BukiVedi.App.AssemblyInfo.cs | 2 +- .../BukiVedi.App.AssemblyInfoInputs.cache | 2 +- ...ukiVedi.App.csproj.AssemblyReference.cache | Bin 10491 -> 10491 bytes .../BukiVedi.App.csproj.FileListAbsolute.txt | 4 + .../obj/Release/net8.0/BukiVedi.App.pdb | Bin 29224 -> 29588 bytes src/BukiVedi.Shared/Apps/AuthorHandler.cs | 49 ++- src/BukiVedi.Shared/Apps/BooksHandler.cs | 85 ++---- src/BukiVedi.Shared/Apps/TagsHandler.cs | 11 +- src/BukiVedi.Shared/Services/AuthProvider.cs | 3 +- src/BukiVedi.Shared/Services/Filters.cs | 278 ++++++++++++++++++ src/BukiVedi.Shared/Services/Library.cs | 50 ++-- .../Services/Mappers/BookEntityMapper.cs | 19 +- .../bin/Debug/net8.0/BukiVedi.Shared.pdb | Bin 44532 -> 45136 bytes .../bin/Debug/net8.0/LemmaSharp.pdb | Bin 85504 -> 85504 bytes .../net8.0/LemmaSharpPrebuilt.dll.config | 3 - .../bin/Debug/net8.0/LemmaSharpPrebuilt.pdb | Bin 19968 -> 0 bytes .../Debug/net8.0/LemmaSharpPrebuiltFull.pdb | Bin 15872 -> 15872 bytes .../bin/Release/net8.0/BukiVedi.Shared.pdb | Bin 37972 -> 38232 bytes .../net8.0/BukiVedi.Shared.AssemblyInfo.cs | 2 +- .../BukiVedi.Shared.AssemblyInfoInputs.cache | 2 +- ...Vedi.Shared.csproj.AssemblyReference.cache | Bin 9232 -> 9232 bytes ...Vedi.Shared.csproj.CoreCompileInputs.cache | 2 +- ...ukiVedi.Shared.csproj.FileListAbsolute.txt | 2 - .../obj/Debug/net8.0/BukiVedi.Shared.pdb | Bin 44532 -> 45136 bytes .../net8.0/BukiVedi.Shared.AssemblyInfo.cs | 2 +- .../BukiVedi.Shared.AssemblyInfoInputs.cache | 2 +- ...Vedi.Shared.csproj.AssemblyReference.cache | Bin 7582 -> 9290 bytes .../obj/Release/net8.0/BukiVedi.Shared.pdb | Bin 37972 -> 38232 bytes .../bin/Debug/net8.0/BukiVedi.Shared.pdb | Bin 44236 -> 45136 bytes .../bin/Debug/net8.0/LemmaSharp.pdb | Bin 85504 -> 85504 bytes .../net8.0/LemmaSharpPrebuilt.dll.config | 3 - .../bin/Debug/net8.0/LemmaSharpPrebuilt.pdb | Bin 19968 -> 0 bytes .../Debug/net8.0/LemmaSharpPrebuiltFull.pdb | Bin 15872 -> 15872 bytes .../bin/Debug/net8.0/TitleReader.pdb | Bin 14092 -> 14092 bytes .../Debug/net8.0/TitleReader.AssemblyInfo.cs | 2 +- .../TitleReader.AssemblyInfoInputs.cache | 2 +- ...TitleReader.csproj.AssemblyReference.cache | Bin 7885 -> 11132 bytes .../TitleReader.csproj.FileListAbsolute.txt | 2 - .../obj/Debug/net8.0/TitleReader.pdb | Bin 14092 -> 14092 bytes .../net8.0/TitleReader.AssemblyInfo.cs | 2 +- .../TitleReader.AssemblyInfoInputs.cache | 2 +- ...TitleReader.csproj.AssemblyReference.cache | Bin 10684 -> 7935 bytes 51 files changed, 377 insertions(+), 207 deletions(-) delete mode 100644 src/BukiVedi.App/Services/Mappers/BookEntityMapper.cs create mode 100644 src/BukiVedi.Shared/Services/Filters.cs delete mode 100644 src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuilt.dll.config delete mode 100644 src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb delete mode 100644 src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuilt.dll.config delete mode 100644 src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb diff --git a/src/BukiVedi.App/Controllers/BooksController.cs b/src/BukiVedi.App/Controllers/BooksController.cs index fbd193b..394e7bc 100644 --- a/src/BukiVedi.App/Controllers/BooksController.cs +++ b/src/BukiVedi.App/Controllers/BooksController.cs @@ -37,6 +37,7 @@ namespace BukiVedi.App.Controllers } #endregion + /// /// Добавление книги в избранное /// diff --git a/src/BukiVedi.App/Properties/PublishProfiles/FolderProfile.pubxml.user b/src/BukiVedi.App/Properties/PublishProfiles/FolderProfile.pubxml.user index b6c99dc..00510cb 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-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; + True|2024-05-27T18:54:10.5214496Z;True|2024-05-12T20:17:18.3446630+03:00;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/Services/Mappers/BookEntityMapper.cs b/src/BukiVedi.App/Services/Mappers/BookEntityMapper.cs deleted file mode 100644 index f4111ec..0000000 --- a/src/BukiVedi.App/Services/Mappers/BookEntityMapper.cs +++ /dev/null @@ -1,42 +0,0 @@ -using BukiVedi.Shared.Entities; -using BukiVedi.Shared.Models; -using BukiVedi.Shared.Services; -using MongoDB.Driver; - -namespace BukiVedi.App.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.App/obj/Debug/net8.0/BukiVedi.App.AssemblyInfo.cs b/src/BukiVedi.App/obj/Debug/net8.0/BukiVedi.App.AssemblyInfo.cs index 420cbb4..f142e7a 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+112daccec93b21f74faf3a3b85b2f9a47b2ae81f")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f836c4963b5e99aa3f8cf1767a7e2475c8365585")] [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 9de1179..837c232 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 @@ -a7e97588f3d72640975deb9345bc56ed8105e4a411d7365c01f74b565d536185 +4b4b9b8782de19706da19d9f622b1c0ae0f67e76d13507633e9b217526407a05 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 f3218c24d05234310fecf056a277f029cb59a94d..774ca94a2e15843a0f4696c1336d6f06a20859a5 100644 GIT binary patch delta 128 zcmdlRxHoV@65Fe0AK~JrjTt?RlYN=uCVyd!+`O8}l$AqD`G;U}(;be z?4ZCoS%TMZa|y>gMh?IAoI+q(Yd&p|?B?ZMa!hO|s_TKGn@{shWnw$F?>vZ|#?Q#i TvE;@Sh-yYbC9vwnLQ-M?I7}}y delta 128 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 RQG6HDE#ag2OGvj7{SO3PZzuo& 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 2067511..d99719d 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+431f2503a837ccf39eac97076a865db39f86a8dd")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f836c4963b5e99aa3f8cf1767a7e2475c8365585")] [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 aa72588..1343d33 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 @@ -731a41efb4470858e97b70db5c6c673a43866001a9d9b8ac769cdb5c62d8eec0 +29025db0182771bf6cf91cb9d325b9bf6b103812996e3476ba09ddfdcd3dd811 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 0cc8d4d631dbafd16a7b2c5866b343d5710289e7..1ab2f16478b47e0fc1eac01063466232ea3abe6d 100644 GIT binary patch delta 41 vcmewz_&aby3Y$``LwsG`#;kmHw!R&2;_B))-)CoKW}Ex%D2V-vOHd8~htm=t delta 41 vcmewz_&aby3fqL9iPM)AZOqDNXFGSOblS3_&G*?^nc3DhNrBj}xCG?@sHhUH 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 367237f..115a392 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 @@ -88,3 +88,7 @@ G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\main\ind 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 +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\assets\pencil.svg +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\common\jquery.min.js +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\components\tags\index.js +G:\Documents\GitHub\BukiVedi\src\BukiVedi.App\bin\Release\net8.0\web\js\utils\index.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 b3958a11993bc6717015bde2194945b2a11d092d..c02bace02058d498a0d78e3aa310a5496bcb3758 100644 GIT binary patch delta 4626 zcmb_gdt8)d7CzrxzF}q<0YO2$a1-$YDuSYEI+A9B4s^_nr>2AE@+~yLfWcnYqc0z>w4j*ZdRMRztpvx`<#z&El;}#~Jc>?9>y9DgN8d#(qQs%It+iL;eE!17tSQ zDC!NP8qqnBSlA-O4Cw(G1>w%Pa;PF&=ov3w3+urxltaQGeIeXXxD+D1==?DS=KY_U z*4xaq0kRpg9a0b3W8(rIwBP1IharE1e5CkVVSfp^1o=w#8PSFjZ5Zh~x? zS#l4kn^Y-g`f#^nRNe{FH8IBdsLI0=8L#5p?gSO*7OY+P#4daidUf|3kMfhjL}k&M zz#j)UDBOp$bc)I`1O=W@ao+L-74He2sNxBlPVR@;f3P`8hin0ul?+4CH0b7B;dKaeFH{JJ{R$)9zG&agv0_d-s}$&k z4nKt59a4-6fyw|rR&n0LS0JTGy56b*mUZFfU3f(ozT`f~`tyjF-gk7|o^I}gSUqGp z;z3G>?}D%F!d)u;&7BOaov|BRa#BFITs<#sUFcJd#<_bc&GG+@N??NWFc z_)p-K;OkJoztRD3QMHPSb$6AQFLwo7Er=RuIKb1k*P*2n|b(lOXZ zIt?_@DWE7v4fGOh51dAhT7eo`4AdgG_=Y$v+d;C;em$KBYG^noyht@b0Ut50U@lw}C(jshlom2;T+* zJ!9wZn-lLH@|GPjX`E|(%k#HGpdD#Fq5UCz5Cj^M9th2+im#$Xj6Mn8WOQT4Ws;8d z&Y%b!mPj0sK{ynHDG!4ypdm=`;mF}($kUNjMx*h(iKPm>f|gL66S+19`Sb{KXdLn+ z2Dvd7+dlzYI3C+J5nE+NvpRau5P=oBY-|&>bWeL57^&~6(bD6h!zj|+xelX&%IDU> zz6UgrC8N$HQWX#{j|{6>r2d&M;8vi4_GPxf_H;POQ>4cnR$!sS1>ERp0UmXbMWk;X zF5sZ77N9MQx{35mmKC@+%LQ!DY5{s@lb1;2v#r32Y!`4xb_=jIo4iFb=U9Pbb1ni; z0}XUDC)h`%@LUIQdTyN_sxnvl-ZNU5CxuxKHD0iMAOxSN|LD}I<@#lHt;HMv`_uZi zy{*SKygi`q-LEyl^PoDYO{C$%CE2J-w2$R`H037D&+a+G zela2?aK_a=?eR;@9>0scv3=(k`l9Ub`zIB>u=$hXBbjAmD~!{pZ@JX4wz4QP`ST0U zzh7gzB;A~Rpm;|~foJljUGJ~qO^~OK$o;kFrYE;<7f&%9!XZ9ET^UJ=|K9Bq2`p?l`4Kohfr>trBIzKu3Im27q zy0u6CDRy#Awa<`)N8k6ZI`fT}@73#4?uKu#-=6yBx#(r3W40aWQ9k_2y+__YetYGe zH%DrJ86D8PF#Yn4HxBGvx9xWQv4+rjtBluU3eK+(8cjXxGyz+hRvn>Wf!_T-JiPs} zrPj>_y@JO-`m{AbOY}Df^OsC#4wsc@NQW9Ah2}d-9`*ou{+$Cz)$v^A zSr@@d9VFe%|NFyUc)K1=+j%0L9m{KOAHf0c-Cn|O{x97iUb z$qc_W?d8?~)%2wkPk&}g{2vCw541$-_4&0zl4LEc5|X78gd_VJDY+r+0cQeE; zEiTG8rAMLo6OeT2tD;;}h7D#ZBtx2093?oUwZ#L4Y-u+zS89VNPtuhP6bhuMl5s+z z^mNHkp;+2f5+#&M$AM+it&%89c~B%e!eyC|Mp2hT`3+Y=k8Yf#)em zgC~MTGZ_&@TTZNGdSi+-lkMMEh2a?@g@mH=XgGJjMY_TMUga!t7;^ca|Xm! u#Sf4BKYj=DkF`|4V31{9U<|0dFpt=z3k&*Mssm%)p13C^V_9Ee{r>^o`Fvae delta 4207 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 IKi!A)fAYjziU0rr diff --git a/src/BukiVedi.Shared/Apps/AuthorHandler.cs b/src/BukiVedi.Shared/Apps/AuthorHandler.cs index 72f7ea1..1febf96 100644 --- a/src/BukiVedi.Shared/Apps/AuthorHandler.cs +++ b/src/BukiVedi.Shared/Apps/AuthorHandler.cs @@ -2,7 +2,6 @@ using BukiVedi.Shared.Models; using BukiVedi.Shared.Services; using BukiVedi.Shared.Services.Mappers; -using MongoDB.Driver; namespace BukiVedi.Shared.Apps { @@ -18,50 +17,46 @@ namespace BukiVedi.Shared.Apps 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) + if (await Tables.FavoriteAuthors.Exists(Filters.FavoriteAuthors.Exact(id, context.OperationInitiator.Id)) == 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> GetAllAuthors(OperationContext context) => + (await Tables.Authors.GetAll()).Select(a => new AuthorInfo { Id = a.Id, Name = a.Name })?.ToArray()!; 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; + var authorIds = (await Tables.FavoriteAuthors.Get(Filters.FavoriteAuthors.ByUser(context.OperationInitiator.Id)))?.Select(f => f.AuthorId)?.ToHashSet()!; + if (authorIds != null && authorIds.Any()) + { + var authors = (await Tables.Authors.Get(Filters.Authors.ByIds(authorIds)))?.Select(a => new AuthorInfo { Id = a.Id, Name = a.Name })?.ToArray()!; + return authors; + } + return Enumerable.Empty(); } 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) + var records = (await Tables.FavoriteAuthors.Get(Filters.FavoriteAuthors.Exact(id, context.OperationInitiator.Id)))?.ToHashSet()!; + if (records != null && records.Count > 0) { - await Tables.FavoriteAuthors.TryRemoveById(record.Id); + 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); + var books = (await _library.SearchBooksByAuthor(id))?.ToArray()!; + if (books != null && books.Any()) + { + return await BookEntityMapper.Map(books, context); + } + return Enumerable.Empty(); } } } diff --git a/src/BukiVedi.Shared/Apps/BooksHandler.cs b/src/BukiVedi.Shared/Apps/BooksHandler.cs index 9211fe7..bb52744 100644 --- a/src/BukiVedi.Shared/Apps/BooksHandler.cs +++ b/src/BukiVedi.Shared/Apps/BooksHandler.cs @@ -1,15 +1,7 @@ -using Amazon.Runtime.Internal; -using BukiVedi.Shared.Entities; +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 @@ -33,16 +25,11 @@ namespace BukiVedi.Shared.Apps var authors = book.AuthorIds; if (!string.IsNullOrEmpty(account_id) && authors?.Count > 0) { - foreach (var author in authors) + foreach (var author_id 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) + if (await Tables.FavoriteAuthors.Exists(Filters.FavoriteAuthors.Exact(author_id, account_id)) == false) { - await Tables.FavoriteAuthors.Write(new FavoriteAuthor { AuthorId = author, UserId = account_id }); + await Tables.FavoriteAuthors.Write(new FavoriteAuthor { AuthorId = author_id, UserId = account_id }); } } } @@ -56,12 +43,7 @@ namespace BukiVedi.Shared.Apps 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) + if (await Tables.ReadQueue.Exists(Filters.BooksToRead.Exact(id, account_id)) == false) { await Tables.ReadQueue.Write(new ReadQueueItem { BookId = id, UserId = account_id, Timestamp = Timestamp.UtcNow }); } @@ -76,12 +58,7 @@ namespace BukiVedi.Shared.Apps 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) + if (await Tables.FavoriteBooks.Exists(Filters.FavoriteBooks.ByBook(id, account_id)) == false) { await Tables.FavoriteBooks.Write(new FavoriteBook { BookId = id, UserId = account_id }); } @@ -96,12 +73,7 @@ namespace BukiVedi.Shared.Apps 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) + if (await Tables.DisgustingBooks.Exists(Filters.DisgustingBooks.ByBook(id, account_id)) == false) { await Tables.DisgustingBooks.Write(new DisgustingBook { BookId = id, UserId = account_id }); } @@ -120,12 +92,7 @@ namespace BukiVedi.Shared.Apps { 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) + if (await Tables.DisgustingAuthors.Exists(Filters.DisgustingAuthors.ByAuthor(author, account_id)) == false) { await Tables.DisgustingAuthors.Write(new DisgustingAuthor { AuthorId = author, UserId = account_id }); } @@ -149,13 +116,7 @@ namespace BukiVedi.Shared.Apps 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); + var records = await Tables.FavoriteBooks.Get(Filters.FavoriteBooks.ByBook(id, context.OperationInitiator.Id)); foreach (var record in records) { await Tables.FavoriteBooks.TryRemoveById(record.Id); @@ -164,13 +125,7 @@ namespace BukiVedi.Shared.Apps 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); + var records = await Tables.ReadQueue.Get(Filters.BooksToRead.Exact(id, context.OperationInitiator.Id)); foreach (var record in records) { await Tables.ReadQueue.TryRemoveById(record.Id); @@ -186,35 +141,35 @@ namespace BukiVedi.Shared.Apps case "@favorites": { var books = (await _library.SearchFavoritesBooks(context.OperationInitiator.Id)).ToArray(); - return await BookEntityMapper.Map(books); + return await BookEntityMapper.Map(books, context); } case "@favoriteauthors": { var books = (await _library.SearchFavoriteAuthorsBooks(context.OperationInitiator.Id)).ToArray(); - return await BookEntityMapper.Map(books); + return await BookEntityMapper.Map(books, context); } case "@tagged": { var books = (await _library.SearchTaggedBooks(context.OperationInitiator.Id, tag: tag!)).ToArray(); - return await BookEntityMapper.Map(books); + return await BookEntityMapper.Map(books, context); } case "@blocked": { var books = (await _library.SearchBlockedBooks(context.OperationInitiator.Id)).ToArray(); - return await BookEntityMapper.Map(books); + return await BookEntityMapper.Map(books, context); } case "@toread": { var books = (await _library.SearchToReadBooks(context.OperationInitiator.Id)).ToArray(); - return await BookEntityMapper.Map(books); + return await BookEntityMapper.Map(books, context); } default: { var books = (await _library.SearchBooks(query)).ToArray(); - return await BookEntityMapper.Map(books); + return await BookEntityMapper.Map(books, context); } } } @@ -223,16 +178,10 @@ namespace BukiVedi.Shared.Apps 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); + var records = await Tables.DisgustingBooks.Get(Filters.DisgustingBooks.ByBook(id, account_id)); foreach (var record in records) { await Tables.DisgustingBooks.TryRemoveById(record.Id); diff --git a/src/BukiVedi.Shared/Apps/TagsHandler.cs b/src/BukiVedi.Shared/Apps/TagsHandler.cs index a32e403..9a5a7be 100644 --- a/src/BukiVedi.Shared/Apps/TagsHandler.cs +++ b/src/BukiVedi.Shared/Apps/TagsHandler.cs @@ -2,7 +2,6 @@ using BukiVedi.Shared.Models; using BukiVedi.Shared.Services; using BukiVedi.Shared.Services.Mappers; -using MongoDB.Driver; namespace BukiVedi.Shared.Apps { @@ -21,7 +20,7 @@ namespace BukiVedi.Shared.Apps if (string.IsNullOrWhiteSpace(name) == false && await Tables.Books.ExistById(bookId)) { name = name.Trim().ToLowerInvariant(); - var tagFilter = Builders.Filter.And(Builders.Filter.And(Builders.Filter.Eq(t => t.BookId, bookId), Builders.Filter.Eq(t => t.Name, name)), Builders.Filter.Eq(t => t.UserId, context.OperationInitiator.Id)); + var tagFilter = Filters.Tags.Exact(bookId, context.OperationInitiator.Id, name); var existTag = await Tables.UserTag.Get(tagFilter); if (existTag != null && existTag.Length > 0) { @@ -38,9 +37,7 @@ namespace BukiVedi.Shared.Apps public async Task> GetBookTags(string bookId, OperationContext context) { - var userFilter = Builders.Filter.Eq(t => t.UserId, context.OperationInitiator.Id); - var bookFilter = Builders.Filter.Eq(t => t.BookId, bookId); - var filter = Builders.Filter.And(userFilter, bookFilter); + var filter = Filters.Tags.ByBook(bookId, context.OperationInitiator.Id); return (await Tables.UserTag.Get(filter))?.Select(t => new TagInfo { Id = t.Id, @@ -50,7 +47,7 @@ namespace BukiVedi.Shared.Apps public async Task> GetUserTags(OperationContext context) { - return (await Tables.UserTag.Get(Builders.Filter.Eq(t => t.UserId, context.OperationInitiator.Id)))?.Select(t => t.Name)!; + return (await Tables.UserTag.Get(Filters.Tags.ByUser(context.OperationInitiator.Id)))?.Select(t => t.Name)!; } public async Task RemoveTag(string id, OperationContext context) @@ -67,7 +64,7 @@ namespace BukiVedi.Shared.Apps if (string.IsNullOrWhiteSpace(id) == false) { var books = await _library.SearchByTagBooks(context.OperationInitiator.Id, id); - return await BookEntityMapper.Map(books); + return await BookEntityMapper.Map(books, context); } return Enumerable.Empty(); } diff --git a/src/BukiVedi.Shared/Services/AuthProvider.cs b/src/BukiVedi.Shared/Services/AuthProvider.cs index c449fcb..dfa80a4 100644 --- a/src/BukiVedi.Shared/Services/AuthProvider.cs +++ b/src/BukiVedi.Shared/Services/AuthProvider.cs @@ -1,5 +1,4 @@ using BukiVedi.Shared.Entities; -using MongoDB.Driver; namespace BukiVedi.Shared.Services { @@ -21,7 +20,7 @@ namespace BukiVedi.Shared.Services } return await _accountRepository.Write(account); } - public async Task GetAccountByLogin(string login) => (await _accountRepository.Get(Builders.Filter.Eq(a => a.Login, login))).FirstOrDefault()!; + public async Task GetAccountByLogin(string login) => (await _accountRepository.Get(Filters.Auth.ByLogin(login))).FirstOrDefault()!; public async Task GetAccount(string id) => await _accountRepository.GetById(id); public async Task GetAccount(string login, string password) { diff --git a/src/BukiVedi.Shared/Services/Filters.cs b/src/BukiVedi.Shared/Services/Filters.cs new file mode 100644 index 0000000..9938bd4 --- /dev/null +++ b/src/BukiVedi.Shared/Services/Filters.cs @@ -0,0 +1,278 @@ +using BukiVedi.Shared.Entities; +using MongoDB.Driver; +using System.Net; + +namespace BukiVedi.Shared.Services +{ + /// + /// Фабрика фильтров + /// + public static class Filters + { + /// + /// Теги + /// + public static class Tags + { + /// + /// По пользователю + /// + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition ByUser(string userId) => Builders.Filter.Eq(t => t.UserId, userId); + + /// + /// По названию тега + /// + /// Название тега + /// Фильтр + public static FilterDefinition ByName(string name, string userId) => + Builders.Filter.And(Builders.Filter.Eq(t => t.UserId, userId), Builders.Filter.Eq(t => t.Name, name)); + + /// + /// По книге + /// + /// Идентификатор книги + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition ByBook(string bookId, string userId) => + Builders.Filter.And(Builders.Filter.Eq(t => t.BookId, bookId), Builders.Filter.Eq(t => t.UserId, userId)); + + /// + /// По точному совпадению + /// + /// Идентификатор книги + /// Идентификатор пользователя + /// Имя тега + /// Фильтр + public static FilterDefinition Exact(string bookId, string userId, string name) => + Builders.Filter.And( + Builders.Filter.Eq(t => t.BookId, bookId), + Builders.Filter.Eq(t => t.UserId, userId), + Builders.Filter.Eq(t => t.Name, name)); + + /// + /// По книгам + /// + /// Идентификаторы книг + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition ByBooks(IEnumerable bookIds, string userId) => + Builders.Filter.And(Builders.Filter.In(t => t.BookId, bookIds), Builders.Filter.Eq(t => t.UserId, userId)); + } + + /// + /// Избранные книги + /// + public static class FavoriteBooks + { + /// + /// По пользователю + /// + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition ByUser(string userId) => Builders.Filter.Eq(t => t.UserId, userId); + + /// + /// По книге + /// + /// Идентификатор книги + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition ByBook(string bookId, string userId) => + Builders.Filter.And(Builders.Filter.Eq(t => t.BookId, bookId), Builders.Filter.Eq(t => t.UserId, userId)); + + /// + /// По книгам + /// + /// Идентификаторы книг + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition ByBooks(IEnumerable bookIds, string userId) => + Builders.Filter.And(Builders.Filter.In(t => t.BookId, bookIds), Builders.Filter.Eq(t => t.UserId, userId)); + } + + /// + /// Избранные авторы + /// + public static class FavoriteAuthors + { + /// + /// По пользователю + /// + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition ByUser(string userId) => Builders.Filter.Eq(t => t.UserId, userId); + + /// + /// По точному совпадению + /// + /// Идентификатор автора + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition Exact(string authorId, string userId) => + Builders.Filter.And( + Builders.Filter.Eq(t => t.AuthorId, authorId), + Builders.Filter.Eq(t => t.UserId, userId)); + } + + /// + /// Заблокированные книги + /// + public static class DisgustingBooks + { + /// + /// По пользователю + /// + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition ByUser(string userId) => Builders.Filter.Eq(t => t.UserId, userId); + + /// + /// По книге + /// + /// Идентификатор книги + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition ByBook(string bookId, string userId) => + Builders.Filter.And(Builders.Filter.Eq(t => t.BookId, bookId), Builders.Filter.Eq(t => t.UserId, userId)); + + /// + /// По книгам + /// + /// Идентификаторы книг + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition ByBooks(IEnumerable bookIds, string userId) => + Builders.Filter.And(Builders.Filter.In(t => t.BookId, bookIds), Builders.Filter.Eq(t => t.UserId, userId)); + } + + /// + /// Заблокированные авторы + /// + public static class DisgustingAuthors + { + /// + /// По пользователю + /// + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition ByUser(string userId) => Builders.Filter.Eq(t => t.UserId, userId); + + /// + /// По автору + /// + /// Идентификатор автора + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition ByAuthor(string authorId, string userId) => + Builders.Filter.And(Builders.Filter.Eq(t => t.AuthorId, authorId), Builders.Filter.Eq(t => t.UserId, userId)); + + /// + /// По авторам + /// + /// Идентификаторы авторов + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition ByAuthors(IEnumerable authorIds, string userId) => + Builders.Filter.And(Builders.Filter.In(t => t.AuthorId, authorIds), Builders.Filter.Eq(t => t.UserId, userId)); + } + + /// + /// Книги + /// + public static class Books + { + /// + /// По идентификаторам книг + /// + /// Идентификаторы книг + /// Фильтр + public static FilterDefinition ByIds(IEnumerable bookIds) => Builders.Filter.In(t => t.Id, bookIds); + + /// + /// По идентификаторам авторов + /// + /// Идентификаторы авторов + /// Фильтр + public static FilterDefinition ByAuthors(IEnumerable authorIds) => Builders.Filter.AnyIn(b => b.AuthorIds, authorIds); + + /// + /// По идентификатору автора + /// + /// Идентификатор автора + /// Фильтр + public static FilterDefinition ByAuthor(string authorId) => Builders.Filter.AnyEq(b => b.AuthorIds, authorId); + + /// + /// По размещению в архиве + /// + /// Путь к акрхиву + /// Индекс в акрхиве + /// Фильтр + public static FilterDefinition ByArchiveLocation(string archivePath, int archiveIndex) => + Builders.Filter.And(Builders.Filter.Eq(b => b.ArchivePath, archivePath), Builders.Filter.Eq(b => b.ArchiveIndex, archiveIndex)); + } + + /// + /// Книги для чтения + /// + public static class BooksToRead + { + /// + /// По пользователю + /// + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition ByUser(string userId) => Builders.Filter.Eq(t => t.UserId, userId); + + /// + /// По точному совпадению + /// + /// Идентификатор книги + /// Идентификатор пользователя + /// Фильтр + public static FilterDefinition Exact(string bookId, string userId) => + Builders.Filter.And( + Builders.Filter.Eq(t => t.BookId, bookId), + Builders.Filter.Eq(t => t.UserId, userId)); + } + + /// + /// Авторы + /// + public static class Authors + { + /// + /// По идентификаторам авторов + /// + /// Идентификаторы авторов + /// Фильтр + public static FilterDefinition ByIds(IEnumerable authorIds) => Builders.Filter.In(t => t.Id, authorIds); + + /// + /// Пустой фильтр + /// + public static FilterDefinition Empty => Builders.Filter.Empty; + } + + /// + /// Жанры + /// + public static class Genres + { + /// + /// Пустой фильтр + /// + public static FilterDefinition Empty => Builders.Filter.Empty; + } + + /// + /// Авторизация + /// + public static class Auth + { + public static FilterDefinition ByLogin(string login) => Builders.Filter.Eq(a => a.Login, login); + } + } +} diff --git a/src/BukiVedi.Shared/Services/Library.cs b/src/BukiVedi.Shared/Services/Library.cs index c8f6930..41a118e 100644 --- a/src/BukiVedi.Shared/Services/Library.cs +++ b/src/BukiVedi.Shared/Services/Library.cs @@ -43,8 +43,8 @@ namespace BukiVedi.Shared.Services _library = new ZipLibraryReader(_libraryPath); _engine = new SleoEngine(AppSettings.Settings.Sleopok.Path, b => b.Id); - var authors_count = (int)Tables.Authors.Count(Builders.Filter.Empty).Result; - var genres_count = (int)Tables.Genres.Count(Builders.Filter.Empty).Result; + var authors_count = (int)Tables.Authors.Count(Filters.Authors.Empty).Result; + var genres_count = (int)Tables.Genres.Count(Filters.Genres.Empty).Result; Authors = new Dictionary(authors_count); Genres = new Dictionary(genres_count); @@ -85,18 +85,19 @@ namespace BukiVedi.Shared.Services public async Task> SearchByTagBooks(string accountId, string tagId) { - IEnumerable bookIds = (await Tables.UserTag.Get(Builders.Filter.And(Builders.Filter.Eq(t => t.UserId, accountId), Builders.Filter.Eq(t => t.Id, tagId))))?.Select(t => t.BookId)!; - if (bookIds != null && bookIds.Any()) + var tag = await Tables.UserTag.GetById(tagId); + var books = (await Tables.UserTag.Get(Filters.Tags.ByName(tag.Name, accountId)))?.Select(t => t.BookId)?.ToHashSet()?.ToHashSet()!; + if (books != null && books.Any()) { - var filter = Builders.Filter.In(b => b.Id, bookIds); - return await PrepareBooksByFilter(filter); + return await PrepareBooksByFilter(Filters.Books.ByIds(books)); } return Enumerable.Empty(); } public async Task> SearchFavoritesBooks(string accountId) { - IEnumerable bookIds = (await Tables.FavoriteBooks.Get(Builders.Filter.Eq(f => f.UserId, accountId)))?.Select(t => t.BookId)!; + + IEnumerable bookIds = (await Tables.FavoriteBooks.Get(Filters.FavoriteBooks.ByUser(accountId)))?.Select(t => t.BookId)?.ToHashSet()!; if (bookIds != null && bookIds.Any()) { var filter = Builders.Filter.In(b => b.Id, bookIds); @@ -107,33 +108,30 @@ namespace BukiVedi.Shared.Services public async Task> SearchToReadBooks(string accountId) { - IEnumerable bookIds = (await Tables.ReadQueue.Get(Builders.Filter.Eq(d => d.UserId, accountId)))?.Select(t => t.BookId)!; + IEnumerable bookIds = (await Tables.ReadQueue.Get(Filters.BooksToRead.ByUser(accountId)))?.Select(t => t.BookId)?.ToHashSet()!; if (bookIds != null && bookIds.Any()) { - var filter = Builders.Filter.In(b => b.Id, bookIds); - return await PrepareBooksByFilter(filter); + return await PrepareBooksByFilter(Filters.Books.ByIds(bookIds)); } return Enumerable.Empty(); } public async Task> SearchBlockedBooks(string accountId) { - IEnumerable bookIds = (await Tables.DisgustingBooks.Get(Builders.Filter.Eq(d => d.UserId, accountId)))?.Select(t => t.BookId)!; + IEnumerable bookIds = (await Tables.DisgustingBooks.Get(Filters.DisgustingBooks.ByUser(accountId)))?.Select(t => t.BookId)?.ToHashSet()!; if (bookIds != null && bookIds.Any()) { - var filter = Builders.Filter.In(b => b.Id, bookIds); - return await PrepareBooksByFilter(filter); + return await PrepareBooksByFilter(Filters.Books.ByIds(bookIds)); } return Enumerable.Empty(); } public async Task> SearchFavoriteAuthorsBooks(string accountId) { - var authorIds = (await Tables.FavoriteAuthors.Get(Builders.Filter.Eq(f => f.UserId, accountId)))?.Select(t => t.AuthorId)?.ToHashSet(); + var authorIds = (await Tables.FavoriteAuthors.Get(Filters.FavoriteAuthors.ByUser(accountId)))?.Select(t => t.AuthorId)?.ToHashSet()!; if (authorIds != null && authorIds.Any()) { - var filter = Builders.Filter.AnyIn(b => b.AuthorIds, authorIds); - return await PrepareBooksByFilter(filter); + return await PrepareBooksByFilter(Filters.Books.ByAuthors(authorIds)); } return Enumerable.Empty(); } @@ -142,8 +140,7 @@ namespace BukiVedi.Shared.Services { if (string.IsNullOrWhiteSpace(author_id) == false) { - var filter = Builders.Filter.AnyEq(b => b.AuthorIds, author_id); - return await PrepareBooksByFilter(filter); + return await PrepareBooksByFilter(Filters.Books.ByAuthor(author_id)); } return Enumerable.Empty(); } @@ -152,17 +149,16 @@ namespace BukiVedi.Shared.Services { IEnumerable bookIds; if (string.IsNullOrWhiteSpace(tag)) - { - bookIds = (await Tables.UserTag.Get(Builders.Filter.Eq(t => t.UserId, accountId)))?.Select(t => t.BookId)!; + { + bookIds = (await Tables.UserTag.Get(Filters.Tags.ByUser(accountId)))?.Select(t => t.BookId)?.ToHashSet()!; } else { - bookIds = (await Tables.UserTag.Get(Builders.Filter.And(Builders.Filter.Eq(t => t.UserId, accountId), Builders.Filter.Eq(t => t.Name, tag))))?.Select(t => t.BookId)!; + bookIds = (await Tables.UserTag.Get(Filters.Tags.ByName(tag, accountId)))?.Select(t => t.BookId)?.ToHashSet()!; } if (bookIds != null && bookIds.Any()) { - var filter = Builders.Filter.In(b => b.Id, bookIds); - return await PrepareBooksByFilter(filter); + return await PrepareBooksByFilter(Filters.Books.ByIds(bookIds)); } return Enumerable.Empty(); } @@ -244,8 +240,7 @@ namespace BukiVedi.Shared.Services if (docs?.Any() ?? false) { - var booksFilter = Builders.Filter.In(b => b.Id, docs.Select(d => d.Key)); - var books = (await Tables.Books.Get(booksFilter)).ToDictionary(b => b.Id, b => b); + var books = (await Tables.Books.Get(Filters.Books.ByIds(docs.Select(d => d.Key)))).ToDictionary(b => b.Id, b => b); var result = new BookEntity[books.Count]; Log.Debug($"Found {books.Count} books by query {query}"); @@ -395,8 +390,8 @@ namespace BukiVedi.Shared.Services foreach (var zip_book in _library.ReadBooks()) { var archive_path = Path.GetFileName(zip_book.ArchivePath); - var book_filter = Builders.Filter.And(Builders.Filter.Eq(b => b.ArchivePath, archive_path), Builders.Filter.Eq(b => b.ArchiveIndex, zip_book.ArchiveIndex)); - if (await Tables.Books.Exists(book_filter)) continue; + + if (await Tables.Books.Exists(Filters.Books.ByArchiveLocation(archive_path, zip_book.ArchiveIndex))) continue; var author_ids = new HashSet(); var authors_list = PrepareAuthorsLine(zip_book.Authors); @@ -442,7 +437,6 @@ namespace BukiVedi.Shared.Services Format = zip_book.Format.ToString() }; await Tables.Books.Write(book); - //Console.WriteLine($"[{((authors_list?.Length > 0) ? string.Join(';', authors_list) : string.Empty)}] \"{book.Title}\""); } } } diff --git a/src/BukiVedi.Shared/Services/Mappers/BookEntityMapper.cs b/src/BukiVedi.Shared/Services/Mappers/BookEntityMapper.cs index 6e30bc1..81c8c61 100644 --- a/src/BukiVedi.Shared/Services/Mappers/BookEntityMapper.cs +++ b/src/BukiVedi.Shared/Services/Mappers/BookEntityMapper.cs @@ -6,24 +6,27 @@ namespace BukiVedi.Shared.Services.Mappers { public class BookEntityMapper { - public static async Task> Map(IEnumerable books) + public static async Task> Map(IEnumerable books, OperationContext context) { var booksIds = books.Select(x => x.Id).ToList(); - var tags_list = (await Tables.UserTag.Get(Builders.Filter.In(t => t.BookId, booksIds))); + var tags_list = (await Tables.UserTag.Get(Filters.Tags.ByBooks(booksIds, context.OperationInitiator.Id))); 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 - { + tags.Add(t.BookId, + new List + { new TagInfo { Id = t.Id, Name = t.Name } }); } } + var favorites = (await Tables.FavoriteBooks.Get(Filters.FavoriteBooks.ByBooks(booksIds, context.OperationInitiator.Id)))?.Select(f => f.BookId)?.ToHashSet(); + var blocked = (await Tables.DisgustingBooks.Get(Filters.DisgustingBooks.ByBooks(booksIds, context.OperationInitiator.Id)))?.Select(f => f.BookId)?.ToHashSet(); + return books.Select(book => new BookInfo { @@ -34,7 +37,11 @@ namespace BukiVedi.Shared.Services.Mappers 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! + Tags = tags.ContainsKey(book.Id) ? tags[book.Id] : null!, + IsFavorite = favorites?.Contains(book.Id) ?? false, + IsBlocked = blocked?.Contains(book.Id) ?? false, + Series = string.Empty, + Subseries = string.Empty, }); } } 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 4421d9062a03600da88e29f86f12061184c1a98e..6d7d469fad681d4fbbbace7b9eca349b70547c84 100644 GIT binary patch delta 15529 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 R*ZQ8D8y53v@b?yM{|{;yFnj<2 delta 15174 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 IH({gy12l2k;s5{u diff --git a/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharp.pdb b/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharp.pdb index 9ede08354d7e1fa377ae609c9cac01f2f815be20..e4b2fdc633ff2b7fb469b1a4f0d0804c1eb124ee 100644 GIT binary patch delta 65 zcmV-H0KWf#oCScK1+WM_2=vr|?_0Fm0h0j&6Om9IgFrmDKs*7&0~pVFTV??O008@K XfLj0IYet#l0$|{H2Ew--Kmp_pQ=l37 delta 65 zcmV-H0KWf#oCScK1+WM_2p-UnYLBGa0h0j&6Om9IgFrmDKs*7&0~kB_KxP2|007)b XHkAF>kWRgVr|UEa-MF_LKmp_p4~7{H diff --git a/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuilt.dll.config b/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuilt.dll.config deleted file mode 100644 index 3e0e37c..0000000 --- a/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuilt.dll.config +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb b/src/BukiVedi.Shared/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb deleted file mode 100644 index b40b41d5143d56f55f8e4bdb2bbdc9cdbd318526..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19968 zcmeHNeQZy2@7;Tymyl4J z5I*0Lj?cUIeBN`%O`#FO!G%2`=hnV;`m-caLQ;Bvc1kCSZsS|KP2hU5jOVtj#M*>Nyu z!jh-I*FNT{AN?xNse=FQ*@`3arMZ)L{O9AEyov)0mQ>F^@XV?=5~ts;8JqV)`<7cd zM%#Da8MsmNU%7MTiznahe0A;4#y5Wc-oqyjt^D`%-)>1AnQ(fvaq#5G%Y8>+b8ck@ zZq)qmo7Fxk{HMeR=O_N;q2EWM&D)L~FPoj8yQJ}d?WYUdYahRrW3+wuoq-!Q|G%!E zdEwo>!*BX(&b?Rn-`3AMcdwYb>G-CnOZO*s3{NJLeMew(Zifsc@t%*MschN5cY6jd zU$}gM?|0wfpZ(f0e^orx)@sC3Nq=o5Ro52uFKOElS!*;!{K-Vfzt)H~#S=+?z0ukl zs5N4Zo4qb~PxwHEq$TWHqz|5*u~5zcLy~CJm*Piaco~G|Lsj#?V~mZ%TV@ zj-*=PH3+Ypwb#wcYm{D_wbzZxYnWb5R+3(Iw?Cx3nk>_+X3^_l4>b^LZbPirfe!XK zmCKtsN@GhT6p!7^K}wG|VT|$MdVdw_y4mk~qj3{QL!s&=MTO;C1V?=>&5#?C6u>;uY>#*84 zqwgbNBbNVLz$$eIpeT2Qc3$*=>>h2qd8cP!%0JzXOicHizkGiE5B9#};LLv!;PWFs zAEus9DYCjAz%^}OJof$%TX4;)W5tnYC^-^VpO*b_?xaJMWmQs^JgY1#RLfo(zI#7q zS-F%Y&nnC6)w0R@+&z?KjFctMDvRbl3!J~tfRljCJApYRaL#PFyEDM~cZs>?4dRp< zDnA9$fKo7D|ClA=3Z>!+A@anK9O~@_YFY9}h?zNS8nz}=MynXpb?sXED0R|2*D50% zH9{%eMTMAQ?Qe^vBCUq2!AL{`(a4hlDS}TBvqX`|%>2vZ50CxsvA37LHY+>h(98SR z!KGL(s=yP1dl+M4JS>#=xgDs_GUam=5=yW>ki)4i>m~GQpSngHQVAo_D%blt#QGYFiF#UgnyL?& zOs7ttKk0+@Lz`B9QX5yr&)S;_y9a?&AbSu<9oj}$@4Dz`-4Gw{$J&`nAGwZY!(!Pn zM=Yb`M8>zitJjj=FE*+?jfAX*5y(>~8fKoCXBy>bx)cL`pJdM9eJwFHM$P{Q$YiujE#Ke zG>CRSXb2QFAeum#w=k#&lyaC;(=O&iG^4*#_1A*7ppBe}^`Kt^MGn=NyvPf4lZ)C! zwg7p^ip)E+%?)TgDz*?f#q4L_Y*U9G$>;pkq;o^9P9XEku@bEL-Dvt2ViPEHk^mix z9gR6Aay>Bba;-XqUc*c+&(Z|k$DYfEb)K)8UzK*Tf=mE&I}cb6{5o(O@L3@Dz!Sia zfV}TJfu+FJK>B$GxEFX3cmjA1*k9nczLT>HFTMx^bs0ibfYRJ~{E&WAwRug%8aL_B z6rc6P{#R6cx}s|oZB_IYCHJwSf74X)zptoI(Z>}3IYo!6en%!ct^pAHVt_GQVW9S< z|GuN>njo(|JHRe9AKPOkc>GeoQPZ5@J7dYivyQ|~oU14pR>x^r#4!9b)4j2V) z0d5EG0`3O>0=OS|7@QQI?wm&w*byNB_xTli=sd6?sKlywYviJ5KxqHAmQO*1f#ezvi1n z^L3%iyzKURP*k|9eQr-hg_PEId-s#g^K73m*I5~F-H3-SiKVe{+&Nd2&aWvcaxcL0 zGU3{`#|rL`1Sb%~=mv|b@Ju2ai8ZHRp3W^Q@_LKC!KQ*hX^F3(*c0#;_}n3Pfv+hX z@VGr;Prz65kXTT&q^hE*3frY9c-3_g={8}UqEw(}ClA^s`AG{~vK4 zdjfelle#lAd}mp~L!oLGx*|6R6MIx}TIho~89U+RDqoKmE}Z zfRvtley1>8)urwu9b(QDPxVw7BHB$oeAj^1`@mc9-gmHF%6padCF~%19Kb8lL5k?w zUl!>az^bEPPhXiRVOfk~zUF7#0cR<1;3nJHG^+ o1myXX1u_-L=aDw_KLa!RuWD=B8L%^8XTZ*YodG)ocW4Iw52v490002b{X@xV_ytO`tc~8yiOWT^ H95Un!6EPMC 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 2aed3aacb4c8f33a46591280d71aeea8fbc41c30..541b8792960c2bf60905f6543818b94c1a516ab9 100644 GIT binary patch delta 9143 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 delta 8961 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

`*JE&gXSOuVm36 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 R*ZQ8D8y53v@b?yM{|{;yFnj<2 delta 15174 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 IH({gy12l2k;s5{u 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 50fa052..be1b53c 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+431f2503a837ccf39eac97076a865db39f86a8dd")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f836c4963b5e99aa3f8cf1767a7e2475c8365585")] [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 73796d8..f52ae82 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 @@ -06715856c937a6aa0ade3b1fa065928029591cc434dd76545f239523dd28567b +98f72f42fc48d45d265a5ffb52e9388479522c8b965310d02bf57c3576b0305d 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 05631fba9c28f27c107fa920b9f961391f0f8b58..a8a579a1d1822583e4daec6812659427ff9cf788 100644 GIT binary patch delta 1376 zcmbPdeaeHGjZtVKa~fOUjyG|2brbVHN;0xCFfcGOGV%pi7MG;v>IIeNm1O3oGIC7b z$R<4b02_+~V?9s>2rxoO4j{F`KE7V?Dwh>p7-)hh)C5m|J?H$~f}+&o;>`R!gh8s< z4BB256DDc$pc8J;%!K@8(pDbSYO@{g+7_Tab zS5N|(kS`b*b0@E3^4na>rh?ZqhUgZ9!U7{#00V*zl2Q@TR8Oob}Viq7sY+6IaVj4q&yKtjjK>2Gb646WEoQiI@qNh)E7txK4BQ W0Kpz3;LzbJGXiFQQv-7&a|Qq#G73Nd delta 107 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 delta 8961 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

`*JE&gXSOuVm36 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

L=ag5qFG5R6=)p5c zzjHZNS}lfRk5CAp(C-qruw@Vq_I`ctJCjLN$vq7r`*fN4M(brR(&4f9!%zSou`^ zh%EjY0|J+_zI{j#k6XkCBt9r~HPRVt?3DlYWR_;0ptH(@bJ7|AX` zx~F^|#9uG-zyDwAD&>-4sLp_vsk#i;FJP{JMf#~7%4bkayvLZV6C^kWS{xq;<#Cqs z)xyd_BvdZPBNG(CB=J4E9l~DX}{P)$luoq+gXC zFZf#EX!tCbGc&RA`fvm;K^Mr2iRA*{m*NS+D@IH`8sk$Rt4w`fgZnV~ivt1ErTf?6 z13`)T^E7T5WmX z)&Rc55f7V|_@QfMgR!!;7V#&t@)O~5IF0+;pmFUUdC#_XY$|tPAAu72fP>*{9VIq6 z7)FP~)zDL}{{mbBe3Tx?!2KC4MkeK!zzF}CD{(6t=&aG<67S)fnVGK6AK)_%*Y3oy zTk-N(XTdBUbXh~}>bZ1n<7ujG%$EwqiDm$mfI~9?zQzI$O*`~(AmGp_JDY!=5WqVq zL|MeO=-)s=deP$0(2&`v=$eHRJ`0tNvx+n1_aBFd&q~jxS-RUbnNSv8NURf^V4ti{#gK4r6^}_gz73u^h6iuV;kf=%2_m zFOjG1>g6@SRh_R}$Wpm_S43c>QiOl+;L76fb2~4SzuXnxW{8r-qoXU%E34gax!j}L z%3|fB>RxPxytBHOTb$W0zf;{y6W>D=<=?9ZbsQ0cI!^$O5njpwc=s&g%M>C?@~GW? zy;2m<{3D2NqC;N0djLz7>vwlz~CsTEg~ zw-DqfJ|(V!1-YG-tCImMA1>$y;H@lwCtV~j*qb#OcZThAdty5tA#tz3-&2c6e7rUI zt{(5HnYn5A9fqg#fTN%Qn`{-|a|JPoW7&YCz=|B=A5J`)^2K4cp{Z>7eL3^6VMYj%Lzi0fV6@o2Y$moJSa@yX`9 z+HmBh@!DmsyINdwhl?9r70{hd{1{aUx)4lQEnb?d;vv66A>N8lUZJ}hdub~IeJah*bY zQ>hCs+w$D~ZNpdGLoNP2h+~Cvl=#OluA_#Vu^fwdn8ZEeW|!vxVgd5)rw1nYca0if za=7C&kDP{47btOdI`4#Xoyr$_ego}!QdGZ|J-CN?}8M7dFcl@ zB)%Ppe>l_lcMQs}DAbrX+W7+a1rUcV9Y{zL#IFTuzePG|aSWq8aSO^}QgFElli#iF z;*L)ybQbwRZAZrBb_dK!75rW{6mV3WfP7ccd>fq~fHDClI9Il@AZ{1LuPox%7O5D{ zv3(ny4{|x5%$=V((CECf$$90|@N$kjuYANg|37YzaXuf;F?N7V(9B%GCxIb}SY)CQez==6yV?MT^rPv!ajeZEtzb zLCc^GO$)lAX+bwUvOd_cwHC*48Yymd^#EI@P`-FDm2H;W9SUhPO5EnMEUM^9N zV3B<1P}|u4%C&S%!|Czn#|x()r%5;ZKTea3=Y!OZPrDojhxkI4hsbX4K;@AR7XeEr z#HLF$O56_aIz4tYh`o%+#~bXBio4(ct+j1Ut!-=c{3eN~#2qfz^Kr|vTAqA3%pReH zuNlNVaGQc^X4n$;NDFKEVVcWSRBVJKlmZ#ADKKxcaRKR~JXuL4w2)ba`&S@)eKH`zoa1p@mKQ<~> zK-r}j-y`9lFUU^7QO!eH2H>bxA|U_NF9{j>%Epy_H)-tr>V(KIq*}!N=yEE*E!4E` z7LSBHBIe|Z+!4BnkjJm#V+CET@;kNR!WGJUoWXxsAkgCOZ#KR@<7vYMB3{t-bL~sJ zpc}!n`}4A19&<6rd;`e~pY`g%4~wJLiq6@1UuzRFpy`04HWCM{t^E_^-$71e3ab3^ z;ar90@0xdu6$8MdvoedL1ovUPkb{mR7Ia0&lQ5AQJch%Clivqmz6|_w>CGKY02Tm_ zgRr=+U#`1`5)>4x<6(0->I+9juDb^KXgmOlk3?J<#mqh`alhU+E{r8 JD!&2S{{c`gMQs28 delta 14920 zcmb7r30xKB`v3C|$k|u~0Z}=4IH0%y?hBxBKvrcD+;TsNsHi9jxa*l2KvC4xamy8# zEVI zg|)rMt?f+|vXp35AEI;yd05Guf>~3G3BPN7iCn=$Mhv4*ARpm!%80Z?@KybYY^Bf> zX3m}jJ?PY~<0W<1Y_A8tZuPmksYA=Q#Z~Lp`sP$1E!Kr-y+E`D^$&sW54|P$=@vvV z(>5R&SOnAoGVo7;r=bY70WFQupQxn0uGRJj2qc8LV zc^ep+4FZh;p9X#i{3Q7I;19q%8yWR63X}&v8+sEF@MtAY50u9OO70V9F& zz+_+sFb7xwh`@4S4X_b72NVzLN_z%{(+%J@@D=bq@H6lLXpx^7PVR{j)G9HOwkCEX z@1$;YCCTZElXj!3qOP>SxfFFQgfQNwF;I`y3m=|mZxgF$oTLh>F{7Py$YNH&H)b{X=b_v;R!A80O{vPlV@F{Qy_!{^T z_!XcGBk2H7zz+z_;B}fXVkV5333ZuJmkD(_OsLF6AsHs>0t`il9^hZY_9M_Aa-3S& z9ZtH#NnVi$C1-eG_j+KCJy3}U%6p(ZPxGXV3{M&kj0GkE1wawtJJ=Izhv)G^c`uar zqF#=4FPf(oYzbpa7+a#!mZ+3x^oGqFHgAlIcYQt|*nD8~K|Y`Qe68SID>&DRmS(g< z2x&zX;H%Vnc|H8+M@ohtZ3T7%&jE*loL50k0q1~Az!l(nhCdqdM z+`OXJNNbI>)<|oOwASc->-ydc^hE{_Ij%1BZ6*TIY-OlR3s)Vr$%Zx15lXAGc@_K@ zN?&Q@);Ufqx9`))A2iB5J&a7l!pH|`3s`|JKu;hB7zCsP!+~+YWMC#x0xSl~9U!ZK z4Z!wc&IfPnpnUzpRlrPUM3c*o_`e#o4vp-d-;`$nm-(*d@pz^t;j~8nO(PGTqGnd}Z_~&( zG_v>9raUQ)GPiZ2qf)z1+ zfNlnOx)1c&nt1PCZmfSzY3mLxyrXd^#qYX!Bp~{oqLqVzhrMGPts$@)S!~S=^Xn}f z36GddS(DCh$>wTwey=gFnLb~m^ZW~%=?hu%BlR!R=sf>oM>E5cX8O`*dh`5ZvvjGM zE;rN5G&+yI!^$-V?$H)a5BNYmtyl@qXlN*1!ipQ{RyNU zVg8LepVF6_=`T0aYntgto9VAK(_d}U9qO8St;wM3$C~NKHM%<-I-$|Mp#M#y>!F`) zrk~R2yhEoObp#mP-P7xh27VVoRIAaA(9bl}&uVmD;W>@&0sSqFUWpODsL|I#f2Tp` z0j?Dc?=={p--bt5GQ1ZebYNN=anzk(j5(LIqrSfkH@9;)gNNcc?y3)5t{1X~x4eieFz zMn8r8-8K5Zk={$Azl`+08vQBgQ5wA#`3G>_Q6B-hA+A}51dV!gG=tDI6F-%#e&=hg`4R?-^K#qnG%qtiMLxav&^>B^O(?@FbQK)dVM*j`z<23qs zq)*i7&p@A~(VswvrV7c9#s;@wkxdtx!tkdkP^i)0hhEf7FV^V1{9KJ*hz1sDbnd|7 zX1YUgG&Oh{U6wT&E}_6OjmLaMDmD7=NUzf9z0lwqjXoFpI*ncmo&WgS!qdD{uIU_} z#~fGtqb?YCMY)2vQ04zd@dkM?GN}5S(I#*n{dj<3R62l1K7P94t?H`=wgUGB{8YVd z0>7#T0Bry_)iy0L5S(9;gH(NUk_9}NZ$hhTs7eV1?*McJ!c-fjb_VYPbOpjyo01j@ z-VNvu^iXa62loQ+4d8?a4!Wn~i`r#rKjj%cjq4Wua&rC$jk%*Gx5E;iK8s;DZjz-iQj!2h<=r#-i zZ771+2n4Qdy3a%eBnN_!gutU9)@(q0*@&333UTBq2ZF~61dP=P5^E3`Rw5Q`$Nt}j zJ--9{d=vKeX6)xJ*uzg_-|oUz-AW0H+6kZ*g4ZaR7;stlHVuUg3d(Y0=R3XHCU915zZ2nU#f!lFs1qn@C8>Jx2&91W_c z#AqAj!JvA|h_*w%6)mc?8nhs$7PKm+PNk&RQL6!V&^-gH4LUk8u-agtYXfT`-vrgu z*PsTvGq4Vp??Lrsignb%^xHr(qHru3_0$E_KtZt17mHlWP|Ey8mNKB z#oA#h0@c%UPy;QB6=8V_R8QMM4YV<~8kRkvdO8nkpqFB6Vfg@5PxoT$98kWCt%LIK zSTb>$OnUk))&g0Gvp~)OHBe-n4VFCvY>;Qf*&)xfiJ<#H_4F;Mfj+fW!$R@Zu#5pU z(9n3ByN+TL>O6GxDyV@@C6K3%(gu;If$|1fJRLexzzno)kPQj%fEwt-L3S@4tw zA0$?TzLQi78kt-N8VjnY5y{k2M|q%nnvraQT#{@9y#;EZpOfv7vr?)-_odWK!yS)edE2stCFhR8KF08t9qSYFJ(d)zfRKwUAGO^1`)9J(F4o z%gupxuzWp`e021Ass%JC%?3I$%?^5VpxuY3ijW6Ki;y#-t3fBG)vBqrkR4wStb;N+ ztxnBa=Y!!*qgLEPt<6*aw4dn zazPC=YN!pC>7dvhpcs##c39Se>gnQ85%Tv#MF*6Y*&>qNvZ)vM*8(~q+tLd&4Qikv z*)~{mQf=GI9hL%6J(XsQke7h!sUn+t>*xlkkcF8~jtE5u$0w!e|?4Xf>MBA4M7Tn!h18fg@$iHe4c zuv`T-(kW0Ay)(QHmj8^XgJmbEiC!FGi`LPVMzuxQNg%cShC00!V(2)qSW!00Xn(@YNTpV6CEEf z!ZLD#2umoai3U!ngQXVKNY8@unr#EI4kp?L8Yu?UL=z@fbIW&NID`b{nW|%TwA)@C zYoytrCaSbs;&gN%*Ai!@-AYNS1&CVFX79V|bA;y`nf zEkQ@&dA0;2ne(b4uLL#HbWjs5$fH3h>zG7?jC2x;i7w^YVRD^phvj}=E#&mcwUB#* znrP5uOCn|w)JO|KO|)XN2n)*>VR;|2iRvcT!Gh*tiO9DlaoLt+r1AOHkdJ^GX>&d$ zbEhfUNT26BC>f`u`F5C+rr2TX0BWM%Q)*R9Ei8*5n`q?}ONx%(2gTx=BC4_oS(sX< z%5{+YPqn4$=owHWm4TXQ`&4_Hjb{6E}-aT zfn^8^fEuYB)I>^w2n(Ao!tya>6MbJ$2g|YPb+F6=HPQ0vwsakN&#>X#_&dlZ($A=a zC1_?HEN3B`=!+S)4D61XHk>8z0yWXunbjGH|62;HVHyW&B1a)*V*AaaOe3`c=1!m@vMEi6kxO|*KpB?~iMWXUp8D^Tu`2+PqT5tePB+)@XNV@@3` z^PjAP<^Gelp}HZoxY#xny$40_iz!=2y-Fw>{eWyDpAtJPSQD@ml+;2#4{D@CC6*jq zpi3<|MrsLaqRyo?oBFR2f-n5@NY(wo(Jp!8S0sHpYRG`gpAYD>?BT~DH|A|<8~fBw zyO&ZM6A&W4U@5B0{`a9LTUkDxy*c9M%5e({{;2-gx8Pp~u9vs8m!A4yiz3Es4(_rs zWAg*HJg8l(XMXgZxWg+baL_;Ax?5pbb$4;+=QeEE@2UI|6JXtCu^b)o#{HakOK+^| zm9TZ)!_i|FbzJsysq*FQi~2F8mwQCj%o*^so29bPZ)bb|e5kdw=E!z;)8;erm!H{h z`f$zmPcMJ7aIi(`pmZJ7zpY1leqmv5dj99pdR7#144BH1FDZ)Vf@|D=UK z6MQoAV*Z*U%JW_y_AkHh+LSD4aisc$GCHxl%Ze52lvRmw;GZh*CiZ3Rl@>`+Y@`yG zl)%<1a#FOg@&n~`l8t#O50hfqP$f2byzZ$grRwRbYGqIIC8xY9zosO`pE=Zo)$1(B zHm;7En{r$Exaz*quswJ}_;|w;|2Q7AcShfR6W2Y=d{rt9!Slw8O2&{kY%Q04CqK;n zGR<2#df?Spl8$U#sf(X^K=(uU>pMcLwvE5;)#2f18C`eZ*7==Sls4t&fS8}&4PBG< z^9fI{+W{TF+z}g*x-LHD_c`X7AHD4G_22SO*YBq7_Op$2kv|xd{NlgQbPekw`?cwM z^u(7bX&X8g%=5j!C~bZ36C-1~X8TQcVdIJiMTW*#^y&WZO}0+^R|o&ove)Nkd0%nm z8-H8dGtoBvYulZOzi&KxvBz5XSJGzXY&#eC;j6PvUS22to)?n}%_BZPeE5BrFM9g6 zN^jHeiX-gkrsvZ?YJIcC`&aK?Pak#oxqDsjuDWn?@7{Mme7(}|N$-fkz0bv*e=lb5 z@JM6(=e^#KsOyt|`kJ|y*TDb&>l^=l?M?*#=i4n~H_jOLVsZShrtkLcn)}mdqu1Z= zZtlM6*^q?3Z9~h719$HFA>91M8{c1en0xlr`=9iB%`0y6*|dM?zMS1J^y3c})%%wk!;e8qoIEH2-BwXB~MiHOk)elQw;BE+H1CbRJy6dej^qTqLB${9>CzbvV@N z|D96ve2MMYGVATD=hE7#YjD`K+&M)<=j2Z+EtpvnIe8||ftgxB!~=Hh)~R1bOtl^8 zH_pG;g%{1rv6Z~e!zW0TmiCG6O8c1&T%_OfF~*|AH?$>O7y$0WH4E&Z7= zfB2@`2h|i3pICR(m=Dc$_uah#br!9#l(LwX)@zoixi|PXBP1{vozR*xBVqd z+`=SlLvmVu@-Jp7#e|psPcm^MliD{VC)X!GG)tK#dOZVpI?gG{xOayv3xOtjvRz)v&U+S$QW`-iuWPt94691o^US+4tT! zn_yB9hHk8YPYsx`K~%S=m6gYz$jg z$tq`><-h65E*i=%GW?a7o69TN^0nsW8w{-($?;5H!hCW3A?^_*ldF8ft$ewDxnf+I z%8x|ygAHJYtkkY}W+Q*8eI(~bseR52oRV1G4Y(<^;w&Rn(7TbiL%E9u}d{a7e@#|f07N0t(Fo~Y9222W<4L5N6nBFk6cOVoaAvbmoH54RW%7B z&YvGw?)cYATX|xq$0l*_QciL2z~AQNcFk^i221{v-03zaC8fT@asUWy2XZE=^E!%O?grt}3;s*UFExHUWRO`;>LdCYc{!79Q79`h=R6 z%afTBu_8z*sf>1X`m>6dI&hhKl*tT+`-0HYjfrJu>8!zpk>t;$3Wl$BNIE0PW>;*T z_B`qgR(lYHt;EDj=3uk|5sMu_t?1qK{g*-fUlg|lZx=9JDVDJaa3Oq*4bKWA3%%(lZ8 z6qn=|M&{&CnVFwgQh+QO`6aoNb4zlgAK%ql%JSxMv{`@A@2t+wWs-8+4{o$$OPTn( zo0P@y=aBZA<(qsYL%~gm!%ua&byb-@htzmWyNZria&gpRr@dd z(NA3=Iwp58%iVNxkwGqEporYkdghJT%2%HpDafz!Wf96(bhxM4w!_AD*aRk?HA}P9 zmFmtUn>r?Of>h`#ozi0{a+tVM`DSHD6aN@MhZiKoyp^D;Y|}WWj^n&G%EGD;)A$CR zwNsv}lB4`6wAdb)gW$P$PIe2T0GAUI`PX0&fADzg>&vD zeuD=#ZvSxv=Pksa?VP)czo`Y`Os*THDMbVA5TIZ{ z#LLQ^HF4o@VO>!OAic%iApQ!@7|5&vBn-ALpt#(o0@szSr{Y5{@}*|s1um)u_&Yjx zbx2So$y$P^Y^CO@K_Ty`sr-c6VpNysD-PtK|X7&7so(q`>x;k{IRJrSV%ur|qS zvNH{5=O$dw#?~aQ^J1N^%tsZQczai#$BMWJNLLCm{Hp-zN&+rQxqx&1a z--NO=E7J(K(&}LO5u49%$uESx&Whv=G`z+Zkg{32j}8;X~@81Ono z5MQxMnIy5PuwuAEup;g#Piz`y7$xZE;*A@%Rt|4^)^Vd4wJ3me;{wL~OFr&5=JRU# z%iF)gow=N}6N+a7f5x?W)w&&+qF*3|f!_cR;{Ic3U&7G#waV`cW$|P!`$4F1kg)ts z>NgE};1_OEYxo`N3lp4^-xncRFNd3bRSq#9#(qwHxw`b-}N#)r$@!P^sBl2ts5 zqw)fnP&+1U6rZrGf?hoK7iO&4gxy6gxE7Oii(hy{_}Jc3Cyc-DZuqToPMAYGV?SA? zRTMuRS)5LYWtwHPk2-6Y&0{+I_*HYK1}$CY?%YwG;IG&leo_3bchj;7u3t72$Tp+V ziAmfC<*zN>W&_c_F|uKSZb4fiu6kVI>Zi0s(BqndErV%9 z7g`W=#g-AzU}9c}eXD9$GM;XOgG0V|njEn5KE4240;GFJ^ctHCQa3EmbiT^(S&%~f zi-P9Amyz-BF#4&BBibsiAS}r^LH4oA2g$}`mUDs%`Pi)GV>97@-`7pPsq@e{INvl5 z&NrIDIb@YmFbZgCY4WsL%G+B@+@<^fg&x4C^1d>7TSrz@^W-)+#^xyVw_jkzO8kx< z{_Yq8{sj{vtr`jV8`kzEO687l4=<;Mzl&{Os+`#oZt~F~lJWPpeda2^>_}jKO3cpo zY@RZ9XAk!PwW4cCw9Hqw?2Pbe=Pb^B@326*va_dukeY>m(cnztZ+Al$Ds6XlZyl^A z@o?_EI;lPGwMfa`Wn-bro?Q`av2uA=giDxZ$@=ODmo8nFDm|+EwTl>t5@P^4!b5eR zJ7*P7Qm8{IukPW2w*&a`PaHanqH?yn59_7;QXRx3rSH;`6wf^=ri2bCnZO%QQ0#l!cjJTKHK@N%Tt-GA z&|4J6<*;Dljp_x|h`H}B==)HvKnUxF%IQ7B`j|Z1=C$Xqqgeo7jB409g;JjY@(>#+ z@$VlV<@};!iATd9!Oky(C&8W9{E66+QVg{fE0q`b20KF3TNPtxai{8Bmy#iTY1S`B zUpN#l=&k%4z1}p&)FS^@C z@sU&KR#?<2P`#beXG2$)IKK?1b1x=-4(fu&<%!+V9`SEJoLs%d*p1YupktNui;wgU zMl+2%iK}75DB%7v7QV#^dNlAP5B#`+%554?wXIa-#k7( z#C_r#B%)ehVu7f(i=cGe-y<^;Uuz&Ix~ldLUr7qHnX4;8>(Qn~Q-6~(iJytkNavzK z|Gh|<(Fs1GFsg9Ja#waAusWt%(am_?>#4P%H&v-W8YliuOvCRGgo8+G;0<>E*~%>- z5x58-{94YI9_W?X&swslA3;0s0rK=Q@Mtb~c)B{e+^Ky4e@wape#PmK(9-Hl zg18wDd01s{t2_@5twp-ip){rQv!SMX7qE_6uYWF(Ih!hMY^pF5bx!9^6+Y6`?`VQI z_16Dr%4n56t@3;{wXU(L@!F>NCRYwMv=vp<*j7_q@R<4E0~u_t zlKOmyu6A*QGXb|};%3bJV}c!Ci}J0jm=6XxdaJwVuWi=_joWoW!eq zd87Lu-)O(b#tS9BnG+SByV$je>Rt^SVpN-t;WW!Ze4IV?`Q4t`^ zJW_SygDH%~*q*n|SFT+74x0R$yI3i~ zmmS>2N(-C`7;_EjKOx0O4NW$Fvy*F;W?7}vxK=-nL^y>kWRgVr|UEa-MF_LKmp_p4~7{H diff --git a/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuilt.dll.config b/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuilt.dll.config deleted file mode 100644 index 3e0e37c..0000000 --- a/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuilt.dll.config +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb b/src/TitleReader/bin/Debug/net8.0/LemmaSharpPrebuilt.pdb deleted file mode 100644 index b40b41d5143d56f55f8e4bdb2bbdc9cdbd318526..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19968 zcmeHNeQZy2@7;Tymyl4J z5I*0Lj?cUIeBN`%O`#FO!G%2`=hnV;`m-caLQ;Bvc1kCSZsS|KP2hU5jOVtj#M*>Nyu z!jh-I*FNT{AN?xNse=FQ*@`3arMZ)L{O9AEyov)0mQ>F^@XV?=5~ts;8JqV)`<7cd zM%#Da8MsmNU%7MTiznahe0A;4#y5Wc-oqyjt^D`%-)>1AnQ(fvaq#5G%Y8>+b8ck@ zZq)qmo7Fxk{HMeR=O_N;q2EWM&D)L~FPoj8yQJ}d?WYUdYahRrW3+wuoq-!Q|G%!E zdEwo>!*BX(&b?Rn-`3AMcdwYb>G-CnOZO*s3{NJLeMew(Zifsc@t%*MschN5cY6jd zU$}gM?|0wfpZ(f0e^orx)@sC3Nq=o5Ro52uFKOElS!*;!{K-Vfzt)H~#S=+?z0ukl zs5N4Zo4qb~PxwHEq$TWHqz|5*u~5zcLy~CJm*Piaco~G|Lsj#?V~mZ%TV@ zj-*=PH3+Ypwb#wcYm{D_wbzZxYnWb5R+3(Iw?Cx3nk>_+X3^_l4>b^LZbPirfe!XK zmCKtsN@GhT6p!7^K}wG|VT|$MdVdw_y4mk~qj3{QL!s&=MTO;C1V?=>&5#?C6u>;uY>#*84 zqwgbNBbNVLz$$eIpeT2Qc3$*=>>h2qd8cP!%0JzXOicHizkGiE5B9#};LLv!;PWFs zAEus9DYCjAz%^}OJof$%TX4;)W5tnYC^-^VpO*b_?xaJMWmQs^JgY1#RLfo(zI#7q zS-F%Y&nnC6)w0R@+&z?KjFctMDvRbl3!J~tfRljCJApYRaL#PFyEDM~cZs>?4dRp< zDnA9$fKo7D|ClA=3Z>!+A@anK9O~@_YFY9}h?zNS8nz}=MynXpb?sXED0R|2*D50% zH9{%eMTMAQ?Qe^vBCUq2!AL{`(a4hlDS}TBvqX`|%>2vZ50CxsvA37LHY+>h(98SR z!KGL(s=yP1dl+M4JS>#=xgDs_GUam=5=yW>ki)4i>m~GQpSngHQVAo_D%blt#QGYFiF#UgnyL?& zOs7ttKk0+@Lz`B9QX5yr&)S;_y9a?&AbSu<9oj}$@4Dz`-4Gw{$J&`nAGwZY!(!Pn zM=Yb`M8>zitJjj=FE*+?jfAX*5y(>~8fKoCXBy>bx)cL`pJdM9eJwFHM$P{Q$YiujE#Ke zG>CRSXb2QFAeum#w=k#&lyaC;(=O&iG^4*#_1A*7ppBe}^`Kt^MGn=NyvPf4lZ)C! zwg7p^ip)E+%?)TgDz*?f#q4L_Y*U9G$>;pkq;o^9P9XEku@bEL-Dvt2ViPEHk^mix z9gR6Aay>Bba;-XqUc*c+&(Z|k$DYfEb)K)8UzK*Tf=mE&I}cb6{5o(O@L3@Dz!Sia zfV}TJfu+FJK>B$GxEFX3cmjA1*k9nczLT>HFTMx^bs0ibfYRJ~{E&WAwRug%8aL_B z6rc6P{#R6cx}s|oZB_IYCHJwSf74X)zptoI(Z>}3IYo!6en%!ct^pAHVt_GQVW9S< z|GuN>njo(|JHRe9AKPOkc>GeoQPZ5@J7dYivyQ|~oU14pR>x^r#4!9b)4j2V) z0d5EG0`3O>0=OS|7@QQI?wm&w*byNB_xTli=sd6?sKlywYviJ5KxqHAmQO*1f#ezvi1n z^L3%iyzKURP*k|9eQr-hg_PEId-s#g^K73m*I5~F-H3-SiKVe{+&Nd2&aWvcaxcL0 zGU3{`#|rL`1Sb%~=mv|b@Ju2ai8ZHRp3W^Q@_LKC!KQ*hX^F3(*c0#;_}n3Pfv+hX z@VGr;Prz65kXTT&q^hE*3frY9c-3_g={8}UqEw(}ClA^s`AG{~vK4 zdjfelle#lAd}mp~L!oLGx*|6R6MIx}TIho~89U+RDqoKmE}Z zfRvtley1>8)urwu9b(QDPxVw7BHB$oeAj^1`@mc9-gmHF%6padCF~%19Kb8lL5k?w zUl!>az^bEPPhXiRVOfk~zUF7#0cR<1;3nJHG^+ o1myXX1u_-L=aDw_KLa!RuWD=B8L%^8XTZ*YodG)ocW4Iw52v490002b{X@xV_ytO`tc~8yiOWT^ H95Un!6EPMC diff --git a/src/TitleReader/bin/Debug/net8.0/TitleReader.pdb b/src/TitleReader/bin/Debug/net8.0/TitleReader.pdb index db2ebb2861a710e5e78b4b8f2eb79b5f141122ea..f582264a82d6cb9087a25ad124721dd436a0c417 100644 GIT binary patch delta 1035 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 UE*6>xHZ**4qP+a(=fYP-0oPAO#sB~S diff --git a/src/TitleReader/obj/Debug/net8.0/TitleReader.csproj.FileListAbsolute.txt b/src/TitleReader/obj/Debug/net8.0/TitleReader.csproj.FileListAbsolute.txt index 6928582..9ad9a6c 100644 --- a/src/TitleReader/obj/Debug/net8.0/TitleReader.csproj.FileListAbsolute.txt +++ b/src/TitleReader/obj/Debug/net8.0/TitleReader.csproj.FileListAbsolute.txt @@ -133,5 +133,3 @@ G:\Documents\GitHub\BukiVedi\src\TitleReader\obj\Debug\net8.0\refint\TitleReader G:\Documents\GitHub\BukiVedi\src\TitleReader\obj\Debug\net8.0\TitleReader.pdb G:\Documents\GitHub\BukiVedi\src\TitleReader\obj\Debug\net8.0\TitleReader.genruntimeconfig.cache G:\Documents\GitHub\BukiVedi\src\TitleReader\obj\Debug\net8.0\ref\TitleReader.dll -G:\Documents\GitHub\BukiVedi\src\TitleReader\bin\Debug\net8.0\LemmaSharpPrebuilt.pdb -G:\Documents\GitHub\BukiVedi\src\TitleReader\bin\Debug\net8.0\LemmaSharpPrebuilt.dll.config diff --git a/src/TitleReader/obj/Debug/net8.0/TitleReader.pdb b/src/TitleReader/obj/Debug/net8.0/TitleReader.pdb index db2ebb2861a710e5e78b4b8f2eb79b5f141122ea..f582264a82d6cb9087a25ad124721dd436a0c417 100644 GIT binary patch delta 1035 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