From 9e23aa5c4aa010d98b2445887cb165429b1da182 Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Wed, 18 Jun 2025 09:48:06 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=89=20Improved=20database=20structure?= =?UTF-8?q?=20&=20utility=20code=20stability=20=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/database/myp.db-shm | Bin 0 -> 32768 bytes backend/database/myp.db-wal | Bin 0 -> 32992 bytes .../hardware_integration.cpython-313.pyc | Bin 49272 -> 50249 bytes .../tapo_status_manager.cpython-313.pyc | Bin 32705 -> 34516 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 backend/database/myp.db-shm create mode 100644 backend/database/myp.db-wal diff --git a/backend/database/myp.db-shm b/backend/database/myp.db-shm new file mode 100644 index 0000000000000000000000000000000000000000..002a12b293e521ea6243bd2fa0aadb456dc18d74 GIT binary patch literal 32768 zcmeI)F%AJi6b9hIS}IY=mM-7`3XMvs6@`Q|xP<%Y)#3!G9Ki*c*@$RJl$-tjPH2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+Km`Qi90wslfWS|IG;c)+5FkK+009E^ z5NL%gPMXU@r<{9NkDhf&fB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ WfB*pk1PBlyK!5-N0t5(DRp1Gvu_WyP literal 0 HcmV?d00001 diff --git a/backend/database/myp.db-wal b/backend/database/myp.db-wal new file mode 100644 index 0000000000000000000000000000000000000000..11e892e1f51fbdb332dfc1fc4bee743f579ac247 GIT binary patch literal 32992 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 delta 2472 zcmZ{le@t7~702JT{S3y~fPr8j#0HxmCJT_|7qCJwkc5Pc42%aWKfLE3U;?(o^)qxy z36Nh~tEF9fHl+ZR) zNvlb-H+ZU$s3+CTj$#39w>#|;APU?pp zrIln1CQCn9qdJ&3ZJ3J3CSo)q$ut0gvSXGp^yWwbd1@}?+aL4ON#&C=zgF`Wfw6TJ z!~(NkYraS8(Xqei(Km=r!K(pMSp>`WH5xAgx4o#^lhvY0XawQFX0Nu63F1$32!dDV z$!;BHb}q9aZ@O5w&*&AP(pF^h7+9mhlhdGMg3#Yl?EGR7qdG{XFp{qd2||`2c?2OU zj#!}o+ZB+s>Bt&5yROLWF^!Zy2=a>HE-3|1M`63F^wp* zEcs_bl&|BPtR=2zu=5{n!pK?pacx5ZVF_9iGDRB<=D+23eo$Bi|E#qwW-LO@mRr?5 ztJOWJ{F2jor}9$eRcBg%+L{rCn%yKLXlu-?xm7>d{c(^7P&(_O6t7Cx_l1y)v5YTNxO<=^bAA&ZF;nM^*+$S4zij z=8oUCId0juuG+Sys%leqXUgV$zjW=h{m-poszv7eg5G5QEF&_#PviA$-AC4SYK61z zJjN><3mC6zbGq!>t0s4LSGo3DF<~#_wQ{k`{=)Hkone7>acOqaMR=+~Y2uq$NKKf( z4g{V0nS!e3Q)Mx1 z?LZh2Ty`&7ez?(GVSEZrzV!jP-`q@M(9mKfCt+91JlUdLZgFZWpJ5@a96B)aOATJI zTxc3}ZB>NAMz1+EF=|6?ta{hleKk8*6aEj^d7!8J~&;LDjz0WgWT+6_U zOD!!K4sLgnY30oJAkp(x&4Iz)N8&K-{#WIfM~g4!QP$I?rOWK`#Tam)vx-CjI@gm! zaJh4*{z=vr(1ClfNU?S42ze5m-EtXvDKBl2S#0nJ!_UJ@-Bsj-^2hFMF(0=~Jq2O3 z#^KKHcJ-nhhmCs<8F`lZ0t4{Mo{G9Si%J*xCLbO^Um!LUqm<|GF_hq!Y8TtoifW^J z@_vi%7ZJF@X&t*x<7s_pE))^32jX zxZJ->e+h$Lhunc<b{X)7q)1kGfGyEfui)H`&y+pp(}=pZ;6;%1^<0_@rztc@v)YZz4^~HNRHe zoWw>9V>N+x+H`5BVNZl5A}Rj}59vq}x+0G^@ch+doD1<61Xtk#bNIR*(S>*e?nFFBzNFju z{x&=^P!1E(edMt6a`XjVG0$WzHsMClcM&TPjgOO`D>vfzHDr}3RKV@IA#zb^o|koG z0e*MrMg2((Ov3o%7kjwL^P5EHhYYR)RjvUYcMwYme${7%rMM)^lxEPy2ju%c1JXj_ zTE04-g+F8SSBv2={AeLcR+Y~ec4^A-0-$(#P+&-BN&Xm>LqYbjdkmzdYW*wdb-?2G z5|jE>QV)dy=a*hG9>spg5X%r*F4ZT{jKU9>zqUAwrVha`ub-hMBKYM*(UK9(hzMdH z!RzNDTJIokAXX8)#{Y`e-w`bco{*2x;GZ