From 4b48471aed0701500a24ac31000e7ec4f4d4a804 Mon Sep 17 00:00:00 2001 From: jgiroso Date: Fri, 27 Aug 2021 00:14:33 -0400 Subject: [PATCH] working on ManyToMany --- .../com/example/demo/models/BlogPost.java | 14 +++++++++++++- .../java/com/example/demo/models/Recipe.java | 2 ++ .../java/com/example/demo/models/Tag.java | 15 ++++++++++----- .../demo/repository/BlogPostRepository.java | 4 ++++ .../demo/repository/TagRepository.java | 9 +++++++++ .../example/demo/service/BlogPostService.java | 13 ++++++++++++- .../com/example/demo/service/TagService.java | 13 ++++++++++++- .../com/example/demo/models/BlogPost.class | Bin 2367 -> 3144 bytes .../com/example/demo/models/Recipe.class | Bin 2239 -> 2239 bytes .../classes/com/example/demo/models/Tag.class | Bin 1186 -> 1963 bytes .../demo/repository/BlogPostRepository.class | Bin 872 -> 1007 bytes .../demo/repository/TagRepository.class | Bin 419 -> 868 bytes .../demo/service/BlogPostService.class | Bin 3191 -> 3741 bytes .../com/example/demo/service/TagService.class | Bin 3028 -> 3593 bytes 14 files changed, 62 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/example/demo/models/BlogPost.java b/src/main/java/com/example/demo/models/BlogPost.java index 0a3190aec..9c2c736d1 100644 --- a/src/main/java/com/example/demo/models/BlogPost.java +++ b/src/main/java/com/example/demo/models/BlogPost.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import javax.persistence.*; +import java.util.List; @Entity public class BlogPost { @@ -18,16 +19,19 @@ public class BlogPost { @ManyToOne(cascade = CascadeType.ALL) @JsonIgnore private User user; + @ManyToMany(cascade = CascadeType.ALL) + private List tags; public BlogPost() { } - public BlogPost(Long id, String title, String imageUrl, Recipe recipe, User user) { + public BlogPost(Long id, String title, String imageUrl, Recipe recipe, User user, List tags) { this.id = id; this.title = title; this.imageUrl = imageUrl; this.recipe = recipe; this.user = user; + this.tags = tags; } public Long getId() { @@ -61,4 +65,12 @@ public void setImageUrl(String imageUrl) { public User getUser() { return user; } public void setUser(User user) { this.user = user; } + + public List getTags() { + return tags; + } + + public void setTags(List tags) { + this.tags = tags; + } } diff --git a/src/main/java/com/example/demo/models/Recipe.java b/src/main/java/com/example/demo/models/Recipe.java index 13dc5187d..96cd3acb9 100644 --- a/src/main/java/com/example/demo/models/Recipe.java +++ b/src/main/java/com/example/demo/models/Recipe.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import javax.persistence.*; +import java.util.List; @Entity public class Recipe { @@ -63,4 +64,5 @@ public void setInstructions(String instructions) { public BlogPost getBlogPost() { return blogPost; } public void setBlogPost(BlogPost blogPost) { this.blogPost = blogPost; } + } diff --git a/src/main/java/com/example/demo/models/Tag.java b/src/main/java/com/example/demo/models/Tag.java index ffb6c278e..1c1adcc3d 100644 --- a/src/main/java/com/example/demo/models/Tag.java +++ b/src/main/java/com/example/demo/models/Tag.java @@ -1,9 +1,7 @@ package com.example.demo.models; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; +import javax.persistence.*; +import java.util.List; @Entity public class Tag { @@ -11,13 +9,16 @@ public class Tag { @GeneratedValue(strategy = GenerationType.IDENTITY) Long id; String name; + @ManyToMany(cascade = CascadeType.ALL) + List blogPosts; public Tag() { } - public Tag(Long id, String name) { + public Tag(Long id, String name, List blogPosts) { this.id = id; this.name = name; + this.blogPosts = blogPosts; } public Long getId() { @@ -35,6 +36,10 @@ public String getName() { public void setName(String name) { this.name = name; } + + public List getBlogPosts() { return blogPosts; } + + public void setBlogPosts(List blogPosts) { this.blogPosts = blogPosts; } } diff --git a/src/main/java/com/example/demo/repository/BlogPostRepository.java b/src/main/java/com/example/demo/repository/BlogPostRepository.java index 3f64ea582..758641077 100644 --- a/src/main/java/com/example/demo/repository/BlogPostRepository.java +++ b/src/main/java/com/example/demo/repository/BlogPostRepository.java @@ -1,6 +1,7 @@ package com.example.demo.repository; import com.example.demo.models.BlogPost; +import com.example.demo.models.Tag; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; @@ -13,4 +14,7 @@ public interface BlogPostRepository extends CrudRepository { @Query(value = "SELECT * FROM blog_post b WHERE b.user_id = :userId", nativeQuery = true) List findByUser(@Param("userId") Long userId); + + @Query(value = "SELECT * FROM blog_post WHERE tag_id = :tagId", nativeQuery = true) + List findByTag(@Param("tagId") Long tagId); } diff --git a/src/main/java/com/example/demo/repository/TagRepository.java b/src/main/java/com/example/demo/repository/TagRepository.java index a523dd6e8..bf5017027 100644 --- a/src/main/java/com/example/demo/repository/TagRepository.java +++ b/src/main/java/com/example/demo/repository/TagRepository.java @@ -1,9 +1,18 @@ package com.example.demo.repository; +import com.example.demo.models.BlogPost; +import com.example.demo.models.Recipe; import com.example.demo.models.Tag; +import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface TagRepository extends CrudRepository { + + @Query(value = "SELECT * FROM tag WHERE tag.blog_post_id = :postId", nativeQuery = true) + List findByBlogPost(@Param("postId") Long blogPostId); } diff --git a/src/main/java/com/example/demo/service/BlogPostService.java b/src/main/java/com/example/demo/service/BlogPostService.java index 99fb80535..8ce76fc3f 100644 --- a/src/main/java/com/example/demo/service/BlogPostService.java +++ b/src/main/java/com/example/demo/service/BlogPostService.java @@ -1,7 +1,9 @@ package com.example.demo.service; import com.example.demo.models.BlogPost; +import com.example.demo.models.User; import com.example.demo.repository.BlogPostRepository; +import com.example.demo.repository.TagRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -12,15 +14,24 @@ public class BlogPostService { @Autowired BlogPostRepository repository; + @Autowired + TagRepository tagRepository; public BlogPost create(BlogPost blogPost){return repository.save(blogPost);} - public BlogPost read(Long id){ return repository.findById(id).get();} + public BlogPost read(Long id){ + BlogPost blogPost = repository.findById(id).get(); + blogPost.setTags(tagRepository.findByBlogPost(id)); + return blogPost; + } public List readAll(){ Iterable blogPostsIterable = repository.findAll(); List result = new ArrayList<>(); blogPostsIterable.forEach(result::add); + for(BlogPost blogPost : result) { + blogPost.setTags(tagRepository.findByBlogPost(blogPost.getId())); + } return result; } diff --git a/src/main/java/com/example/demo/service/TagService.java b/src/main/java/com/example/demo/service/TagService.java index dd611efbf..e81a6a0a6 100644 --- a/src/main/java/com/example/demo/service/TagService.java +++ b/src/main/java/com/example/demo/service/TagService.java @@ -1,6 +1,8 @@ package com.example.demo.service; +import com.example.demo.models.BlogPost; import com.example.demo.models.Tag; +import com.example.demo.repository.BlogPostRepository; import com.example.demo.repository.TagRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -12,15 +14,24 @@ public class TagService { @Autowired private TagRepository repository; + @Autowired + private BlogPostRepository blogPostRepository; public Tag create(Tag tag){ return repository.save(tag); } - public Tag read(Long id){ return repository.findById(id).get(); } + public Tag read(Long id){ + Tag tag = repository.findById(id).get(); + tag.setBlogPosts(blogPostRepository.findByTag(id)); + return tag; + } public List readAll(){ Iterable tagIterable = repository.findAll(); List result = new ArrayList<>(); tagIterable.forEach(result::add); + for(Tag tag : result) { + tag.setBlogPosts(blogPostRepository.findByTag(tag.getId())); + } return result; } diff --git a/target/classes/com/example/demo/models/BlogPost.class b/target/classes/com/example/demo/models/BlogPost.class index 984807a0acd62b41025e7f73889e44636bcd97d1..bc386c794975979bfe4a4a6377223812bafb7904 100644 GIT binary patch literal 3144 zcmc&#-BQ~|6h7-88H3YMLTH^PfT5*e0%}N_wwRC*0*Q(FDLBk@dL`_wBPvUbEO+1m z`X+sVcBY=rmTfzp z;hB!z5;UdEFZB!Qw#=3%?V8lfbzGW@ICv>-=^CD_pBh$M!f2%B@w##KL3?jpl_V^}1|2 zdef;(tEC?+3(&b6!THdZRR;r(Gc}`CGwQ&ai7?#u4+Eyjtx82us@;;Vpy^oGZ*UIe zdl7j1hJDrbyrKYpG9a*f*|hX?qxN&lv2`O%g}#S%xnVmlGfjC$1IY<;+4f9JuOK@( z$)1=E+wj^hqR@Tm!sCrtnpLAw+QjYYSf0!l2HJ*co8G3NcKUbx;QpJ3~q!*0ai! zj~B{S;s~d%2ZAyUf*IeJ-dm@BWVl9CB5erlxBs8>uoQDh>4x;mcnKyJm--Y8-hyrC7aEN=Hh1O^N;#{R?p9b<>#DvL9}T~R0SFeIO-cUsI-XLC_sl6xUz;9sECdSEU?%PG96`l*V#2 zLAP==$-`}$%F$2G#_9&< zkFdTeXC4R?7LPevg&4oy<9?%-B`0^%Z=Bp{42GuTt?Xp6c z@~y&{nIhK_^G&1VF$rYu5ynAI$w5x5k(|D!$5EV;gPhjD>0t~fRzKv#`U(0bl2dAs z)8j}^-$rvv4RTrsr&0_jZlsVC=Tp#kw2pC5r}QAFCy|^=v=QjEjycR-y2r`S{L>gd zenSU&xHppi?hL8V*1bn#81#Qvu0J6WfGlP6~Blr{m zkf3dVyr7-nJvhQns8e6R`!C8Ka`!rh8+WPb>rzd1X_(DkNAAMGOXd2NdgC|+WupH8 Dtx|ZH literal 2367 zcmai$>uwWQ5Xa}(yS@YiAvYRI5))c*49T`!3xPlgP`NS}fr(W0)5-eOY`T|dcU>j# z(FbXzT9x{t5739I`k%8K+cCT3gJ;fV&dhJ-%pUpQ|Nj1mi0;tyDXP$;DwXLmi!ByU zSUhF1U8ZMc+7VQ6x`L+L`|?+5xzg`h?ZEGC3R-;E_hZLXyH4cnxoX?@gILB+;75WM zwE3ZRpu)(BV&&V)YISjFHDlv@<*QJ}s=F)QzJgIDih15U`m8-7b&d|See3y)*PT}9 zM?q%n#I6!FGsgQq4joNgaXi^mA3|49DO9#|0KCL4KVaVK`9a8}rALnM#9M-jjkR51>>yD==i832UiZB{ z6?P;pl8YDE(%qGz!}D~}h(9{G+0|U=XKv7Y8$>Yz^&4a5*X=SkPp>0m<&>MqjjYSX z8BM=Z@yDS1R)*43C<=JZo{C#&;F-qSSj4o2%_!NN{e+jjRdBSEwA0*))1!vM`P5>5 z+(l}@PR?-rVcVVIfWui8dr6m}u843-{(`DFeth6+<1~8?Uq%Qn4;uY50n&ae!+m0W zCExk5*i-L=erT(g4!6wNjs zuhAv?5}(-pi}6})OD71%SO@R(h|tOk7+^K**M(=-+k6H5gS zt2H90=F`v%_+9*ogrYBK5mrD-cjqv>d}4PA=WAF&K9F_HZbJ)bv-uZ^KQJhOjKEWX zTp)uk(ke!Lh*_`FSJ3R>Ygp7V{tdbWU1tZ)8v`mdZw{!~Tpy6pTr>voyl4)nH1fTS z%n7IlP^*AF2gq4k!U|)p=y+R+&omyqr#0dcmxJl*x*$b8;*uD8#Oa%K4dZzehq$B! zL&AL#0y6w{YCzU8wx9*H+5D3VzhjVOU($=KnVGLqGtGPpnmI~3>rsA5?XH31y7sV; zSPgS2rMWPpiBAMd&<(l?S;u&ssW{2h%w$@pjVz|(B+~|%tQ;n;s?c=<6W2_@G>gfY zWV)5f^i4LCG0AifO!sq`xZ#IPe20R*rCX4bbuuTJ9%M4z#(#*UYac=n@6H@CB{#pB z!;^e?>Ai733A#)7GI&apJdZPZ?$dW!JY(NV!t*4DC;8M<9`5Y|J<#%@eoXlACei=( Ca=aP< diff --git a/target/classes/com/example/demo/models/Recipe.class b/target/classes/com/example/demo/models/Recipe.class index 4dc23e4410465e74fc17584370784b01b88fa8dd..92c49a6dd6517502bd4523d091630da491b0507c 100644 GIT binary patch delta 159 zcmdllxL3C-bv9NlE~Dk_?;-QVe_y(hR~3GC-azgFJ)W3C-bv9Ns0q`5)7OSk_>zdQVhZj(m<9BgFJ)m%YH)$d< z@xdS9k1~E|cUhKN3_f&b=gc|Z`Mxt}roVpw_(?=dROq54Eq79aR(M$D;YEsGrs$QR zm{k$fS3HrQq*;@8)hs%8wIFEtL(|q)T^(4ibyQOuw(V%CEys2RWj*&Z^Heol%hk#* zD|5Sops6++@06_?Qme{=tTh#!I$X``>iIwYk*Rck>iKWK+1f2_mktHRZCO`>1|oF# zb;I%qcOKQ8>Yn3j5DfG*wN*2VV2G@p`&QMKy4gVdk{=&#uNBKq-Bf3?ep*vzMb#a% z?o?FGHD3pqg>^uTw^6qv?emhuBOFp?>6T>$87A7eZu*;nDr2Kq6qH=EY)h{TGIFyA z(6@=Sf_jUVt#+IBBh@HL6rUA4Wm!9r4U5--F|Lm-h#k9;eM$03F6ScU@=iCh4$9|S z!h#f-O!j(C97d40Z%654r?Mv-I1P;+5OnzeIc`;S=8>o>y^SUv$jwHG2W^^g{msF@ z2ykc$p}StoWUd8=O_M^n?=Tbv2=*Bw4T#GwfY6Y{RjmZAT!M$jTZscW(nr8AMT9Wk zIjjcELhG%-nS0m1(`=O0TZ>z$1KqI5*IdwuSI6u3cMG>&pBK_JOe1MZQAe73sV`0a zG$3g7ruzX*+_tO73nanFn*-P$ z#8-?mo_inMhVaXNB%$ao-SdDz54KVGJ;y9CC-UD(eDwnFW9$L|!^QzThOe~mMB_Ap z6&^Nv0A3968J=;>83xGDT~I7Pe?dlm;ez6fXAt9Mp@l#$4sxBK)&o+5urhYuj}Nec z6sYAd7RF36o-_kBx#Yr@4A7@w={69;bh!c)=zj>Bk7ybr(=;*rI=@lu3k)%jSJE>M zx79d9kKx6^>zJ8E($m*kr7>t5_YktaSEwWzC}EBXTqI0_ax{yvm6OrRX|gS+Jk7P^ zWVCXc2B(=DIB`w!uiL|q$fd76ag02E7ApiwevUd f;^q~R6Ha<395TH+*{1-12Hr7rFJB3UT_XAeOJk@6op0yY?;k&j=p{9aWYa-`vQ*d0<2*gdQ-hHuT}GA8 zCI8Hw5%-5qC-8@dj5a?_d?h{6lacI?#B1LV6jw6vBStk-e&vis7|BQpe;}N;i>Cbr zAKnXJgj@-?$43)^qNPabd^o+e9w&9DV^iOLdwkMuch4DReeMZH)fDcT3Z((gy^_9E zM~pI!W)G!r0vDy_j`YRJ#OsT&%Q1&;4hDSGV%T#8xeTz33d3J+7_AkXi(L-D_8+Xsb0~Nx-cw0eUKrAA^BdA1okwD)RK?Vgd z3E2xohG@6G6Z?u6i&n7~jb0hr6ESYRI&}Jyd9cbHof{SqrqDUX#^&c1@X? zR23qG(kz4v5LhEv))f2QkL}M%EW>#Mn8r zxv>y=n|2c9BSd4D!JU!DL+`-OU87Kot8NH$38Ch)nc>1^ruz$+GJiAeEo6EC7h)Ud im{RV=Ob1}9|A$F?#f(>A(mq+Z6MEe@H$hwSi0BVm)YS3- diff --git a/target/classes/com/example/demo/repository/BlogPostRepository.class b/target/classes/com/example/demo/repository/BlogPostRepository.class index e99dc3a2b4da82428661fa8161b528bf42668aaa..da0b8e2c2472a36c1adada23bdb5fe11401b5386 100644 GIT binary patch delta 185 zcmaFC_MTn%)W2Q(7#J8#7-ZNPB-t6H*cqfZ3eRN}IUFaQ9GAsR9O delta 70 zcmaFQ{(?>T)W2Q(7#J8#7$n&l#Ml|c*%>4@3eRQS{Dm=$k&$t-H?y-G12Y2$Pze)* U5Q8w77GdB5(rgTj45ADS06Jz0@&Et; diff --git a/target/classes/com/example/demo/repository/TagRepository.class b/target/classes/com/example/demo/repository/TagRepository.class index 652319bc0f7a28811c017096f2567a6052f7f571..232e8a1736286527487dfcd7d389322526ce879f 100644 GIT binary patch literal 868 zcma)4O-~y!5FJyJK%kVbLg{J6sk9Onh!bg%00k9k5i~(m>IFI3Ve7DKFSa){e~kk_ zpg*eWctgoXEo~1Y+p{}w-n=*8f85;zzz)2w!D?jo%JG{>vjlmBsphGUFtPkx#Em`bx7Ny)lPO+ED?179E2W)qQY&gqBu&h1W~7R* zJfB-_u6ZP!;Jr+6gPFF{X*1xTax?=%tMo;Z6SM7hGi)B72XBL;*6B&$L>zqn*lacZ zZPSl)Nu};mM!|<**I)f;Gc=d%V}bRIl*(BcWCmc^(esKbuP6iZ1=j?+d4O0Jdz2?wMcG^z&8DsFnISz9+q|jwHsu} zM-_y(@te`5*~j2%$3|;79GMJz(&-Y+_{>!X3??WFuO=BxLWQDA&Q%!H=$N9IfN7}H qIZr>%&}-JhbC~-AFDL^r>oFE6D7{EP!-^$XE-GIZl~ww@0`L>T;tApa delta 85 zcmaFDwwPJ|)W2Q(7#J8#7F1rI+z$(8Q8!yI|B!hW@7;AV_*OPf_o3M diff --git a/target/classes/com/example/demo/service/BlogPostService.class b/target/classes/com/example/demo/service/BlogPostService.class index 82b9b46fb781f94212c6972bf988d7256c4ea1d6..7e67c07b0d7d23ba6d0e7fafba9d3c84d4947f20 100644 GIT binary patch literal 3741 zcma)9X;&Oo8h&omP|#gTfM67t7$YiMQZCVn5>X&#L>m$VqRDJtx-U(I?y8=uY7*RM z+-G;+XWad&=Xmg-=Xm_=@elYD{0n~2d2V%8cQqXehr?ap<$2dz{oT)BeFNYSKF#2A z+|z~2aBmhl%ov!}^YIK$;68nPGK)FPXOPDI`eMPr0~us-kLG)@moomC#h>s{77~kD z ztFx}RVl67^_|}rlYn_&?GguSVz&&ewsz9+j0$FV65g6GL*?f|i+#N@3#}38?+6IRf z1kzJ(K?&^2*^Zj6mKT*bFNsy4H|OSMX+e6n-baV&VA&@4;Z}{l@>cDt zo{|A29vf_BD^q*PuXBwJU6@3mb20L^!2a#fch9I`*)5!q+RuUVXhE8o3Ic})b7$nL zv`W$`S~=G#ZVy1pCU5szYh8mGQPo6v5PZO2?7^D8s566S}2ih(~H@C3T% z?4l!ss>itB(&CG4O7Eyv3Ss6fw1nxxR&6VjvW_|%mo9@A$7k9(Dg(JFeWLGRf--5? z4d&dcmsiJZT^)TfSCr=mbs7l_p0}!fMq9Z717*c!Vd82Gn79Ia4frMkR0a06G?-1* zVPX|$4V*KvhKEgDh5ZH|G4UuKGx0c{F!3b*BCtEm=rCa>JWsCa zRBW082U`?x*{0bFe7VYqUYpFZ8V)vt29D^6-Dk;m3X^NoYypG6&J&_KUeVoNmRMjl zi<(Z^f{Th~^u_fNcA>hSp{)#Q>gse&4O5(y?2AccQDbX%A2Aue3Mh!}aCbx=;tRW# zej5xeHEd^lnjpp@p@>deFjbO%C?n~v@Ng`HH}RIhMM*TVZx{6I{IP}lX=P;M*W;f-S7Pu_^ zS#^$J_==up4mshbo!-!SQSbhZcSRtpFUzv1?)UgWGzWby(BAZO5qOuUQtO?-e4nE;KLIX=0pbJ4}*q|FWiXYu;ok zMv|vwsWivf(#vhKz$i6&H_pn_20md`@$`w1cE>7u;ykZ2KhBqKjzbAMr<`+f!Ia z2c^%9^2DIBPJPlf+R(N$WVjeTxP(sV54G;A38`zn3OC?JD(XRZs6Q3!zk#|0ZsJda zn*JZj*v_*Bt$za`GyD1Kk3%2R6_n*p3Fc=oQ)% zx25~j8f|}i9lK-1pZ@Yg2s#})dM^xWxdIu+u9vW{X57XZwfh*idG2%ohWX=R9J@on zX^kl|C&S+pH{%xK?!{6328W6LR^Dq@*Y0ks-;MF?2=983`WeFpZZ|M);Etad(>r;b z!URbtF~ya3|2fWD)xhw`I{Ic0jIQINb?nje#p}34JB3zmj(2a!a~-p1kj@z*km0%k zlvR(yKokXic9dC=BFA3b#Z_AvkFFF6z$+aSKK2o)qnvfRnOZ$Fpg)C?M))(~-9cJz zB@)i8D>cuTaL4KiH%{GJcxE^>c^#KFMAxd}ri9o`U2G<@CCX!sJB{CROyTZ&ElzX) c9{)46=fC&}|6_Wd;$D~5X)695evd!=9|oqu8UO$Q delta 1167 zcmZuvOHWf#5dQ9M%WY4OZE3NffFQJjZK1vp5kXK;!GdoPUs$vtP*6)j@Kt>5OpN5L zG%;>nnqX>*iE)kp!MODoxY9V&Hmyc;b7tn;nfYeUH}kssN5%B|ueDDA_TZ_&Ms(Ov zhE6*UqRT)x>q7#E(Zg1+fg=J|ba3ENHzf_&F^Cg_Qcen(af-!h7H3$T<)m}$9WpR% z;QY$-m#Z;tKwtf0s?%JXQ7Pd?xq%Uh3%IC$n*G5`xNP8x#3-&xL@}npGZkHkhUb%$ z@o;w{5nYN*&Lt(T;kp{Nc-vzxj5}?ZaN&l;B&G~ZOT;lFu?-Cpv$!d73%4Z_Y|XLN zhH(~kYTeSMHLtvBR>_iA>V?r`N@8Bkh;rMI9SgXl!LPn)K2>S$^tiK4#G|tl;l5-n z5gm)i)UY+IzFMP>MTsRmFz`?!g=N)mYtbI7W!rbBqu4n&ttLdR`3a-CM74S=LJeia zBcRbC8c0`=RYH0bX@fK|M6yab?cRp!ybqArLbfCiU_lLPNo&}OI_MM|vDc)Ev94^a zmpp(YAInxfe3av71dT2XKzuO(*}bGWp)~LwdN2cvjx!~BkZ>L{YS|3EJ-pqHl5 zi0wuAM#|CstV1HsTp8e(`2b|3?(Bg7?5*^+MBC=g+S z$Z`{1^+XpFQJVwHmls4?DugDg=!OT)2vgM^6viB|GlZQ5-!A&Mn|wNLzlIjcCnB=GdU~TTm93f^x-3+c{~LN+ zVd$MyoY6%f`{*=0MQq+lP*41r9IPn7ihqaQYQ}zw)X`qp=mT`WPe%~aT|B})+VNv_ N=PmA|%KbQw$Zu0GiunKl diff --git a/target/classes/com/example/demo/service/TagService.class b/target/classes/com/example/demo/service/TagService.class index 9860638c9d5bdf84bd3dbbf5b6947679b6656788..0ff05ad8616ba236860d1f17e7d392179727a337 100644 GIT binary patch literal 3593 zcma)9SyL2O6#jY`Xc$^SRFt^HT{dl(EJh3ophlAc7YIhPUS^u1rKfw+-Gh?d?EAj& zdCF^2mBPYQrShE0AIMM0U&w>WcW?JBFbXNEy8E7c&Ud!&o;&<;{n~E;Zo>~L+=3HL z=)lQl+>Zxzq~&`!g%O;R;?vDIgR?0lF)BC4bUc_sGfqgm@it;S(u_y(STi2S6U`8q zkdKVi&!%W@$*)QI$Vu}lDYJE4)G@6gJ8zBKfj!|^1Fq|ZBD6g>&~Pa2`8hKv__mvy^hMsf=9&J<+>bD$V{mu%n461Hu^@p7lVAgnmkuy4u825T&c({RLg?XX`%U1!(0hUAc! zwKTM(ZPywp<|izFOfYKtOM4mNj0@kE>sXi!r);LNv({~3`7?ILlGPZEKBcdWZ;6m# zM>=aQ@^tJ3(x9(v$z6sTikyZ`%V@O@Tj7+KJuPHmL(6BNN&3%fFgw#1#f&f=;pWV= z=PvItVbiR2v6Tj00uDG1>(kj4Z5Kn^G1GPsGT~+hdXlcA60WJTFG*!pd@CqAVHv*~ zpnYN0XA7muAG`t9ktGY#Pgmxm5SO=DF&c`@^sp$Xj_YuAouk z=(uFyGG+}tg{KWXgJ(6YR?Ji!81Q{DE16{AIXq8(40>J|guW<5%nn)_@IouDv^3$x zR=i~3WxT=;8F&@1u}ubE#~bXGfj9A%fw!g8ckr%(J=kmDJ-lz=1AJ)UD6Ysymxk>% z(bpbhhEX{?rzS3188Wx6A}SGE!^%n~GKrFwN=<2TylLpF@p-dZ%Htb|8TM>fHDjU> zI5H|B#3BuileU{3oIT02+j(;v70{`I9Ld7rA&HV%Amzx(SO{oDu>#s z%fk}|rg*xoIi$@j5lqWX_24E z3Law-U-P^xcuAF3I=*8S)1Eh7EU@_}UDxtehb%Vk&+6{Pc+o&OA>6EE1v?_czN#Y; zM^+_SU^vFPR;~X3HzSuz+g9@|MjjH5Gs^CY$6xr179~OTF%2km#95T>`%&`4e{%sGzJ-DD9L<#0W)xb)$!9y_D8# zTu5jR@fbRXI{pD$W9a$>=FmX&;a*B~I%|}YrrwITmC9fpR$)Ewp$_GBO9WE(x|Ip< zqoY-5RsItt|EBW49|vOpf77s@vT^Bu9w`m!U(tO2DvaTt-t%)pAeVK4hBPT(G@-irZ#$<8`_OII7ad*-laWKZuL*3O|_7K7O>?sHW6-DFKC zi_%pNn)c<&Z;UH1WrOT|g4*pE;#ZyOK~sVXl2Vcfytv~)j`A&uV@TKR`nm*qDlJc` zy*n|lZ^Z6X#k{BI0$F)3857F^?T)@Ns0USPyUjP6A delta 1175 zcmZvb$x{6l3?5rHHyljf&pAXT$w-wVkAfg+|7lH<-yYN z;2+@u3o8^@Wm%Rd&))UwLC>Bn`^^lAlvb)<&wJhd>-WCyJPCfO(mwxQeGgzS9?K|4 z+yfPdyf};w2}ig+D&rVB`B#^OZW(UGd0>x9NvFI>pkJnx0U1sV^5rxSJ;Tq=N;oIs z{PTsEOQS-qxb({56qIUgV%UfZ2^ScKFl@YbhLnpKk#LFOGOjRO#Wmxnv%2p(Mg=IH z*{q(^XSJFBls=gq&-u%sDMV%UxbhBR(6WN?e29Z9}~jI=9m zd~C2y~un$?n-l<`A~ z8M?d6H_MR29SL_C?%}@i(cLCIG=90i`+a88oIaI_C8lz^@zoO&9=(tgd6o161c?0M zWGiV`Mz)HqM3yw6bu;Z^WCgOW@G^uq^dVvktvncD2%4)IfEsM2oq$?|D2gX{k`>AN z!fzo)R^Slv0nSC_*JBhDQ)z|T7)ru6)Df>isPu-PsV1(cci^>p8qo6)vtAe>(7c++5Z~d zUTky+73Xw0Y(BJrK#6UQVbdCyM-{R1zYTU`zj>|Lf#Sp;q=R`gPk@dGn4`%*PJ2c# MJVBLDq8ELC0DvNiO8@`>