From 1ef295c6c81b746111641234ce6b01297d2ea93b Mon Sep 17 00:00:00 2001 From: "bot@clarius.org" Date: Tue, 9 Jul 2024 03:57:45 +0000 Subject: [PATCH] Publish pages from devlooped/TableStorage@c58c1f90a --- assets/css/style.css | 275 +++++++++++++++ assets/images/bg_hr.png | Bin 0 -> 78 bytes assets/images/blacktocat.png | Bin 0 -> 463 bytes assets/images/icon_download.png | Bin 0 -> 216 bytes assets/images/sprite_download.png | Bin 0 -> 14832 bytes assets/img/document.png | Bin 0 -> 30389 bytes assets/img/entity.png | Bin 0 -> 23472 bytes assets/img/icon-32.png | Bin 0 -> 800 bytes assets/img/icon.svg | 16 + assets/img/tablestorage.png | Bin 0 -> 112751 bytes changelog.html | 540 ++++++++++++++++++++++++++++++ changelog.md | 383 +++++++++++++++++++++ index.html | 444 ++++++++++++++++++++++++ license.txt | 22 ++ readme.md | 374 +++++++++++++++++++++ 15 files changed, 2054 insertions(+) create mode 100644 assets/css/style.css create mode 100644 assets/images/bg_hr.png create mode 100644 assets/images/blacktocat.png create mode 100644 assets/images/icon_download.png create mode 100644 assets/images/sprite_download.png create mode 100644 assets/img/document.png create mode 100644 assets/img/entity.png create mode 100644 assets/img/icon-32.png create mode 100644 assets/img/icon.svg create mode 100644 assets/img/tablestorage.png create mode 100644 changelog.html create mode 100644 changelog.md create mode 100644 index.html create mode 100644 license.txt create mode 100644 readme.md diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 0000000..f764ecd --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,275 @@ +.highlight table td { padding: 5px; } + +.highlight table pre { margin: 0; } + +.highlight .cm { color: #777772; font-style: italic; } + +.highlight .cp { color: #797676; font-weight: bold; } + +.highlight .c1 { color: #777772; font-style: italic; } + +.highlight .cs { color: #797676; font-weight: bold; font-style: italic; } + +.highlight .c, .highlight .cd { color: #777772; font-style: italic; } + +.highlight .err { color: #a61717; background-color: #e3d2d2; } + +.highlight .gd { color: #000000; background-color: #ffdddd; } + +.highlight .ge { color: #000000; font-style: italic; } + +.highlight .gr { color: #aa0000; } + +.highlight .gh { color: #797676; } + +.highlight .gi { color: #000000; background-color: #ddffdd; } + +.highlight .go { color: #888888; } + +.highlight .gp { color: #555555; } + +.highlight .gs { font-weight: bold; } + +.highlight .gu { color: #aaaaaa; } + +.highlight .gt { color: #aa0000; } + +.highlight .kc { color: #000000; font-weight: bold; } + +.highlight .kd { color: #000000; font-weight: bold; } + +.highlight .kn { color: #000000; font-weight: bold; } + +.highlight .kp { color: #000000; font-weight: bold; } + +.highlight .kr { color: #000000; font-weight: bold; } + +.highlight .kt { color: #445588; font-weight: bold; } + +.highlight .k, .highlight .kv { color: #000000; font-weight: bold; } + +.highlight .mf { color: #009999; } + +.highlight .mh { color: #009999; } + +.highlight .il { color: #009999; } + +.highlight .mi { color: #009999; } + +.highlight .mo { color: #009999; } + +.highlight .m, .highlight .mb, .highlight .mx { color: #009999; } + +.highlight .sb { color: #d14; } + +.highlight .sc { color: #d14; } + +.highlight .sd { color: #d14; } + +.highlight .s2 { color: #d14; } + +.highlight .se { color: #d14; } + +.highlight .sh { color: #d14; } + +.highlight .si { color: #d14; } + +.highlight .sx { color: #d14; } + +.highlight .sr { color: #009926; } + +.highlight .s1 { color: #d14; } + +.highlight .ss { color: #990073; } + +.highlight .s { color: #d14; } + +.highlight .na { color: #008080; } + +.highlight .bp { color: #797676; } + +.highlight .nb { color: #0086B3; } + +.highlight .nc { color: #445588; font-weight: bold; } + +.highlight .no { color: #008080; } + +.highlight .nd { color: #3c5d5d; font-weight: bold; } + +.highlight .ni { color: #800080; } + +.highlight .ne { color: #990000; font-weight: bold; } + +.highlight .nf { color: #990000; font-weight: bold; } + +.highlight .nl { color: #990000; font-weight: bold; } + +.highlight .nn { color: #555555; } + +.highlight .nt { color: #000080; } + +.highlight .vc { color: #008080; } + +.highlight .vg { color: #008080; } + +.highlight .vi { color: #008080; } + +.highlight .nv { color: #008080; } + +.highlight .ow { color: #000000; font-weight: bold; } + +.highlight .o { color: #000000; font-weight: bold; } + +.highlight .w { color: #bbbbbb; } + +.highlight { background-color: #f8f8f8; } + +/******************************************************************************* +MeyerWeb Reset +*******************************************************************************/ +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font: inherit; vertical-align: baseline; } + +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } + +ol, ul { list-style: none; } + +table { border-collapse: collapse; border-spacing: 0; } + +/******************************************************************************* +Theme Styles +*******************************************************************************/ +body { box-sizing: border-box; color: #373737; background: #212121; font-size: 16px; font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif; line-height: 1.5; -webkit-font-smoothing: antialiased; } + +h1, h2, h3, h4, h5, h6 { margin: 10px 0; font-weight: 700; color: #222222; font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif; letter-spacing: -1px; } + +h1 { font-size: 36px; font-weight: 700; } + +h2 { padding-bottom: 10px; font-size: 32px; background: url("../images/bg_hr.png") repeat-x bottom; } + +h3 { font-size: 24px; } + +h4 { font-size: 21px; } + +h5 { font-size: 18px; } + +h6 { font-size: 16px; } + +p { margin: 10px 0 15px 0; } + +footer p { color: #f2f2f2; } + +a { text-decoration: none; color: #0F79D0; text-shadow: none; transition: color 0.5s ease; transition: text-shadow 0.5s ease; -webkit-transition: color 0.5s ease; -webkit-transition: text-shadow 0.5s ease; -moz-transition: color 0.5s ease; -moz-transition: text-shadow 0.5s ease; -o-transition: color 0.5s ease; -o-transition: text-shadow 0.5s ease; -ms-transition: color 0.5s ease; -ms-transition: text-shadow 0.5s ease; } + +a:hover, a:focus { text-decoration: underline; } + +footer a { color: #F2F2F2; text-decoration: underline; } + +em, cite { font-style: italic; } + +strong { font-weight: bold; } + +img { position: relative; margin: 0 auto; max-width: 739px; padding: 5px; margin: 10px 0 10px 0; border: 1px solid #ebebeb; box-shadow: 0 0 5px #ebebeb; -webkit-box-shadow: 0 0 5px #ebebeb; -moz-box-shadow: 0 0 5px #ebebeb; -o-box-shadow: 0 0 5px #ebebeb; -ms-box-shadow: 0 0 5px #ebebeb; } + +p img { display: inline; margin: 0; padding: 0; vertical-align: middle; text-align: center; border: none; } + +pre, code { color: #222; background-color: #fff; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 0.875em; border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px; } + +pre { padding: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); overflow: auto; } + +code { padding: 3px; margin: 0 3px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } + +pre code { display: block; box-shadow: none; } + +blockquote { color: #666; margin-bottom: 20px; padding: 0 0 0 20px; border-left: 3px solid #bbb; } + +ul, ol, dl { margin-bottom: 15px; } + +ul { list-style-position: inside; list-style: disc; padding-left: 20px; } + +ol { list-style-position: inside; list-style: decimal; padding-left: 20px; } + +dl dt { font-weight: bold; } + +dl dd { padding-left: 20px; font-style: italic; } + +dl p { padding-left: 20px; font-style: italic; } + +hr { height: 1px; margin-bottom: 5px; border: none; background: url("../images/bg_hr.png") repeat-x center; } + +table { border: 1px solid #373737; margin-bottom: 20px; text-align: left; } + +th { font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif; padding: 10px; background: #373737; color: #fff; } + +td { padding: 10px; border: 1px solid #373737; } + +form { background: #f2f2f2; padding: 20px; } + +kbd { background-color: #fafbfc; border: 1px solid #c6cbd1; border-bottom-color: #959da5; border-radius: 3px; box-shadow: inset 0 -1px 0 #959da5; color: #444d56; display: inline-block; font-size: 11px; line-height: 11px; padding: 3px 5px; vertical-align: middle; } + +/******************************************************************************* +Full-Width Styles +*******************************************************************************/ +.outer { width: 100%; } + +.inner { position: relative; max-width: 640px; padding: 20px 10px; margin: 0 auto; } + +#forkme_banner { display: block; position: absolute; top: 0; right: 10px; z-index: 10; padding: 10px 50px 10px 10px; color: #fff; background: url("../images/blacktocat.png") #0090ff no-repeat 95% 50%; font-weight: 700; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); border-bottom-left-radius: 2px; border-bottom-right-radius: 2px; } + +#header_wrap { background: #212121; background: -moz-linear-gradient(top, #373737, #212121); background: -webkit-linear-gradient(top, #373737, #212121); background: -ms-linear-gradient(top, #373737, #212121); background: -o-linear-gradient(top, #373737, #212121); background: linear-gradient(to top, #373737, #212121); } + +#header_wrap .inner { padding: 50px 10px 30px 10px; } + +#project_title { margin: 0; color: #fff; font-size: 42px; font-weight: 700; text-shadow: #111 0px 0px 10px; } + +#project_tagline { color: #fff; font-size: 24px; font-weight: 300; background: none; text-shadow: #111 0px 0px 10px; } + +#downloads { position: absolute; width: 210px; z-index: 10; bottom: -40px; right: 0; height: 70px; background: url("../images/icon_download.png") no-repeat 0% 90%; } + +.zip_download_link { display: block; float: right; width: 90px; height: 70px; text-indent: -5000px; overflow: hidden; background: url(../images/sprite_download.png) no-repeat bottom left; } + +.tar_download_link { display: block; float: right; width: 90px; height: 70px; text-indent: -5000px; overflow: hidden; background: url(../images/sprite_download.png) no-repeat bottom right; margin-left: 10px; } + +.zip_download_link:hover { background: url(../images/sprite_download.png) no-repeat top left; } + +.tar_download_link:hover { background: url(../images/sprite_download.png) no-repeat top right; } + +#main_content_wrap { background: #f2f2f2; border-top: 1px solid #111; border-bottom: 1px solid #111; } + +#main_content { padding-top: 40px; } + +#footer_wrap { background: #212121; } + +/******************************************************************************* +Small Device Styles +*******************************************************************************/ +@media screen and (max-width: 992px) { img { max-width: 100%; } } +@media screen and (max-width: 480px) { body { font-size: 14px; } + #downloads { display: none; } + .inner { min-width: 320px; max-width: 480px; } + #project_title { font-size: 32px; } + h1 { font-size: 28px; } + h2 { font-size: 24px; } + h3 { font-size: 21px; } + h4 { font-size: 18px; } + h5 { font-size: 14px; } + h6 { font-size: 12px; } + code, pre { font-size: 11px; } } +@media screen and (max-width: 320px) { body { font-size: 14px; } + #downloads { display: none; } + .inner { min-width: 240px; max-width: 320px; } + #project_title { font-size: 28px; } + h1 { font-size: 24px; } + h2 { font-size: 21px; } + h3 { font-size: 18px; } + h4 { font-size: 16px; } + h5 { font-size: 14px; } + h6 { font-size: 12px; } + code, pre { min-width: 240px; max-width: 320px; font-size: 11px; } } +.inner { max-width: 960px; } + +pre, code { background-color: unset; font-size: unset; } + +code { font-size: 0.80em; } + +h1 > img { border: unset; box-shadow: unset; vertical-align: middle; -moz-box-shadow: unset; -o-box-shadow: unset; -ms-box-shadow: unset; } diff --git a/assets/images/bg_hr.png b/assets/images/bg_hr.png new file mode 100644 index 0000000000000000000000000000000000000000..514aee5056a320b059a4b92fc31385b01f3fd707 GIT binary patch literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^EI=&E!3HD~tNk5798VX=5Q)pl2@*yR?(8i7?>Hmz b1S7-U!)%xJ1CQbP0l+XkKg_jic literal 0 HcmV?d00001 diff --git a/assets/images/blacktocat.png b/assets/images/blacktocat.png new file mode 100644 index 0000000000000000000000000000000000000000..e160053a5bfc1f1891c5df1a04244b46132ed91c GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGW&u7Su0Z-f>EL7Xu|Ghaf+azI z!3+%h6VAUEXmGf1FkfMPe?Wo5`wP+x42q#I?$ zCZCHu*mLc{mj@jVb0qJie|tLrXx$RV*xy|DA2&%h)(GsqVy%>MraS!Shm183{#@F! zV^vm_@$^Y{GUuI-cUN0({K+A*SMX|j#GmyK98SEwQl?dz*($XqK|j>0;H2RlD{}=; zx7!XPy5}bEXEt-@-@Ngc#+nIgOgm!u=S(u>E&hLN(cd}Wb8P2o&P?9><1zE8l8pz9 zg==?S&3yIdUhdL~<_mg1Y!?@vTUiymeaGcy&vRcbOG}I6uI`9fxn}VP_6h8=I%b0Z Rq=4be;OXk;vd$@?2>`O9@hboT literal 0 HcmV?d00001 diff --git a/assets/images/icon_download.png b/assets/images/icon_download.png new file mode 100644 index 0000000000000000000000000000000000000000..5a793f17688b22d0c98f8b32855f69daff65afaf GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3^F3W0Lp+WrCrGd^PB3WLTm5|# z<3>ZVHGbLMPaA&Ni`7(Ic@)^~t}9m~#>{KX@F?FxM~Q7di>SquC^@HPOZ^)nnu6w= zPs-5Ln9{RS^v!FJ4Hk1|eLTx~WO~PjEv;gjQBoc84>y)53m9M4vW{f>=&v)a$*Fn% zwMt9Ivq1qGD=w^dyuiIx3lB69mQJ=Ex6cJ85q6@e`QPvJEsD4 ODubu1pUXO@geCwMBTRk( literal 0 HcmV?d00001 diff --git a/assets/images/sprite_download.png b/assets/images/sprite_download.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f8de24c1c49ce421a44ce2a24ac22d045a39fe GIT binary patch literal 14832 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 WAV6(21mh6^0000Oq)QiR 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 literal 0 HcmV?d00001 diff --git a/assets/img/entity.png b/assets/img/entity.png new file mode 100644 index 0000000000000000000000000000000000000000..27c9898eb950896e90a6cb7dc727de1a53819aab GIT binary patch literal 23472 zcmb^YXH-*N*Z2#A2&gm#1t|eLdeNmx4WNPuh=7U^2vvGhN~j4%Kt-B`-jpsvKzd7% zF1-f`p-2xTbO?}gHrM?;_xpdxIOlviYYY~9haL9XYtOmXobxy5`=?K|*v|2tqobo^ z(|+{8kdBVQ95_avVFG%lKNSPOFM3ZyEe*PoK7m!>}Su6|LiV-+J>+#6M zla7wl>*R-i+D^!qj?Q>l`+@p1Unn7+x#8mI1g*dA)Vnhu3_qTGN!KR-;ldrKQU<<& zk&DhFlrFA zA0Ho>&jxXN<^aC0dYtOH)RQKi-=92@*PjZus2}?&`}i{@JMTq7VPWAVC!mF=q}1KR zjZ96Y;WW-%eS040Zaklyo0+WqT@#h?e>6FBY{i>bJCk|0TuMX#kIxh2o@2#HzvQOW zbpDT)n&)a-`z99@aK|TVXMjgmR@R%_$q6qyGBRQU+`Ih2n$K^ZEWrYXlYtcex7Qh- zP8a{*aX4O+80suhsNi4cG2RHU$scgW&V~!YGq`BH|R%@>WHhpe&*qO-T|bs zHEm?X)j&T}VJ6{oFV}H?iFvv!^YB@ufy^;;WwBpSfwP``vDt;G)n@R$&cp$=4bS_+ zJIxclemH(@o8b2~KO*YA1YEvFZ|j5LXZ0Y1!|5NC-y_uYaAPux$^}Z#^FgZKq?(OO$zZ=Kx3L#hQ zFR`7oVq(SaCQtaGN0Q1 z)-c~%rH;62*gv|X>|`(!od+4qACVlP-$ODO9Z^RlzYd4o2|_qs#s_RS$=MoLxTeW+CjxWD^tKHG-{th}Bc-r#cx+qA zJS2h*^rqsde|h?zViU|=X)FIpUiih9>^!#zptvcpH=DE0k2%?ocC@T2StN(I>#7gw zTCa^m5Zm7=er@Jk7|_CwK2EOk{QMI=J&<{(A*QgZwXWI#_%kpiVfSE8c&9ZVAG!#B z%g~Q4$^@(ib=Iz z369-oy>zvQ>+Ow@#hll(l^-Kk4Y8X?ai-bnWSCpXSw=6<9jBc?p*QXJ@Qdx_nO}8B zvuUr1mu0HnW&UkTOi|Q=7_!BtC{}1>JKQWpIK@{M{5!6YO9h4ZMV`ukaTB&k`Na`X zInd;3K}LSHBhZ4}&@^EWr0}}J{M75jl81q9jUMDeYz;6KMn*==t+hs&XyDage=@x$ zjuaQErzy#LfAy}nWDv+24a*io)r;Qw*+HLZ-4A-bIWKbK9oQQ?ronq`WK_)v`to_V zIos`_>w9naBE`?*H;MY@fS}$tw=pGpnTYYHoJurv-NNxRf>EK_J8hYDuFn5XW^_UL zWf=Zw@Lvgq00ICpKIsdKiW4OuR(hpZyNC!Q`}hlBrkQiPTx ze+0ULVQZU^3l(eDRoFbOCk^}cj`w$_4vg(&)_-zvS8XOHP!4Z`S@iR625eMT^Oj+t z3RFi1{zSJ(kWbBo-*UPqIo~y&cI-M_-nKthnrOD|d0bo3wqNCj`3bdw22f0NT= z_$OVwV$lRDG-+B+*koKNe~cpRJwf>%Z;37-pD8(w-1hwYUig)&WdT9pdkbkLJGN?5 zpMSi->;C-FN;aa5jg-SpGPcrEjYfENMJi}gX6JZj=Cg7`)ps$K7O%Cn9BiKw z+g)JZl4Pn@JcQYiFN<&NS*R1R6)i~lMvvd8Jh86mOMXX=_MM>lZ}%gThxNfNUWB31 zk3zI(>(r5uOI@Q0&svH;W!$q0O}_W~dmxn6HKlG~3;TWA&mIC3;v2(#cEN$%ByK9N z$9kNfzQXTzmA2?`qGjHe;hYuj!|a)grKh~F;VN8K-%RbC6S($MT*9lm|H#8?qMOB? zvZGP{>R_)$EO+ZLg(khjO{xF681B}vkDh4X3-B$n%Cg$quUL~13;2@@mKVDSrv|n-o3vA+zf}7KVA<=@kCYDD%j1q zS*_$=;FZvdsw7c|euY+pU=4YCsdl%Xq*>kymxdqiyBEFKtg2s?L%=s1EK!v1N{v&9 z=Vb{GsC-lSU>2RT{i?^2*5As^DaEFhb(Z%kZRr(Pz_i1geqxXKpq0gOO%}xyk3a7! zJ9WKSZIF7ZcoEjH-lRQ=etZ188NA;@JtMpde>L$>u1<>2pHDZLx;G8LcxJ-V>Drc5 zXQ9B&SYGf@$*nW!JQon480}SnVsOB$PT%4P@Z%#9bAx&8&1g-++q}nQYhK?%@qKCc zxfIEf?ag_XPpx1vw!j0fC-(-^-Y$Q6a_`SaL0MDs0v28D^xIR*|0*sH?pF7e6Mj|f zOBo`CueG+C5fDm^)r+hvU^PXvarpSR$f$Oo8i^!yQ^QvKnq6nyx4#)nTOzsYS7}%J z8f9f4NjEsHJ~mn*$riTkJP~WS9DOsS#%S;5z0H3Xgt%cfvqFm&i5J@s^>v)wr51$nc0IsFB&TP)&zju>aJN?1hgO`WWM zSG38)Ls@Z%va>DDBBt6R4c3*PUidCLl--Fib~j}*JBVN?X$hrIth?Xc)Ll1U{+Xcc z0=7K<6=ST&_RQuFziJ}XUwf%uJj~Nup+g4}Ceu=sP$J`)>3-cwc|M%}3v0t>V97Gk zsb&o%&RX+W0a|G4@?q||4vaAQd^+Z51GRl^`_s4EwCkFusa*cE7XrOQ+AIG$f-7i+Dl)&`dKYQ7tQ&I1R?@7!JE=!{DCnxlFK@eU9l z@_omS`KBkyDze%G`HJmXm=0V}^v*~uQr*mVbga@x^?l{5g-(OJ*w|zQMa^b*IvY@z zecT)q*npVrlB6-Y3}FPN`S{P>9K5Vn%YeL18z)ZBZR13WTi*Uz(V#kObMPzn?6O;E zgez{ZZq0j6jUq77^^d7-pkKESO#ib5 zvpV#Ucz*Vw7ztNB;c2&Ab3nvF;6#S*vRQUq$K)bJ6TMo|F@fDYUbyLV7k(AHYh5_fS*|#_^#Etm^brH7e;!mQQALt-1h-$xW9GUz` zd$(yg3Mj~n%A`uW)nB=G`|A@v9d;boIY!Hk|B(C3mvM8L}UvWvakRoQKVR`Fakqos_QUFH}kr~)s9Nu zglTEec(3hC7)QN-En!U4AU+z`cbJ#C-GvC9$NcbNHcJk9y9~B(VgzRdG&(WroEB?1~(I;G8(g&NH3z{^%^& zd21)r+;I1BB(yJX0C7`hTYP)#B7~!9?7?AG4j)v+afGd|XLB{bgPBX|${ba;2pFlc zS~j%3X>Si>!NUUkf*4^VSt^mU;Y~gyzjpS4Aw^Yh&`PdOf(b}<;T2j|)?{rZzS>7h zKeJM_gF=~z`apfXFkEstkhaqc&6{}vT9mJ+9&K|T7K;UAn&uDcw+G$3*%jbrJx^PH z7p>?}UN5*Fxg>DSFt|;0DtnG?r;!kn%SPpT7HbkC@S`u;mBVK5GAW|RFMi3yT5KE* zc2KSPXYYK{^zHi_cc1-h_3)fYl#~ro7F<7`2l>!p6ir6E&JYX3jbo^7uM(@?lS9_h zKpupPt3o=lf&pZywdJSSt1KB?xA%N2vnWUEJ39+^KD*ecU<90Y>NkYaj|^iItNOlt zRwh>dh>sB#Kz!GmpIB-`H(t&|Np%PzLY3>o3BKA9M;&{<>t!9S92tkr0CYK)aLOGA;VwD+9C1*{W*P4rvR=aElKmwzRAi z|6aW8Qv1x*6^W4na+Lk$;dAIpuS#V9aKExx*d12Oe(LXuJe!V~6N}JpeLOM;uGTnI zukWtC!S6<{G%2@>=DlnCj#u`L*FPQkB|*3f+do4dqIs5&5=O5R)D|3-&i~Yk4Kie+`Xc}|X{CSemo8f!`G3l${pfw&L zJ(Az74k+_hE;YaPr3Bnre5IDTo~lIi2Bb1`g)t9m#Rxc}Wwn_Fq_qMFvdwwD!`r5i z9?9$$9GbSj9d(>!@?BE&UuJxD+3(3~r}1X)?ry=HBIZZ@7AB!E9zg9UNeU zvsc2I7@ueyb|4wk8~Y9^%FP6GPrjAIR)< zxxIdBKlC%bM8d_;(IVqy;6EC`Kk|21%*K!->zHA-l4|@?)*F_N@q~elp#2FSc5vD3(X7$(o(x=SV?;0P!m@;Bw_=olT zc92)oS4DWB*!#bkpNPZt)eV=#24N=xQ$sGkad6*N$T60bSZTnwS+}$-==?s_flQT?a7VJciL#j}~ zy2Q3XbWdP5!%}TEudB9f!<)*Rqnkf+?{9vhuT~{yxx0UkxM)|rI{qyi5R)9%Q?oHb zi%^HPJFI7B+4%OjZ}r3|93`#H8+73B91XGN2X?z;r2E*EVTc%|06O~gG}w3 z!tLuL*5w|cgmLJEO2AwPKh8$Q(I?KwoD~=mEHoxSd_x|55lm%=!7Sn{?)NUcC;%A^fO=Qh2yb zKaz7Y)YH4)WIimHt>z)p)WSH5vUSdGs&0c4BPa!9Jo~YC){k;-|LPwFK>u*CtQIoJXb1{psk(k5?ZmxM~_vDy}PNLZ7KY~GG zWW22NDa2m^Qb#}cmCR6fkWvb>&`~ydKvePNe5RlT7t_(H7$stZIg!Xh-EuMq%rTt; zX`KiHUAM%{z}?MX#Jii1=X~4ntY;~h6zHpC-q^@P9)j4A(I(mEJJ%t4YW_I{7+_{f z-H;+FT|91UcJ2I3BmL$)KM)ZLA>|hbIpfN_7};crZ=wZcO%nt&JjmKZX9*MKiN6g+ zM(K1mvdWa{a{S?!1}qmk2j5Uj)#k%0k5mHoI~`gv?Va#Y%E0gU=g{{fV-zM~?#iG~ zroNTmctp)^!#GNB!P|RypM+)Z#VVN%=l7r4W@egwC4d~0P2h$GZuR%}i=!T75W4a| zM;No6M5vDDjGsZG*um4{c|ucV+Z2h4L$3w;>%IC2{|sH$-Xy8}_?Zg<1XsK=Xkg2$WuVqh-OA+Vn@HdMcEYjQH*nLh5inf zBhRu2=+HEoUc`d;3mg_qSQ|X-XR~WP7ui)6i*1Db2gtai?x)1V=MW$|gA8s@7nur) zr%!Cil|&=VozBpV@@jP07Nf|>G=kRU?`nI&H}l18?0LIE8E;8`7~u<-MeAP8?<9l%cA?j}ny9_yR~wuiCiPPsN}`AF?)+vJdKZCST3Y%zwmV4K z)HVJ#pPL&mELY|yTu6J2M^DI*@x}!2Co5>^t_Tw4B8T%bsx4uFjT;dCuUgE@4sLT^ z!kRR7v-?lb8}oH!Ke4dy($=6=em9W#c6}z-8N*HVWxoVY`51U6+P;yxlPO_4JBp;y zm1h@cTlg)$+F43oHP5yUXq}WaeLXF;jN`9Za+{t zU8iTQbJ(Ebn#ran-E9g_vCGv6?}%F-j><_}y+F zTjt5lY&oghGzG_W#@t(e@>@aZ&B`~<%+aD3I$@<7sN?sVfm=Tlob)nXt0v@Dt|)+# zEBYid_eHiVS|l{H!`_8x8`Ac^X9jMcUCr_-XFz&mAeg{a9Y_)n)EAlnLeYL71Ft26 zQV6kd)>0`3wi5#hF|*Qv26^uvy6cu|;YXLaR1|r4QN=})SJbp<;XE0i&xWeFz}rqI zi%O93P&oLK=FM10;EGtfLuUwoBX zz+pT4>Od>tY4p)IQ%ac3UT8Q=PmoVj_@Bq6)BbD8el)VZ-L>J~4MnMQUe~SxI-XO~ zv34IfUI&tiu>M6qHXOP!eTB5eSklK&JGT-8Qc9YJ>?Pb3wI&3gl76~EH+%DxZ$K)r z^e|m@M8GlsX9792jWaai(V*q2$U>+An<&?zUb8~BR^iIPq^&FOy)Ix z_Zq1cof}S~aGGJlS-6wrXMAxDw%zniA`M$EHXe~8CcY!ZfHxCRj7P$~--@nH|B%Ng z&OTHv9Vm!`VO`%jkT?<={`URm^V~=ZSe)Py4S(p1F$<`y-RZ+F5?Pp>3i`8Sj5!n~ z|4Rpwtd%6 zJ86$Kw#Vp}+_&8y>Yr!*H`=K4)8yUlNoD8U3y$(;hqJSb3x~r2CMHzex>$c$J4l z9eway#=&egx!sqhf=GfxBzwXACzl1i*H*I9T;c}9$(Rp-S>^5_4B}E8qK_WiL=)@Q zl0q10!aFXkUDp!0_p9L3m3}-7bR*8=JbS);%NRaIEPEaoRPBY$Vd?Z-Gw5sZ!ZGt{ zK7u7id_oEOTPI2F7bR-2cocl*w%+_JBkk>KWLV;}T!iY^kv-p_0)B`*1qk*L=vc3p z4upX|)%uUP*Qez7y-b;>&ZP~(1r)?~wGz6&oAZ==Z|HgcRl--B_mHF$7h7p9wVBDN zF$>ggVGgv^10{2L;3a!-jDwU};9$R@N@m60t3(T@>YL1LbO~Q`y~&2M+qAL9t!(7# zTjLni`nE+<)VlW*kp|NNQvCdEiJkj!%MxvtUEP1q$XE+;50mg&H8qzTs^TDuXv2vy zx_{A?CXWr3yDF_zCpt#N=DJws_kc>aTRPO(Q_zmotHk4KJ6dpE>C)b}5?S0X zvQ1}QKHh{`t6Qy=z0M3~yI{?1E*r^O*Bs+XLR5e(ua*3`V6l2{Tw|?W=xMb%?)xtl z#pDQtq;T&PulyHYX_X_MVpA}YbyZ$UfsVfj*)C^_i$XT0B}rSA3l7feW=Bt}RZd_| zVPP?Qx3<%qL3PRr$@r0A`~G#loB0WeaIP~irB@h+m*R#2f&@ednrryD+XuskqUyH( z1BP6|k^uPFJ5f~r6J}O0{BK{_JxZ`;I8%(2zDFcrEINqhOIQX7R{)WdS?A6c2kLEv zBAJs9zp3L;&?52e8(=d0_XDSgkvZJZuob}kGh(hXRlKi38wtr}*JJdm-*hH{F?5$?ABKn66K$@q_Gyq

Zu;eNYSJt~?-*plYX??)PcD@KWJo@J5C%vAzW4dR)NY_8%WZ56j zKON=go;24RMK|_lUi|zt0(SK-26{2q+~S5t$$E9&)X~SLa|Th4_fDK9HWj}vThHZm zn5~y(+dIL7k$ci^Q#BvieCkO}(ztB=6CrU8mXqUQM;3FefOM zS{JP8M#AcL#}fTJ@xf%`;qJnp&ppOIxQX@cuj$308=!BC-IWXmfxe>yO)!qzVhspd zKy>X~y9M^#E4OR3uVY43)d{oLZHsojDG1^1%mg^TFuytQ{6eHVeC_h;qnt}{&ggk_ zk8g70ixE8ILkIeK2GFN&aqw_5R^r>8-o~*C3q;d3+R{#J;%RmFib2h#rBpXrr651y z!86NUBFMNHwW+Ot3iEZ7KYgZsHq!@!+x_{U6JR6yGo+=#_*G}LZH24?zXEYO zwLR+eLBFmUl#m!YXRI^hjY(I)@GJJAk?|HDxB<8t5H`h31@08*>1V3OQ;WW-*Unu< zFs^c%S>))K5#lMFYbAUP3Hj}7!MUY0LvJ-J+Pi#=S>Iqo`3N!`|oFd(kjXCcCTZ=H>;Bdq$2TcRh~LhkDTYYhaSpW#0=<;b$l(yuSG z(V#K`zm;sHPbpC#>>A}Z@$f?{y@EH`AG1iLQ-+6q!YJ%RXOWkK4i}9dtE$0C^9&pl z>q!O5cRSPV4X%r@DU<~#Jdszpdw zH-QUPbb|i>$lhM3HM2;3B2f?HwR$@lH0|(VgV`Ki^=Lp6as#OIi^D4j^8lReQc4l> z>-=?un=>{^gP`-J>eiSFx{4OHZ4m=(1Q=U6{M1C?<{b0grfpni(7uVZ=aO!H?e1nF zKO_=8{EF7ibjVHaUjY=O)}J^vv6P!gwJRx2Ul%v8YkF9f-Qq=lE&PaqBhJd5+{*@N z!0Zbdz8enf9Onh?EG7BFlD}DMJ~XpErXXtc?F7W@*9|=<7SVCZjNTjxOP1|+$qo}K zn`8(+SY{uAFMKT*gHDLxmDVik8s_a;`AgpT z1sbtjZLO6fa=A`PU6;R|cESAfgoS;Y3}R(Sv1VR9Ahsje*brMA53HTCeHxDh8$=>1eFBQNs(8IEY z^v=huMX$w>^faLC=>{2b8y65}%NuEd-xm(8S|Z2kpALjDFJ@Rs`2$2NLCGU4=y_lI^g3di}>4bs<< z+Z!AzBrWV!O4Nj-FzZi-gXzZO@e029LAQWlC2Kc|o66}iCz9uU)LO|N!w~-=1A)0& zof3LjjtD5KUHQx6xv!<@;9pM&C&!)vXT`DK z_D1A@OBhO+`&ckS1;;<0XX*sb#;h&v$DaB%S9|z}An^y$fk4A4y0L;P(tLY^6^X3V zwXYk?GjJEa4bEoRuIE9@PnDKW0MFbTu+b=NT4f4bKri*D_HK1#2DAMF5#Lp}cOWg! zgLebsGg44)hx?TJ4its#@$gVwN1qsCC4pd;Ry-a&^NZ}g%_0+xVG3V_3qIW2anu6D$F_m4H% zf9nquQhU^y1#PF{Yv!*zeDvfc1NL3Y|FoyRJ9f-Zw<4m}U`w6XQR1t$p9yE|`jO3J z)c1Q;8;u95)&_Ig*1y*W4YWXF#BSrCaY`y^wEf34u%fh0`;-V(>PqcmLh368hQDku zN%3LJi5l!<|M_TnZdfZXsE&dC@*S9k_m$zl%3P+v@D102I4yz4=4d=dnCN50q=%EG z=BEXIXysU(1wvZ)=3}hO32=G*j7sD1B2xm}-3=D50JdnQ@_ zO*#U0ptAJtdd!#Yy;rqHFYb|L#E2_TszCPDWN^v9SHW{4SC_-m855`!2 z0q4v#KV(@{yq1wa8N!AKw}RL7br+~5-fIuNNP`one{9fNC<=3`UJ%Oz z3aSkdEtILu4EvJfMek2f{)*EW5aCBUP67MtuU?dxC9i6&_$){Z2*Ktu5N@Fh_j4A1 zJTJPT{5I;n=NHC>Wft+8fi$<{iw*&I4{s}9N2B~_IXJpbKb}5%No77ZM^Ges`@(z@ zC?0~TF2A%1i;&~$4#9xO@HfJzC0`G?*Te0?V));+`z+K8cc@(5`<1GXqd=>JOhzQ$ z8Aq~%0Ghm(S%oS-*w<)eOc;HvdcdtHs$oDhuXl4%bgi)}Xj`aZ<}L?!_sl?#QhQL= z0RXPey#l|BfVT@NP61KtON}l240@iP<;Cx4VvMk{9uvcOVZ|8%0+#ddhGVh8vyJit zRMjawNUpWMVgQI!b(1!x{H_;zTtGPFFf-kHB*gmcdW@t0^8uPopb3IzT^7o{B>qZ-og-opKQGvqJin}dSSGp2RZiYHm_DS3lP1%P&;RSdvlCU zI+K}M$JJ%{uE==Q(Tb3b*SLfnRKb5r|i&Dx}-{p&)x$Jb}7LoG8y{ zeHzETYH3k`GMdn7lDsQlAMPw8A;&tABq@kxB~aA6vx>=9F`x$nNLXg3?RRO_lGd zCcI5oq_sY+h5#PdA1`H-=a&;2l&Mjpi(%2sn(U)om!U*7>S#SKhZgJSE;_lb9{U8(_7u7&$JLtKV|af z^}7^~5e{C2wQFFr%3afaXNg4xJV~tb(I5-AsARgL_b1g0GF?M%^=$DWkK)`DHP?lZ zUvsFR@#6g6QaJgwtB03nr?`WT9G@U`)-Xm-RAtvOGTJCjYWsuFZ|!OO6ZSK@aLhJn zVJ(Ynx8uFKtYfaE7?{V>#Kcbj1Mt%R$o>-`<4{{eE&utltXbf2uO-*IY58xI#ILV6 zm~M!*XbGR5CDNS}S7UrZK0M+kKK??x0i;yUjEd_G-Luks>3vX|{hf~}LYOsT7NmbY zXRL4GGjZvz=gvOl^IZ;XGbkF*#P4DWPIsBl?q9Dt&Bw6M))K*+)!bqzh6#GL^Ozqd zs{U+h$KY8@f?(!jCzNe!6%GmyKn(dgu2?aVviM^@VfO7DGj23tn zQd8lcMXqndB3KUTFiLR5Q^1AE9Xwk*OO9&hUHS8i^$||0bVSi@hO&Q`Mw+30Wm48T zFPKn6Ky^Ibsy-HM=}9^!em%MfH-J|tKLmlZay5hAA6@3UIKaSknjtxh{W;v{HK5HCOaPU3HR>WeG>w4X0N;io9Mg1;OuF2)=Q2dLH(SAyY=QN7ZW zFbOlLdRD#rn98!h{Tjv6lJopJ2V#>W`snXZX|y}B?)b?ct(SF4Y%|~tBoMAx<#UXX zAq;$LTyaUhY}?&Bec{z9nTfkw!gp9|UtLqASm~=S=15MNuODoTD_1{NY{x?<4@Ghh zJGP|G^0rzP{Cs=Xp%z>sgbx}OZ`)05x|1JhjDPMR08V9pJS)_nV>i5>g40U5q9km%&CwS-|mx!G2kE~PmT6$t!`kQ*-mEZuga0gp5uS#kb zUqZM~j`R%O&wb@q)<24D;uuWZJ2=qZvI&M)1cmyjYX1!X3+ULdX6_;MkZZJzoE886?jJTLlZ!xRkNkLs4*<5xw*<=#u$ zV;!J`(XZ4i?0xHtyRLj-(jV-wR+o)>pnAV!%yl+w*=;nF(@7$b=9}xldgMWo9PeHh zBG&Z%xG>WXrcJFboL<0!i`rgt;s=(zIpnh%<8QuoXVf`k4*O!{r6#{o>DP`%gS+h0 z>Q50Y+;h4ktQs@-h#NvLdunEOQz1F7K@RKplXG1T$yy*VnVT%}B67@I3(hj>0)auI zUxlP}#Lo!%Ua8hS{qyVHxdi4wuRkgLs%l4;hiPjJ9$kt&!xrbx0J#r>!h}3g`~Iu-GVIIYo2BccXgKkZ zk;V|U9lRTKm}^;RBiR%Q>qmDzb*@kF<`BI#73ZEAAlF&_Qk>;nn}kjUki+EnYo3X} zQ;l~qfK-ZukT`Bx54?DFKwEA=O#X^VJ@pIlpX$f1eV#oP4l43}JfV+r$|iQkP8^%PZY3aDMt!$NJO>KhQW1fm=22EXk(&%?YtF*e$oK zD$5=Deiv{R<8u=&OOka?;FXgJh?0LpQw95o=T&i8pxDfr} zj6}qWJ-@Kb#djNIeN`#0TXvcB0qt^7e91ya>}9RQ^O>9#P{|n(!#ifGFIvH4SA8id zJ2qZD9CgdD?ZYCc5GfMe3hI}$lDi1&*t9;YOv{_oZUNOflc-z4ML`ESz+#EM98J0o z8fa?VTT-%WJC2blxa^YE;6TpTOTBfRoi_K|{_Uyg_Z;LWmlU53ls*#qW5F0>VKfO3 zJSZ`*e?$pgE2hTl$5}iRIh1j!+?}DyNe!2Uw};K&uBOAB#Y}p`4wwgOrhReyKxhf_ zcBb0>DMuFdZM!qZ0zuguFxQPi;DlgCWxCQU@9cJXy(AsEw^-?^ejNw>!gw;vp;i!j zIU^utrw@$ri!zUMkB577d=eO;Hw9b%xv41A=)dQ3VLB1Do7*FedK5d`XFX=FowFF# z`LW(dRC>}h*k^fTUvaLtkq-MBg`wdShcc|xuFOF;ZpWIczBYdy^g2Ck)AoRSuH^{B zPwb>!uE?5B+`NDH_;}Kkb-<&;cjB(OQ_>ogS8PJKgF>v|_@bU8eg|t68M5?8c#{># z1{SI1CI}r}eB=(RUlY0zsaba=Xo`HjFN0=S;r@9YY5C^{-YflHli>uAF=I!;awJ^O zhBJ3c_saDjtbBvjhmtO>ODOQIhLiL72!DXoyt|W?nd5;G9+lv&JTaqtl#gJtXLI6i z#Or4DfQDqY`BbW&aL*@4l&`gd5b0+x~V71NRtgm;ZPLmrcNc}O;BH`i%! zdK(EDPV(ziwM||RET62-Z3AmXKK!TLoGLt=?wYoF<<8$&6NhKeY)vMK5Vb&w`t`@s z#6QAqpw)_Sf=fZbE#(gO%cYHhGdBHmR&5ZCz{evmiCN2MqvmH|v>;C5p1)c5LpN-Q z{MV^l$^gu%dyhy%wg!!aa0-@eyh7J#F!AvTDw^UmZUzJ{D0z)Z6@lS_n@ZY?t@(z0 zY!ZCdGHNACCGvejAkkJ@nh>Sc%#$$6NsE#|Jr!(V2C|3m{k%>)GSGT=%zz-@Cw+_* z6h1tx$dFsw_ehRk;%{{8n5d%%$>LDBD(qw*tkkQU11Qx|JN#|PJJUGC2g@!&Q|ok< z2k2}H#Q>kIEFgWB=rcYF$Q0E}`{`4T@n7f17y!E$6ieEUNfgW4`3}0LV&UM@!6KV= z38yb|dk={P!qz*-T8-g6j1B?8zSm~{9?E$9ay5F&Jge9Y3L6!opoNxoB^`ZzOHQS8 zlj>K#v-HGk!BvzA8q56O9^TxE?c4FjKr@Hk<^q`s%8&YH_Q19)Pu~lX=j#3*StDv} zl7%~=@;80$`WvUm!H|uPbfFB2i5rSWDSy)^vU4|#o9gMUW=7Jkh|dl4pDrz^?gwv# zZYuswPAs-vO-}LDHyfJlkP4O5cJ8RmAM~R+kcsvNSe8^rMlS^mIG}+q-`f+QZlIvW`EEg z2W!JuEND0MQR1{ffHBL9nQa!X0HkP0@XbNq($;5i_gcn?b;PPMx^9|$C=r`9j0%V- zeyOirVIj3&QcwI8+3c+;wF-CQKsg)jV2o6|Csf_3hUE{DC1uCYo2?`EC!LW}GZdoZ zcHFBW3g2%aTG(TD(Cyq)n4fkF_T)3sSnPO9Sf@83H9PD}4}cFK6{5m}+~62WzdqIR z3AOLedom`}wb-Y0?7yUA!Y5og_})Q|4`mPAU1T;BIG_H3wPvX&*;&&|>gHlCaed3_BL?I6YQrPaduWn8NeaDysQ;X_w3jJpB%jV;WW=>PJQiIL3JA64z3 zilUObW;2gDzoob^AjLE3$=q6PK#+8u)&PzAS8=EQlGM-Pf^q|xXmH}q_Z)sz z?>#RMv90DvuV$74L@!m{)fp;;7p?q;opZi--c!@odNS<=fL`2EfsA%#C#ey(Jix&K zs_aA}fC44!lY*o?w@T$<#%+__IJD+}icuGTWU2#CQ&2W_-z?k%Pu-yOhB{876UdQGk`XJ{6%WJBe=yt6R zcF#P=&PoW2v!WTdXts0bhKmB0Kkg4lDqc*e`o1i2Zu^1h+?|n;=$y*5+m4a?<|@(7 zwSKXEh2hM6>g9;@=XAuJpqWo!7C7HuX02PlbzCOSds55z6hN!r^78sL^z_oh6(4tF zS<0Ij{{PDzPcC^s<})yA`vxOm2(Z}yw*1`Gr66VS`2Q9?-tb-^g!`}p_)yDsWMn(j zR8+Q-oX@SJCq^r5Gc@W(IF*fT)tPVJtYI7*$*FGsw|??pga>rP1B6|clSlvG=6Y1M zN`Tp0-PZh{+RmI)GP3gWo&yj6=ls&Oz<8$rlzqO9d)%bX^FPPW&a>D3?^i-S{(qOh z4g25n%)%=IUKjo|>PL)oSy3mIqd@uSKaaH0!+R5dFD(uCzj*s0&eo;M(SC`a^Xv}O z)xlDi^BVY&DyZ>QYO2qgzz+w~d}q!-x~W_5Cs4GdZ`W?H{P!yQvFCqgw>AD}TK=DI zc81yf-;&k0=MB~Gtz7%haooA)|1X}y$kTIYax-A`vV(P()2M=z9o`PI$%RqqpI>|UN5QDWd^bH^sDAG6#dM-B?oDbNRY-?@lK&s z*D8}fS)EVFM{l}%`46|lL&;?hgZT}1ImCjmzd{r@C>*Mtj>BiJJ}7)9B=KiFi<3fn zJoqE5WUeK`POFMROGo2;Nqw)e&qVGV zlbN2Lo;9WS6?e|ERj>bVIGumN4q9;ES?gWJ&zS^0v z&kTnYah$ul&1UB;!p7vQAB{+1_*bOj&J8=*gn5fMY&PpOZ#ef88a@{jk|8kVO^{dcAy^b~-H&n~5+s^H* z%*Up-Me(E}bkm)H+ClGf?-|u48?1KwM_dd8bC)O%*kfO%q^9;NZJ?Z|(`B@)=3_24 zPYw!t;=D1vZ)x=ba3MdJo>S9a-NkRZciz9&pSVD>`J1m5OH8hrZSYu6N0DFcjL#!v zL6g<;7D_8>uZ<)x*Dp^?B~!qp&HDIc!W?HJbgCJD$Vb7>vHw9<~^J zD_PPU%;!_BCl{~el&uvlgLNy9CK-|E9pS%GDKsyim&kxfc7o^MfrOJc_S&ztksA*B zj$s2RH)oi0vDVa^6^xEsZS0%-B!fNnKKjG;-(@y!$N*KKID2d0QxiLq7R(Xpx z)q+eQk&B>PlXPA^=rR7YQ(|-=VS#+e(t`#VmYg0|Tb@>Tm~wt-zragKzk>;mjrIxX zORHr(-g1NBQoN0OS?dNIeTRLxtEQ}3R!g7!I{Uh3P)l35dd3Gk$xhfw4mrc=yZz

sdYC(BC~*6XfFN7j6X4) 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 e=I#Mz0sIBVJmMzC1|z}%0000Rg4 literal 0 HcmV?d00001 diff --git a/assets/img/icon.svg b/assets/img/icon.svg new file mode 100644 index 0000000..50d17ac --- /dev/null +++ b/assets/img/icon.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/img/tablestorage.png b/assets/img/tablestorage.png new file mode 100644 index 0000000000000000000000000000000000000000..8f86ef76319004f1e48e633f0e38ccd30015dc9b GIT binary patch literal 112751 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 D9C46V literal 0 HcmV?d00001 diff --git a/changelog.html b/changelog.html new file mode 100644 index 0000000..b7cf043 --- /dev/null +++ b/changelog.html @@ -0,0 +1,540 @@ + + + + + + + + + + +Changelog | TableStorage + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+
+ + View on GitHub + + +

TableStorage

+

Repository pattern with POCO object support for storing to Azure / Cosmos DB Table Storage

+ + +
+
+ + +
+
+

Changelog

+ +

v5.1.2 (2024-01-25)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Update to latest protobuf with built-in support for DateOnly and TimeOnly #273 (@kzu)
  • +
+ +

v5.1.1 (2023-10-04)

+ +

Full Changelog

+ +

:bug: Fixed bugs:

+ +
    +
  • KeyProperties are not being persisted properly #252
  • +
  • Properly persist computed colums for same type #253 (@kzu)
  • +
+ +

v5.1.0 (2023-08-11)

+ +

Full Changelog

+ +

:twisted_rightwards_arrows: Merged:

+ +
    +
  • Remove current implementation of SponsorLink for now #244 (@kzu)
  • +
+ +

v5.0.2 (2023-08-08)

+ +

Full Changelog

+ +

v5.0.1 (2023-07-25)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Use OData type annotations to disambiguate property types when persisting #235
  • +
  • Empty query results does not throw #237 (@kzu)
  • +
+ +

v5.0.0 (2023-07-25)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • When hydrating queries for TableEntity, use native .NET types for properties #233
  • +
  • Add support for querying over TableEntityRepository #231
  • +
  • Improve persistence by annotating supported types with OData Edm #236 (@kzu)
  • +
  • When hydrating queries for TableEntity, use native .NET types for properties #234 (@kzu)
  • +
  • Add support for querying over TableEntityRepository #232 (@kzu)
  • +
+ +

v4.3.0 (2023-06-27)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Allow entity lookup from entity value #215
  • +
  • Allow entity lookup from entity value #216 (@kzu)
  • +
+ +

v4.2.1 (2023-04-17)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Allow persisting key properties as columns #198 (@kzu)
  • +
+ +

v4.2.0 (2023-03-28)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Add SponsorLink to ensure ongoing development and support #193 (@kzu)
  • +
+ +

:twisted_rightwards_arrows: Merged:

+ +
    +
  • Switch to Polysharp for the NS2 polyfills #194 (@kzu)
  • +
+ +

v4.1.3 (2023-01-20)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Add support for TableConnection overload for DocumentRepository #173 (@kzu)
  • +
  • As documented [PartitionKey], honor it at class level #172 (@kzu)
  • +
  • Allow persistence of entity properties as columns in document #171 (@kzu)
  • +
  • Allow retrieving the table client from the connection #165 (@kzu)
  • +
+ +

:bug: Fixed bugs:

+ +
    +
  • Update mode on table partition should set table repository mode #174 (@kzu)
  • +
+ +

v4.1.2 (2023-01-16)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Add TableConnection overloads for TableRepository factory methods #161
  • +
  • Allow reusing/caching the combination of CloudStorageAccount and TableClient #155
  • +
  • Provide comprehensive readmes for all packages #164 (@kzu)
  • +
  • Add TableConnection overloads for TableRepository factory methods #162 (@kzu)
  • +
  • Allow creating partitions from the same table connection #156 (@kzu)
  • +
+ +

:twisted_rightwards_arrows: Merged:

+ +
    +
  • ⛙ ⬆️ Bump dependencies #158 (@github-actions[bot])
  • +
+ +

v4.0.0 (2022-08-26)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Improve dynamic entity support by exposing TableEntity directly #127
  • +
+ +

v4.0.0-rc.1 (2022-08-15)

+ +

Full Changelog

+ +

v4.0.0-rc (2022-08-15)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Improve dynamic entity support by exposing TableEntity directly #128 (@kzu)
  • +
+ +

:twisted_rightwards_arrows: Merged:

+ +
    +
  • +M▼ includes #123 (@github-actions[bot])
  • +
  • +M▼ includes #117 (@github-actions[bot])
  • +
+ +

v4.0.0-beta (2022-05-17)

+ +

Full Changelog

+ +

:bug: Fixed bugs:

+ +
    +
  • If partition or row key expressions have complex lambda, property name should be null #100
  • +
+ +

:twisted_rightwards_arrows: Merged:

+ +
    +
  • Reduce scope of key property lookup to direct property lambda #101 (@kzu)
  • +
+ +

v4.0.0-alpha (2022-05-04)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Upgrade to latest Azure v12 SDK #89 (@kzu)
  • +
+ +

:hammer: Other:

+ +
    +
  • Upgrade to latest Azure v12 SDK #88
  • +
  • Add support for DateOnly #78
  • +
+ +

:twisted_rightwards_arrows: Merged:

+ +
    +
  • Fix test filter for theory tests #91 (@kzu)
  • +
  • Address warnings #90 (@kzu)
  • +
+ +

v3.2.0 (2021-12-13)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Add support for DateOnly #79 (@kzu)
  • +
+ +

v3.1.1 (2021-08-29)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Add API docs for all packages #64
  • +
+ +

:twisted_rightwards_arrows: Merged:

+ +
    +
  • Add missing API docs and fix all docs warnings #65 (@kzu)
  • +
+ +

v3.1.0 (2021-08-13)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Support Timestamp property in POCO entities #60
  • +
+ +

:twisted_rightwards_arrows: Merged:

+ +
    +
  • Support Timestamp property in POCO entities #61 (@kzu)
  • +
+ +

v3.0.3 (2021-07-28)

+ +

Full Changelog

+ +

:bug: Fixed bugs:

+ +
    +
  • Azure Functions fails with SocketException sometimes when accessing table #58
  • +
+ +

v3.0.2 (2021-07-01)

+ +

Full Changelog

+ +

:bug: Fixed bugs:

+ +
    +
  • ContinuationToken not properly used for enumerating all entities #53
  • +
+ +

v3.0.1 (2021-07-01)

+ +

Full Changelog

+ +

:bug: Fixed bugs:

+ +
    +
  • Remove Create factory methods that cause ambiguous matches #52
  • +
+ +

v3.0.0 (2021-07-01)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Don’t fail if deleting non-existent entity, return false instead #50
  • +
  • Switch from TableEntity to ITableEntity in the non-generic repository for flexibility #48
  • +
  • For PutAsync, allow selecting Replace vs Merge behavior #46
  • +
  • When deleting entities, return boolean status for success/failure #51 (@kzu)
  • +
  • Allow additional properties in table entity repository #49 (@kzu)
  • +
  • Support merge strategy when updating entities #47 (@kzu)
  • +
+ +

:hammer: Other:

+ +
    +
  • Document usage of [Browsable(false)] to skip persistence #45
  • +
+ +

v2.0.2 (2021-06-23)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Allow annotating record constructor parameters with PartitionKey/RowKey #43
  • +
+ +

:twisted_rightwards_arrows: Merged:

+ +
    +
  • Add support for record constructor parameter annotations #44 (@kzu)
  • +
+ +

v2.0.1 (2021-06-17)

+ +

Full Changelog

+ +

v2.0.1-rc (2021-06-17)

+ +

Full Changelog

+ +

v2.0.1-beta (2021-06-17)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Include readme in package #39
  • +
+ +

v2.0.0 (2021-06-16)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Add support for enhanced filtering for document-based repositories #37
  • +
  • Add support for filtering by enum property types #35
  • +
  • Add support for querying #33
  • +
  • Allow passing serialization options for MessagePack serializer #32
  • +
  • Switch default built-in serializer to System.Text.Json #30
  • +
  • Make Document/Entity default table names plural #28
  • +
  • Don’t duplicate PartitionKey/RowKey properties in storage #26
  • +
+ +

:twisted_rightwards_arrows: Merged:

+ +
    +
  • Add support for enhanced filtering for document-based repo #38 (@kzu)
  • +
  • Add support for filtering by enum property types #36 (@kzu)
  • +
  • Add support for querying with LINQ and expressions #34 (@kzu)
  • +
  • Switch default built-in serializer to System.Text.Json #31 (@kzu)
  • +
  • Make Document/Entity default table names plural #29 (@kzu)
  • +
  • Don’t duplicate PartitionKey/RowKey properties in storage #27 (@kzu)
  • +
+ +

v1.3.0 (2021-05-31)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Allow persisting entities as documents instead of individual columns #24
  • +
  • Avoid creating a separate Task for lazily initialization of CloudTable #23
  • +
  • No need to use DynamicTableEntity when deleting #21
  • +
  • When doing a PutAsync, use InsertOrMerge instead of InsertOrReplace #20
  • +
  • Allow persisting entities as documents #25 (@kzu)
  • +
+ +

:bug: Fixed bugs:

+ +
    +
  • Inconsistent default partition name in TablePartition.Create #22
  • +
+ +

v1.2.1 (2021-05-29)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Add support for TableEntity via ITableRepository and ITablePartition APIs #18
  • +
+ +

v1.2.0 (2021-05-26)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Add an AttributedTableRepository<T> for easy consumption in DI scenarios #16
  • +
+ +

v1.1.1 (2021-05-26)

+ +

Full Changelog

+ +

:bug: Fixed bugs:

+ +
    +
  • Fix usage in package description #15
  • +
+ +

v1.1.0 (2021-05-26)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Force factory method usage for default implementations #14
  • +
  • Apply factory method defaults to TableRepository/TablePartition constructors #13
  • +
+ +

v1.0.4 (2021-05-16)

+ +

Full Changelog

+ +

:sparkles: Implemented enhancements:

+ +
    +
  • Make TableRepository<T>/TablePartition<T> public #10
  • +
+ +

v1.0.3 (2021-05-15)

+ +

Full Changelog

+ +

v1.0.2 (2021-05-10)

+ +

Full Changelog

+ +

v1.0.1 (2021-05-07)

+ +

Full Changelog

+ +

v1.0.0 (2021-05-07)

+ +

Full Changelog

+ +

v1.0.0-rc (2021-05-07)

+ +

Full Changelog

+ +

:twisted_rightwards_arrows: Merged:

+ +
    +
  • Add SourceLink to get repo/pdb linking #3 (@kzu)
  • +
+ +

v1.0.0-beta (2021-05-05)

+ +

Full Changelog

+ +

v1.0.0-alpha (2021-05-05)

+ +

Full Changelog

+ +

* This Changelog was automatically generated by github_changelog_generator

+ +
+
+ + + + + diff --git a/changelog.md b/changelog.md new file mode 100644 index 0000000..e780123 --- /dev/null +++ b/changelog.md @@ -0,0 +1,383 @@ +# Changelog + +## [v5.1.2](https://github.com/devlooped/TableStorage/tree/v5.1.2) (2024-01-25) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v5.1.1...v5.1.2) + +:sparkles: Implemented enhancements: + +- Update to latest protobuf with built-in support for DateOnly and TimeOnly [\#273](https://github.com/devlooped/TableStorage/pull/273) (@kzu) + +## [v5.1.1](https://github.com/devlooped/TableStorage/tree/v5.1.1) (2023-10-04) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v5.1.0...v5.1.1) + +:bug: Fixed bugs: + +- KeyProperties are not being persisted properly [\#252](https://github.com/devlooped/TableStorage/issues/252) +- Properly persist computed colums for same type [\#253](https://github.com/devlooped/TableStorage/pull/253) (@kzu) + +## [v5.1.0](https://github.com/devlooped/TableStorage/tree/v5.1.0) (2023-08-11) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v5.0.2...v5.1.0) + +:twisted_rightwards_arrows: Merged: + +- Remove current implementation of SponsorLink for now [\#244](https://github.com/devlooped/TableStorage/pull/244) (@kzu) + +## [v5.0.2](https://github.com/devlooped/TableStorage/tree/v5.0.2) (2023-08-08) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v5.0.1...v5.0.2) + +## [v5.0.1](https://github.com/devlooped/TableStorage/tree/v5.0.1) (2023-07-25) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v5.0.0...v5.0.1) + +:sparkles: Implemented enhancements: + +- Use OData type annotations to disambiguate property types when persisting [\#235](https://github.com/devlooped/TableStorage/issues/235) +- Empty query results does not throw [\#237](https://github.com/devlooped/TableStorage/pull/237) (@kzu) + +## [v5.0.0](https://github.com/devlooped/TableStorage/tree/v5.0.0) (2023-07-25) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v4.3.0...v5.0.0) + +:sparkles: Implemented enhancements: + +- When hydrating queries for TableEntity, use native .NET types for properties [\#233](https://github.com/devlooped/TableStorage/issues/233) +- Add support for querying over TableEntityRepository [\#231](https://github.com/devlooped/TableStorage/issues/231) +- Improve persistence by annotating supported types with OData Edm [\#236](https://github.com/devlooped/TableStorage/pull/236) (@kzu) +- When hydrating queries for TableEntity, use native .NET types for properties [\#234](https://github.com/devlooped/TableStorage/pull/234) (@kzu) +- Add support for querying over TableEntityRepository [\#232](https://github.com/devlooped/TableStorage/pull/232) (@kzu) + +## [v4.3.0](https://github.com/devlooped/TableStorage/tree/v4.3.0) (2023-06-27) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v4.2.1...v4.3.0) + +:sparkles: Implemented enhancements: + +- Allow entity lookup from entity value [\#215](https://github.com/devlooped/TableStorage/issues/215) +- Allow entity lookup from entity value [\#216](https://github.com/devlooped/TableStorage/pull/216) (@kzu) + +## [v4.2.1](https://github.com/devlooped/TableStorage/tree/v4.2.1) (2023-04-17) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v4.2.0...v4.2.1) + +:sparkles: Implemented enhancements: + +- Allow persisting key properties as columns [\#198](https://github.com/devlooped/TableStorage/pull/198) (@kzu) + +## [v4.2.0](https://github.com/devlooped/TableStorage/tree/v4.2.0) (2023-03-28) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v4.1.3...v4.2.0) + +:sparkles: Implemented enhancements: + +- Add SponsorLink to ensure ongoing development and support [\#193](https://github.com/devlooped/TableStorage/pull/193) (@kzu) + +:twisted_rightwards_arrows: Merged: + +- Switch to Polysharp for the NS2 polyfills [\#194](https://github.com/devlooped/TableStorage/pull/194) (@kzu) + +## [v4.1.3](https://github.com/devlooped/TableStorage/tree/v4.1.3) (2023-01-20) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v4.1.2...v4.1.3) + +:sparkles: Implemented enhancements: + +- Add support for TableConnection overload for DocumentRepository [\#173](https://github.com/devlooped/TableStorage/pull/173) (@kzu) +- As documented \[PartitionKey\], honor it at class level [\#172](https://github.com/devlooped/TableStorage/pull/172) (@kzu) +- Allow persistence of entity properties as columns in document [\#171](https://github.com/devlooped/TableStorage/pull/171) (@kzu) +- Allow retrieving the table client from the connection [\#165](https://github.com/devlooped/TableStorage/pull/165) (@kzu) + +:bug: Fixed bugs: + +- Update mode on table partition should set table repository mode [\#174](https://github.com/devlooped/TableStorage/pull/174) (@kzu) + +## [v4.1.2](https://github.com/devlooped/TableStorage/tree/v4.1.2) (2023-01-16) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v4.0.0...v4.1.2) + +:sparkles: Implemented enhancements: + +- Add TableConnection overloads for TableRepository factory methods [\#161](https://github.com/devlooped/TableStorage/issues/161) +- Allow reusing/caching the combination of CloudStorageAccount and TableClient [\#155](https://github.com/devlooped/TableStorage/issues/155) +- Provide comprehensive readmes for all packages [\#164](https://github.com/devlooped/TableStorage/pull/164) (@kzu) +- Add TableConnection overloads for TableRepository factory methods [\#162](https://github.com/devlooped/TableStorage/pull/162) (@kzu) +- Allow creating partitions from the same table connection [\#156](https://github.com/devlooped/TableStorage/pull/156) (@kzu) + +:twisted_rightwards_arrows: Merged: + +- ⛙ ⬆️ Bump dependencies [\#158](https://github.com/devlooped/TableStorage/pull/158) (@github-actions[bot]) + +## [v4.0.0](https://github.com/devlooped/TableStorage/tree/v4.0.0) (2022-08-26) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v4.0.0-rc.1...v4.0.0) + +:sparkles: Implemented enhancements: + +- Improve dynamic entity support by exposing TableEntity directly [\#127](https://github.com/devlooped/TableStorage/issues/127) + +## [v4.0.0-rc.1](https://github.com/devlooped/TableStorage/tree/v4.0.0-rc.1) (2022-08-15) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v4.0.0-rc...v4.0.0-rc.1) + +## [v4.0.0-rc](https://github.com/devlooped/TableStorage/tree/v4.0.0-rc) (2022-08-15) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v4.0.0-beta...v4.0.0-rc) + +:sparkles: Implemented enhancements: + +- Improve dynamic entity support by exposing TableEntity directly [\#128](https://github.com/devlooped/TableStorage/pull/128) (@kzu) + +:twisted_rightwards_arrows: Merged: + +- +M▼ includes [\#123](https://github.com/devlooped/TableStorage/pull/123) (@github-actions[bot]) +- +M▼ includes [\#117](https://github.com/devlooped/TableStorage/pull/117) (@github-actions[bot]) + +## [v4.0.0-beta](https://github.com/devlooped/TableStorage/tree/v4.0.0-beta) (2022-05-17) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v4.0.0-alpha...v4.0.0-beta) + +:bug: Fixed bugs: + +- If partition or row key expressions have complex lambda, property name should be null [\#100](https://github.com/devlooped/TableStorage/issues/100) + +:twisted_rightwards_arrows: Merged: + +- Reduce scope of key property lookup to direct property lambda [\#101](https://github.com/devlooped/TableStorage/pull/101) (@kzu) + +## [v4.0.0-alpha](https://github.com/devlooped/TableStorage/tree/v4.0.0-alpha) (2022-05-04) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v3.2.0...v4.0.0-alpha) + +:sparkles: Implemented enhancements: + +- Upgrade to latest Azure v12 SDK [\#89](https://github.com/devlooped/TableStorage/pull/89) (@kzu) + +:hammer: Other: + +- Upgrade to latest Azure v12 SDK [\#88](https://github.com/devlooped/TableStorage/issues/88) +- Add support for DateOnly [\#78](https://github.com/devlooped/TableStorage/issues/78) + +:twisted_rightwards_arrows: Merged: + +- Fix test filter for theory tests [\#91](https://github.com/devlooped/TableStorage/pull/91) (@kzu) +- Address warnings [\#90](https://github.com/devlooped/TableStorage/pull/90) (@kzu) + +## [v3.2.0](https://github.com/devlooped/TableStorage/tree/v3.2.0) (2021-12-13) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v3.1.1...v3.2.0) + +:sparkles: Implemented enhancements: + +- Add support for DateOnly [\#79](https://github.com/devlooped/TableStorage/pull/79) (@kzu) + +## [v3.1.1](https://github.com/devlooped/TableStorage/tree/v3.1.1) (2021-08-29) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v3.1.0...v3.1.1) + +:sparkles: Implemented enhancements: + +- Add API docs for all packages [\#64](https://github.com/devlooped/TableStorage/issues/64) + +:twisted_rightwards_arrows: Merged: + +- Add missing API docs and fix all docs warnings [\#65](https://github.com/devlooped/TableStorage/pull/65) (@kzu) + +## [v3.1.0](https://github.com/devlooped/TableStorage/tree/v3.1.0) (2021-08-13) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v3.0.3...v3.1.0) + +:sparkles: Implemented enhancements: + +- Support Timestamp property in POCO entities [\#60](https://github.com/devlooped/TableStorage/issues/60) + +:twisted_rightwards_arrows: Merged: + +- Support Timestamp property in POCO entities [\#61](https://github.com/devlooped/TableStorage/pull/61) (@kzu) + +## [v3.0.3](https://github.com/devlooped/TableStorage/tree/v3.0.3) (2021-07-28) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v3.0.2...v3.0.3) + +:bug: Fixed bugs: + +- Azure Functions fails with SocketException sometimes when accessing table [\#58](https://github.com/devlooped/TableStorage/issues/58) + +## [v3.0.2](https://github.com/devlooped/TableStorage/tree/v3.0.2) (2021-07-01) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v3.0.1...v3.0.2) + +:bug: Fixed bugs: + +- ContinuationToken not properly used for enumerating all entities [\#53](https://github.com/devlooped/TableStorage/issues/53) + +## [v3.0.1](https://github.com/devlooped/TableStorage/tree/v3.0.1) (2021-07-01) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v3.0.0...v3.0.1) + +:bug: Fixed bugs: + +- Remove Create factory methods that cause ambiguous matches [\#52](https://github.com/devlooped/TableStorage/issues/52) + +## [v3.0.0](https://github.com/devlooped/TableStorage/tree/v3.0.0) (2021-07-01) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v2.0.2...v3.0.0) + +:sparkles: Implemented enhancements: + +- Don't fail if deleting non-existent entity, return false instead [\#50](https://github.com/devlooped/TableStorage/issues/50) +- Switch from TableEntity to ITableEntity in the non-generic repository for flexibility [\#48](https://github.com/devlooped/TableStorage/issues/48) +- For PutAsync, allow selecting Replace vs Merge behavior [\#46](https://github.com/devlooped/TableStorage/issues/46) +- When deleting entities, return boolean status for success/failure [\#51](https://github.com/devlooped/TableStorage/pull/51) (@kzu) +- Allow additional properties in table entity repository [\#49](https://github.com/devlooped/TableStorage/pull/49) (@kzu) +- Support merge strategy when updating entities [\#47](https://github.com/devlooped/TableStorage/pull/47) (@kzu) + +:hammer: Other: + +- Document usage of \[Browsable\(false\)\] to skip persistence [\#45](https://github.com/devlooped/TableStorage/issues/45) + +## [v2.0.2](https://github.com/devlooped/TableStorage/tree/v2.0.2) (2021-06-23) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v2.0.1...v2.0.2) + +:sparkles: Implemented enhancements: + +- Allow annotating record constructor parameters with PartitionKey/RowKey [\#43](https://github.com/devlooped/TableStorage/issues/43) + +:twisted_rightwards_arrows: Merged: + +- Add support for record constructor parameter annotations [\#44](https://github.com/devlooped/TableStorage/pull/44) (@kzu) + +## [v2.0.1](https://github.com/devlooped/TableStorage/tree/v2.0.1) (2021-06-17) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v2.0.1-rc...v2.0.1) + +## [v2.0.1-rc](https://github.com/devlooped/TableStorage/tree/v2.0.1-rc) (2021-06-17) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v2.0.1-beta...v2.0.1-rc) + +## [v2.0.1-beta](https://github.com/devlooped/TableStorage/tree/v2.0.1-beta) (2021-06-17) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v2.0.0...v2.0.1-beta) + +:sparkles: Implemented enhancements: + +- Include readme in package [\#39](https://github.com/devlooped/TableStorage/issues/39) + +## [v2.0.0](https://github.com/devlooped/TableStorage/tree/v2.0.0) (2021-06-16) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v1.3.0...v2.0.0) + +:sparkles: Implemented enhancements: + +- Add support for enhanced filtering for document-based repositories [\#37](https://github.com/devlooped/TableStorage/issues/37) +- Add support for filtering by enum property types [\#35](https://github.com/devlooped/TableStorage/issues/35) +- Add support for querying [\#33](https://github.com/devlooped/TableStorage/issues/33) +- Allow passing serialization options for MessagePack serializer [\#32](https://github.com/devlooped/TableStorage/issues/32) +- Switch default built-in serializer to System.Text.Json [\#30](https://github.com/devlooped/TableStorage/issues/30) +- Make Document/Entity default table names plural [\#28](https://github.com/devlooped/TableStorage/issues/28) +- Don't duplicate PartitionKey/RowKey properties in storage [\#26](https://github.com/devlooped/TableStorage/issues/26) + +:twisted_rightwards_arrows: Merged: + +- Add support for enhanced filtering for document-based repo [\#38](https://github.com/devlooped/TableStorage/pull/38) (@kzu) +- Add support for filtering by enum property types [\#36](https://github.com/devlooped/TableStorage/pull/36) (@kzu) +- Add support for querying with LINQ and expressions [\#34](https://github.com/devlooped/TableStorage/pull/34) (@kzu) +- Switch default built-in serializer to System.Text.Json [\#31](https://github.com/devlooped/TableStorage/pull/31) (@kzu) +- Make Document/Entity default table names plural [\#29](https://github.com/devlooped/TableStorage/pull/29) (@kzu) +- Don't duplicate PartitionKey/RowKey properties in storage [\#27](https://github.com/devlooped/TableStorage/pull/27) (@kzu) + +## [v1.3.0](https://github.com/devlooped/TableStorage/tree/v1.3.0) (2021-05-31) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v1.2.1...v1.3.0) + +:sparkles: Implemented enhancements: + +- Allow persisting entities as documents instead of individual columns [\#24](https://github.com/devlooped/TableStorage/issues/24) +- Avoid creating a separate Task for lazily initialization of CloudTable [\#23](https://github.com/devlooped/TableStorage/issues/23) +- No need to use DynamicTableEntity when deleting [\#21](https://github.com/devlooped/TableStorage/issues/21) +- When doing a PutAsync, use InsertOrMerge instead of InsertOrReplace [\#20](https://github.com/devlooped/TableStorage/issues/20) +- Allow persisting entities as documents [\#25](https://github.com/devlooped/TableStorage/pull/25) (@kzu) + +:bug: Fixed bugs: + +- Inconsistent default partition name in TablePartition.Create [\#22](https://github.com/devlooped/TableStorage/issues/22) + +## [v1.2.1](https://github.com/devlooped/TableStorage/tree/v1.2.1) (2021-05-29) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v1.2.0...v1.2.1) + +:sparkles: Implemented enhancements: + +- Add support for TableEntity via ITableRepository and ITablePartition APIs [\#18](https://github.com/devlooped/TableStorage/issues/18) + +## [v1.2.0](https://github.com/devlooped/TableStorage/tree/v1.2.0) (2021-05-26) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v1.1.1...v1.2.0) + +:sparkles: Implemented enhancements: + +- Add an AttributedTableRepository\ for easy consumption in DI scenarios [\#16](https://github.com/devlooped/TableStorage/issues/16) + +## [v1.1.1](https://github.com/devlooped/TableStorage/tree/v1.1.1) (2021-05-26) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v1.1.0...v1.1.1) + +:bug: Fixed bugs: + +- Fix usage in package description [\#15](https://github.com/devlooped/TableStorage/issues/15) + +## [v1.1.0](https://github.com/devlooped/TableStorage/tree/v1.1.0) (2021-05-26) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v1.0.4...v1.1.0) + +:sparkles: Implemented enhancements: + +- Force factory method usage for default implementations [\#14](https://github.com/devlooped/TableStorage/issues/14) +- Apply factory method defaults to TableRepository/TablePartition constructors [\#13](https://github.com/devlooped/TableStorage/issues/13) + +## [v1.0.4](https://github.com/devlooped/TableStorage/tree/v1.0.4) (2021-05-16) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v1.0.3...v1.0.4) + +:sparkles: Implemented enhancements: + +- Make TableRepository\/TablePartition\ public [\#10](https://github.com/devlooped/TableStorage/issues/10) + +## [v1.0.3](https://github.com/devlooped/TableStorage/tree/v1.0.3) (2021-05-15) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v1.0.2...v1.0.3) + +## [v1.0.2](https://github.com/devlooped/TableStorage/tree/v1.0.2) (2021-05-10) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v1.0.1...v1.0.2) + +## [v1.0.1](https://github.com/devlooped/TableStorage/tree/v1.0.1) (2021-05-07) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v1.0.0...v1.0.1) + +## [v1.0.0](https://github.com/devlooped/TableStorage/tree/v1.0.0) (2021-05-07) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v1.0.0-rc...v1.0.0) + +## [v1.0.0-rc](https://github.com/devlooped/TableStorage/tree/v1.0.0-rc) (2021-05-07) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v1.0.0-beta...v1.0.0-rc) + +:twisted_rightwards_arrows: Merged: + +- Add SourceLink to get repo/pdb linking [\#3](https://github.com/devlooped/TableStorage/pull/3) (@kzu) + +## [v1.0.0-beta](https://github.com/devlooped/TableStorage/tree/v1.0.0-beta) (2021-05-05) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/v1.0.0-alpha...v1.0.0-beta) + +## [v1.0.0-alpha](https://github.com/devlooped/TableStorage/tree/v1.0.0-alpha) (2021-05-05) + +[Full Changelog](https://github.com/devlooped/TableStorage/compare/cf1b7f069ac6d68482b498555c8dbdda8e1ae5b4...v1.0.0-alpha) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/index.html b/index.html new file mode 100644 index 0000000..b870c99 --- /dev/null +++ b/index.html @@ -0,0 +1,444 @@ + + + + + + + + + + +TableStorage | Repository pattern with POCO object support for storing to Azure / Cosmos DB Table Storage + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + View on GitHub + + +

TableStorage

+

Repository pattern with POCO object support for storing to Azure / Cosmos DB Table Storage

+ + +
+
+ + +
+
+

Icon TableStorage

+ +

Version +Downloads +License +Build

+ + +

Repository pattern with POCO object support for storing to Azure/CosmosDB Table Storage

+ +

Screenshot of basic usage

+ +
+

NOTE: This library is a thin wrapper around the latest Azure SDK v12+ for Table Storage, +and uses CloudStorageAccount which +is a 100% backwards compatible implementation of the Azure SDK v11 CloudStorageAccount class.

+
+ +

Usage

+ +

Given an entity like:

+ +
public record Product(string Category, string Id) 
+{
+  public required string? Title { get; init; }
+  public double Price { get; init; }
+  public DateOnly CreatedAt { get; init; }
+}
+
+ +
+

NOTE: entity can have custom constructor, key properties can be read-only +(Category and Id in this case for example), and it doesn’t need to inherit +from anything, implement any interfaces or use +any custom attributes (unless you want to). As shown above, it can even be +a simple record type.

+
+ +

The entity can be stored and retrieved with:

+ +
var storageAccount = CloudStorageAccount.DevelopmentStorageAccount; // or production one
+// We lay out the parameter names for clarity only.
+var repo = TableRepository.Create<Product>(storageAccount, 
+    tableName: "Products",
+    partitionKey: p => p.Category, 
+    rowKey: p => p.Id);
+
+var product = new Product("book", "1234") 
+{
+  Title = "Table Storage is Cool",
+  Price = 25.5,
+};
+
+// Insert or Update behavior (aka "upsert")
+await repo.PutAsync(product);
+
+// Enumerate all products in category "book"
+await foreach (var p in repo.EnumerateAsync("book"))
+   Console.WriteLine(p.Price);
+
+// Query books priced in the 20-50 range, 
+// project just title + price
+await foreach (var info in from prod in repo.CreateQuery()
+                           where prod.Price >= 20 and prod.Price <= 50
+                           select new { prod.Title, prod.Price })
+  Console.WriteLine($"{info.Title}: {info.Price}");
+
+// Get previously saved product.
+Product saved = await repo.GetAsync("book", "1234");
+
+// Delete product
+await repo.DeleteAsync("book", "1234");
+
+// Can also delete passing entity
+await repo.DeleteAsync(saved);
+
+ +

Attributes can also be used to eliminate the need for lambdas altogether when +the entity storage layout is known at compile time:

+ +
[Table("Products")]
+public record Product([PartitionKey] string Category, [RowKey] string Id) ... 
+
+var storageAccount = CloudStorageAccount.DevelopmentStorageAccount;
+// Everything discovered from attributes.
+var repo = TableRepository.Create<Product>(storageAccount);
+
+ +

See the Attributes section below for more details on how to use them.

+ +

If the product were books for example, it might make sense to partition by author. +In that case, you could use a TableRepository<Book> when saving:

+ +
public record Book([RowKey] string ISBN, string Title, string Author, BookFormat Format, int Pages);
+
+var repo = TableRepository.Create<Product>(storageAccount, "Books",
+  partitionKey: x => x.Author);
+
+await repo.PutAsync(book);
+
+ +
+

Note how you can mix and match attributes and explicit lambdas as needed. +The latter takes precedence over the former.

+
+ +

And later on when listing/filtering books by a particular author, you can use +a TablePartition<Product> so all querying is automatically scoped to that author:

+ +
var partition = TablePartition.Create<Book>(storageAccount, "Books", 
+  partitionKey: "Rick Riordan");
+
+// Get Rick Riordan books, only from Disney/Hyperion, with over 1000 pages
+var query = from book in repo.CreateQuery()
+            where 
+                book.ISBN.CompareTo("97814231") >= 0 &&
+                book.ISBN.CompareTo("97814232") < 0 && 
+                book.Pages >= 1000
+            select new { book.ISBN, book.Title };
+
+ +

Using table partitions is quite convenient for handling reference data too, for example. +Enumerating all entries in the partition wouldn’t be something you’d typically do for +your “real” data, but for reference data, it could come in handy.

+ +
+

NOTE: if access to the Timestamp managed by Azure Table Storage for the entity is needed, +just declare a property with that name with either DateTimeOffset, DateTime or string type +to read it.

+
+ +

Stored entities using TableRepository and TablePartition use individual columns for +properties, which makes it easy to browse the data (and query, as shown above!).

+ +
+

NOTE: partition and row keys can also be typed as Guid

+
+ +

Document-based storage is also available via DocumentRepository and DocumentPartition if +you don’t need the individual columns.

+ + +

Document Storage

+ +

The DocumentRepository.Create and DocumentPartition.Create factory methods provide access +to document-based storage, exposing the a similar API as column-based storage.

+ +

Document repositories cause entities to be persisted as a single document column, alongside type and version +information to handle versioning a the app level as needed.

+ +

The API is mostly the same as for column-based repositories (document repositories implement +the same underlying ITableStorage interface):

+ +
public record Product(string Category, string Id) 
+{
+  public string? Title { get; init; }
+  public double Price { get; init; }
+  public DateOnly CreatedAt { get; init; }
+}
+
+var book = new Product("book", "9781473217386")
+{
+    Title = "Neuromancer",
+    Price = 7.32
+};
+
+// Column-based storage
+var repo = TableRepository.Create<Product>(
+    CloudStorageAccount.DevelopmentStorageAccount,
+    tableName: "Products",
+    partitionKey: p => p.Category,
+    rowKey: p => p.Id);
+
+await repo.PutAsync(book);
+
+// Document-based storage
+var docs = DocumentRepository.Create<Product>(
+    CloudStorageAccount.DevelopmentStorageAccount,
+    tableName: "Documents",
+    partitionKey: p => p.Category,
+    rowKey: p => p.Id
+    serializer: [SERIALIZER]);
+
+await docs.PutAsync(book);
+
+ +
+

If not provided, the serializer defaults to the System.Text.Json-based DocumentSerializer.Default.

+
+ +

The resulting differences in storage can be seen in the following screenshots of the +Azure Storage Explorer:

+ +

Screenshot of entity persisted with separate columns for properties

+ +

Screenshot of entity persisted as a document

+ +

The Type column persisted in the documents table is the Type.FullName of the persisted entity, and the +Version is the [Major].[Minor] of its assembly, which could be used for advanced data migration scenarios. +The major and minor version components are also provided as individual columns for easier querying +by various version ranges, using IDocumentRepository.EnumerateAsync(predicate).

+ + + +

In addition to the default built-in JSON plain-text based serializer (which uses the +System.Text.Json package), there are other +alternative serializers for the document-based repository, including various binary serializers +which will instead persist the document as a byte array:

+ +

Json.NET Bson MessagePack Protobuf

+ +

You can pass the serializer to use to the factory method as follows:

+ +
var repo = TableRepository.Create<Product>(...,
+    serializer: [JsonDocumentSerializer|BsonDocumentSerializer|MessagePackDocumentSerializer|ProtobufDocumentSerializer].Default);
+
+ +
+

NOTE: when using alternative serializers, entities might need to be annotated with whatever +attributes are required by the underlying libraries.

+
+ +

Attributes

+ +

If you want to avoid using strings with the factory methods, you can also annotate the +entity type to modify the default values used:

+ +
    +
  • [Table("tableName")]: class-level attribute to change the default when no value is provided
  • +
  • [PartitionKey]: annotates the property that should be used as the partition key
  • +
  • [RowKey]: annotates the property that should be used as the row key.
  • +
+ +

Values passed to the factory methods override declarative attributes.

+ +

For the products example above, your record entity could be:

+ +
[Table("Products")]
+public record Product([PartitionKey] string Category, [RowKey] string Id) 
+{
+  public string? Title { get; init; }
+  public double Price { get; init; }
+}
+
+ +

And creating the repository wouldn’t require any arguments besides the storage account:

+ +
var repo = TableRepository.Create<Product>(CloudStorageAccount.DevelopmentStorageAccount);
+
+ +

In addition, if you want to omit a particular property from persistence, you can annotate +it with [Browsable(false)] and it will be skipped when persisting and reading the entity.

+ +

TableEntity Support

+ +

Since these repository APIs are quite a bit more intuitive than working directly against a
+TableClient, you might want to retrieve/enumerate entities just by their built-in TableEntity +properties, like PartitionKey, RowKey, Timestamp and ETag. For this scenario, we +also support creating ITableRepository<TableEntity> and ITablePartition<TableEntity> +by using the factory methods TableRepository.Create(...) and TablePartition.Create(...) +without a (generic) entity type argument.

+ +

For example, given you know all Region entities saved in the example above, use the region Code +as the RowKey, you could simply enumerate all regions without using the Region type at all:

+ +
var account = CloudStorageAccount.DevelopmentStorageAccount; // or production one
+var repo = TablePartition.Create(storageAccount, 
+  tableName: "Reference",
+  partitionKey: "Region");
+
+// Enumerate all regions within the partition as plain TableEntities
+await foreach (TableEntity region in repo.EnumerateAsync())
+   Console.WriteLine(region.RowKey);
+
+ +

You can access and add additional properties by just using the entity indexer, which you can +later persist by calling PutAsync:

+ +
await repo.PutAsync(
+    new TableEntity("Book", "9781473217386") 
+    {
+        ["Title"] = "Neuromancer",
+        ["Price"] = 7.32
+    });
+
+var entity = await repo.GetAsync("Book", "9781473217386");
+
+Assert.Equal("Neuromancer", entity["Title"]);
+Assert.Equal(7.32, (double)entity["Price"]);
+
+ + + +

Installation

+ +
> Install-Package Devlooped.TableStorage
+
+ +

All packages also come in source-only versions, if you want to avoid an additional assembly dependency:

+ +
> Install-Package Devlooped.TableStorage.Source
+
+ +

The source-only packages includes all types with the default visibility (internal), so you can decide +what types to make public by declaring a partial class with the desired visibility. To make them all +public, for example, you can include the same Visibility.cs +that the compiled version uses.

+ +

Dogfooding

+ +

CI Version +Build

+ +

We also produce CI packages from branches and pull requests so you can dogfood builds as quickly as they are produced.

+ +

The CI feed is https://pkg.kzu.io/index.json.

+ +

The versioning scheme for packages is:

+ +
    +
  • PR builds: 42.42.42-pr[NUMBER]
  • +
  • Branch builds: 42.42.42-[BRANCH].[COMMITS]
  • +
+ + + +

Sponsors

+ + +

Clarius Org +Kirill Osenkov +MFB Technologies, Inc. +Stephen Shaw +Torutek +DRIVE.NET, Inc. +Ashley Medway +Keith Pickford +Thomas Bolon +Kori Francis +Toni Wenzel +Giorgi Dalakishvili +Uno Platform +Dan Siegel +Reuben Swartz +Jacob Foshee + +Ix Technologies B.V. +David JENNI +Jonathan +Oleg Kyrylchuk +Charley Wu +Jakob Tikjøb Andersen +Seann Alexander +Tino Hager +Mark Seemann +Ken Bonny +Simon Cropp +agileworks-eu +sorahex +Zheyu Shen +Vezel +ChilliCream +4OTC

+ + + +

Sponsor this project

+ +

Learn more about GitHub Sponsors

+ + + +
+
+ + + + + diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..83969dc --- /dev/null +++ b/license.txt @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) Daniel Cazzulino and Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..2a6d695 --- /dev/null +++ b/readme.md @@ -0,0 +1,374 @@ +![Icon](https://raw.githubusercontent.com/devlooped/TableStorage/main/assets/img/icon-32.png) TableStorage +============ + +[![Version](https://img.shields.io/nuget/v/Devlooped.TableStorage.svg?color=royalblue)](https://www.nuget.org/packages/Devlooped.TableStorage) +[![Downloads](https://img.shields.io/nuget/dt/Devlooped.TableStorage.svg?color=green)](https://www.nuget.org/packages/Devlooped.TableStorage) +[![License](https://img.shields.io/github/license/devlooped/TableStorage.svg?color=blue)](https://github.com/devlooped/TableStorage/blob/main/license.txt) +[![Build](https://github.com/devlooped/TableStorage/workflows/build/badge.svg?branch=main)](https://github.com/devlooped/TableStorage/actions) + + +Repository pattern with POCO object support for storing to Azure/CosmosDB Table Storage + +![Screenshot of basic usage](https://raw.githubusercontent.com/devlooped/TableStorage/main/assets/img/tablestorage.png) + +> NOTE: This library is a thin wrapper around the latest Azure SDK v12+ for Table Storage, +> and uses [CloudStorageAccount](https://www.nuget.org/packages/Devlooped.CloudStorageAccount) which +> is a 100% backwards compatible implementation of the Azure SDK v11 `CloudStorageAccount` class. + +## Usage + +Given an entity like: + +```csharp +public record Product(string Category, string Id) +{ + public required string? Title { get; init; } + public double Price { get; init; } + public DateOnly CreatedAt { get; init; } +} +``` + +> NOTE: entity can have custom constructor, key properties can be read-only +> (Category and Id in this case for example), and it doesn't need to inherit +> from anything, implement any interfaces or use +> any custom attributes (unless you want to). As shown above, it can even be +> a simple record type. + +The entity can be stored and retrieved with: + +```csharp +var storageAccount = CloudStorageAccount.DevelopmentStorageAccount; // or production one +// We lay out the parameter names for clarity only. +var repo = TableRepository.Create(storageAccount, + tableName: "Products", + partitionKey: p => p.Category, + rowKey: p => p.Id); + +var product = new Product("book", "1234") +{ + Title = "Table Storage is Cool", + Price = 25.5, +}; + +// Insert or Update behavior (aka "upsert") +await repo.PutAsync(product); + +// Enumerate all products in category "book" +await foreach (var p in repo.EnumerateAsync("book")) + Console.WriteLine(p.Price); + +// Query books priced in the 20-50 range, +// project just title + price +await foreach (var info in from prod in repo.CreateQuery() + where prod.Price >= 20 and prod.Price <= 50 + select new { prod.Title, prod.Price }) + Console.WriteLine($"{info.Title}: {info.Price}"); + +// Get previously saved product. +Product saved = await repo.GetAsync("book", "1234"); + +// Delete product +await repo.DeleteAsync("book", "1234"); + +// Can also delete passing entity +await repo.DeleteAsync(saved); +``` + +Attributes can also be used to eliminate the need for lambdas altogether when +the entity storage layout is known at compile time: + +```csharp +[Table("Products")] +public record Product([PartitionKey] string Category, [RowKey] string Id) ... + +var storageAccount = CloudStorageAccount.DevelopmentStorageAccount; +// Everything discovered from attributes. +var repo = TableRepository.Create(storageAccount); +``` + +See the [Attributes](#attributes) section below for more details on how to use them. + +If the product were books for example, it might make sense to partition by author. +In that case, you could use a `TableRepository` when saving: + +```csharp +public record Book([RowKey] string ISBN, string Title, string Author, BookFormat Format, int Pages); + +var repo = TableRepository.Create(storageAccount, "Books", + partitionKey: x => x.Author); + +await repo.PutAsync(book); +``` + +> Note how you can mix and match attributes and explicit lambdas as needed. +> The latter takes precedence over the former. + +And later on when listing/filtering books by a particular author, you can use +a `TablePartition` so all querying is automatically scoped to that author: + +```csharp +var partition = TablePartition.Create(storageAccount, "Books", + partitionKey: "Rick Riordan"); + +// Get Rick Riordan books, only from Disney/Hyperion, with over 1000 pages +var query = from book in repo.CreateQuery() + where + book.ISBN.CompareTo("97814231") >= 0 && + book.ISBN.CompareTo("97814232") < 0 && + book.Pages >= 1000 + select new { book.ISBN, book.Title }; +``` + +Using table partitions is quite convenient for handling reference data too, for example. +Enumerating all entries in the partition wouldn't be something you'd typically do for +your "real" data, but for reference data, it could come in handy. + +> NOTE: if access to the `Timestamp` managed by Azure Table Storage for the entity is needed, +> just declare a property with that name with either `DateTimeOffset`, `DateTime` or `string` type +> to read it. + +Stored entities using `TableRepository` and `TablePartition` use individual columns for +properties, which makes it easy to browse the data (and query, as shown above!). + +> NOTE: partition and row keys can also be typed as `Guid` + +Document-based storage is also available via `DocumentRepository` and `DocumentPartition` if +you don't need the individual columns. + + +## Document Storage + +The `DocumentRepository.Create` and `DocumentPartition.Create` factory methods provide access +to document-based storage, exposing the a similar API as column-based storage. + +Document repositories cause entities to be persisted as a single document column, alongside type and version +information to handle versioning a the app level as needed. + +The API is mostly the same as for column-based repositories (document repositories implement +the same underlying `ITableStorage` interface): + +```csharp +public record Product(string Category, string Id) +{ + public string? Title { get; init; } + public double Price { get; init; } + public DateOnly CreatedAt { get; init; } +} + +var book = new Product("book", "9781473217386") +{ + Title = "Neuromancer", + Price = 7.32 +}; + +// Column-based storage +var repo = TableRepository.Create( + CloudStorageAccount.DevelopmentStorageAccount, + tableName: "Products", + partitionKey: p => p.Category, + rowKey: p => p.Id); + +await repo.PutAsync(book); + +// Document-based storage +var docs = DocumentRepository.Create( + CloudStorageAccount.DevelopmentStorageAccount, + tableName: "Documents", + partitionKey: p => p.Category, + rowKey: p => p.Id + serializer: [SERIALIZER]); + +await docs.PutAsync(book); +``` + +> If not provided, the serializer defaults to the `System.Text.Json`-based `DocumentSerializer.Default`. + +The resulting differences in storage can be seen in the following screenshots of the +[Azure Storage Explorer](https://azure.microsoft.com/en-us/features/storage-explorer/): + +![Screenshot of entity persisted with separate columns for properties](https://raw.githubusercontent.com/devlooped/TableStorage/main/assets/img/entity.png) + +![Screenshot of entity persisted as a document](https://raw.githubusercontent.com/devlooped/TableStorage/main/assets/img/document.png) + + +The `Type` column persisted in the documents table is the `Type.FullName` of the persisted entity, and the +`Version` is the `[Major].[Minor]` of its assembly, which could be used for advanced data migration scenarios. +The major and minor version components are also provided as individual columns for easier querying +by various version ranges, using `IDocumentRepository.EnumerateAsync(predicate)`. + + + +In addition to the default built-in JSON plain-text based serializer (which uses the +[System.Text.Json](https://www.nuget.org/packages/system.text.json) package), there are other +alternative serializers for the document-based repository, including various binary serializers +which will instead persist the document as a byte array: + +[![Json.NET](https://img.shields.io/nuget/v/Devlooped.TableStorage.Newtonsoft.svg?color=royalblue&label=Newtonsoft)](https://www.nuget.org/packages/Devlooped.TableStorage.Newtonsoft) [![Bson](https://img.shields.io/nuget/v/Devlooped.TableStorage.Bson.svg?color=royalblue&label=Bson)](https://www.nuget.org/packages/Devlooped.TableStorage.Bson) [![MessagePack](https://img.shields.io/nuget/v/Devlooped.TableStorage.MessagePack.svg?color=royalblue&label=MessagePack)](https://www.nuget.org/packages/Devlooped.TableStorage.MessagePack) [![Protobuf](https://img.shields.io/nuget/v/Devlooped.TableStorage.Protobuf.svg?color=royalblue&label=Protobuf)](https://www.nuget.org/packages/Devlooped.TableStorage.Protobuf) + +You can pass the serializer to use to the factory method as follows: + +```csharp +var repo = TableRepository.Create(..., + serializer: [JsonDocumentSerializer|BsonDocumentSerializer|MessagePackDocumentSerializer|ProtobufDocumentSerializer].Default); +``` + +> NOTE: when using alternative serializers, entities might need to be annotated with whatever +> attributes are required by the underlying libraries. + + +## Attributes + +If you want to avoid using strings with the factory methods, you can also annotate the +entity type to modify the default values used: + +* `[Table("tableName")]`: class-level attribute to change the default when no value is provided +* `[PartitionKey]`: annotates the property that should be used as the partition key +* `[RowKey]`: annotates the property that should be used as the row key. + +Values passed to the factory methods override declarative attributes. + +For the products example above, your record entity could be: + +```csharp +[Table("Products")] +public record Product([PartitionKey] string Category, [RowKey] string Id) +{ + public string? Title { get; init; } + public double Price { get; init; } +} +``` + +And creating the repository wouldn't require any arguments besides the storage account: + +```csharp +var repo = TableRepository.Create(CloudStorageAccount.DevelopmentStorageAccount); +``` + +In addition, if you want to omit a particular property from persistence, you can annotate +it with `[Browsable(false)]` and it will be skipped when persisting and reading the entity. + + +## TableEntity Support + +Since these repository APIs are quite a bit more intuitive than working directly against a +`TableClient`, you might want to retrieve/enumerate entities just by their built-in `TableEntity` +properties, like `PartitionKey`, `RowKey`, `Timestamp` and `ETag`. For this scenario, we +also support creating `ITableRepository` and `ITablePartition` +by using the factory methods `TableRepository.Create(...)` and `TablePartition.Create(...)` +without a (generic) entity type argument. + +For example, given you know all `Region` entities saved in the example above, use the region `Code` +as the `RowKey`, you could simply enumerate all regions without using the `Region` type at all: + +```csharp +var account = CloudStorageAccount.DevelopmentStorageAccount; // or production one +var repo = TablePartition.Create(storageAccount, + tableName: "Reference", + partitionKey: "Region"); + +// Enumerate all regions within the partition as plain TableEntities +await foreach (TableEntity region in repo.EnumerateAsync()) + Console.WriteLine(region.RowKey); +``` + +You can access and add additional properties by just using the entity indexer, which you can +later persist by calling `PutAsync`: + +```csharp +await repo.PutAsync( + new TableEntity("Book", "9781473217386") + { + ["Title"] = "Neuromancer", + ["Price"] = 7.32 + }); + +var entity = await repo.GetAsync("Book", "9781473217386"); + +Assert.Equal("Neuromancer", entity["Title"]); +Assert.Equal(7.32, (double)entity["Price"]); +``` + + + +## Installation + +``` +> Install-Package Devlooped.TableStorage +``` + +All packages also come in source-only versions, if you want to avoid an additional assembly dependency: + +``` +> Install-Package Devlooped.TableStorage.Source +``` + +The source-only packages includes all types with the default visibility (internal), so you can decide +what types to make public by declaring a partial class with the desired visibility. To make them all +public, for example, you can include the same [Visibility.cs](https://github.com/devlooped/TableStorage/blob/main/src/TableStorage/Visibility.cs) +that the compiled version uses. + + +## Dogfooding + +[![CI Version](https://img.shields.io/endpoint?url=https://shields.kzu.io/vpre/Devlooped.TableStorage/main&label=nuget.ci&color=brightgreen)](https://pkg.kzu.io/index.json) +[![Build](https://github.com/devlooped/TableStorage/workflows/build/badge.svg?branch=main)](https://github.com/devlooped/TableStorage/actions) + +We also produce CI packages from branches and pull requests so you can dogfood builds as quickly as they are produced. + +The CI feed is `https://pkg.kzu.io/index.json`. + +The versioning scheme for packages is: + +- PR builds: *42.42.42-pr*`[NUMBER]` +- Branch builds: *42.42.42-*`[BRANCH]`.`[COMMITS]` + + + +# Sponsors + + +[![Clarius Org](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/clarius.png "Clarius Org")](https://github.com/clarius) +[![Kirill Osenkov](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/KirillOsenkov.png "Kirill Osenkov")](https://github.com/KirillOsenkov) +[![MFB Technologies, Inc.](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/MFB-Technologies-Inc.png "MFB Technologies, Inc.")](https://github.com/MFB-Technologies-Inc) +[![Stephen Shaw](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/decriptor.png "Stephen Shaw")](https://github.com/decriptor) +[![Torutek](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/torutek-gh.png "Torutek")](https://github.com/torutek-gh) +[![DRIVE.NET, Inc.](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/drivenet.png "DRIVE.NET, Inc.")](https://github.com/drivenet) +[![Ashley Medway](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/AshleyMedway.png "Ashley Medway")](https://github.com/AshleyMedway) +[![Keith Pickford](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/Keflon.png "Keith Pickford")](https://github.com/Keflon) +[![Thomas Bolon](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/tbolon.png "Thomas Bolon")](https://github.com/tbolon) +[![Kori Francis](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/kfrancis.png "Kori Francis")](https://github.com/kfrancis) +[![Toni Wenzel](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/twenzel.png "Toni Wenzel")](https://github.com/twenzel) +[![Giorgi Dalakishvili](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/Giorgi.png "Giorgi Dalakishvili")](https://github.com/Giorgi) +[![Uno Platform](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/unoplatform.png "Uno Platform")](https://github.com/unoplatform) +[![Dan Siegel](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/dansiegel.png "Dan Siegel")](https://github.com/dansiegel) +[![Reuben Swartz](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/rbnswartz.png "Reuben Swartz")](https://github.com/rbnswartz) +[![Jacob Foshee](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/jfoshee.png "Jacob Foshee")](https://github.com/jfoshee) +[![](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/Mrxx99.png "")](https://github.com/Mrxx99) +[![Eric Johnson](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/eajhnsn1.png "Eric Johnson")](https://github.com/eajhnsn1) +[![Ix Technologies B.V.](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/IxTechnologies.png "Ix Technologies B.V.")](https://github.com/IxTechnologies) +[![David JENNI](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/davidjenni.png "David JENNI")](https://github.com/davidjenni) +[![Jonathan ](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/Jonathan-Hickey.png "Jonathan ")](https://github.com/Jonathan-Hickey) +[![Oleg Kyrylchuk](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/okyrylchuk.png "Oleg Kyrylchuk")](https://github.com/okyrylchuk) +[![Charley Wu](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/akunzai.png "Charley Wu")](https://github.com/akunzai) +[![Jakob Tikjøb Andersen](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/jakobt.png "Jakob Tikjøb Andersen")](https://github.com/jakobt) +[![Seann Alexander](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/seanalexander.png "Seann Alexander")](https://github.com/seanalexander) +[![Tino Hager](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/tinohager.png "Tino Hager")](https://github.com/tinohager) +[![Mark Seemann](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/ploeh.png "Mark Seemann")](https://github.com/ploeh) +[![Ken Bonny](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/KenBonny.png "Ken Bonny")](https://github.com/KenBonny) +[![Simon Cropp](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/SimonCropp.png "Simon Cropp")](https://github.com/SimonCropp) +[![agileworks-eu](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/agileworks-eu.png "agileworks-eu")](https://github.com/agileworks-eu) +[![sorahex](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/sorahex.png "sorahex")](https://github.com/sorahex) +[![Zheyu Shen](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/arsdragonfly.png "Zheyu Shen")](https://github.com/arsdragonfly) +[![Vezel](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/vezel-dev.png "Vezel")](https://github.com/vezel-dev) +[![ChilliCream](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/ChilliCream.png "ChilliCream")](https://github.com/ChilliCream) +[![4OTC](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/4OTC.png "4OTC")](https://github.com/4OTC) + + + + +[![Sponsor this project](https://raw.githubusercontent.com/devlooped/sponsors/main/sponsor.png "Sponsor this project")](https://github.com/sponsors/devlooped) +  + +[Learn more about GitHub Sponsors](https://github.com/sponsors) + +