From 29f4400e8c422577d97cc437d90fcc5add35a13c Mon Sep 17 00:00:00 2001 From: JustIceO7 Date: Fri, 7 Mar 2025 02:27:15 +0000 Subject: [PATCH] ISSUE: Reverted database back to using fts to get searchbar working --- web_server/database/app.db | Bin 167936 -> 167936 bytes web_server/database/text_search.sql | 114 ++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 web_server/database/text_search.sql diff --git a/web_server/database/app.db b/web_server/database/app.db index a48dfd1c1276e64e33f17b5abab481c52e6e4def..fd8bac610822ec2ef7d0124262cacf86897e5bd4 100644 GIT binary patch delta 5027 zcmcgwdypJO8K3TX@6Jrm?C$OE-QMN)I6@Lg$h{vRklZ5=%;j}~NJ%A3?&kK^-0dE_ zvzJ^#WpjY6g^*x@8O2hGB?y)U@^aB4_$mz*E#y^*5FSb)2vib^RH;~?Ur)~hQmB7e zI#=8M`+oiPbobX^fBntvzb&-?w$M!}%jP(43H%c9!yG3b{nFA-AkSU8QKSqx4JEhu z-kAzfW0e8GkxIwa<{=Xa3siiRBX?_);ccNY<+yS{J}n%=M{9r8GfcD`Rr?m8SyVk5 zL5UE?PgeIk$VLLkp=s}>3(;av&!EddQeE1H(!6(M0yT?E_Ey%& z-tBww9wAd%Eqkq3;R)~I3sJLo=T-Q8@40pq66X6V!`{YD^pJ41RvGfNF0|Qu{36s= z9a?}shlEmPK=#hwg=f)9@9-{sv3GC=FAwdmtdJAk-Dp1Qwe7-n-U~DMa$#PsT;yGF zC9Vj?%7wD`=#_ZbGfQ|GnXX(QCl)SL=9^u6$CTr>bfKtsUm35LJ1d`(602Lh4Hu$h zb?iK}NT@#62i7_?gM_NE0=-8FImrp(=Q;9P_<79;pS<5n|0+Bf3Gv+7U=$8v%wdEO z{E}bT4-ewG9^j+6tsQ77V^3#u8H5C}vgumCUEmI$#c})|Z{P@8)2c|&hN0jkC`6tj zjM`!t^SHM+N=5IcBdAeSU-`v^L-90yiFs9VIq^+>erm1)_h(6V2JQnaV@xl9T) z;Y~BnZrw+?;L;I*D!F;Xe~q-G;MndY0YTz%z8Iq{Mstl&^GF!8r>0bZ7)$w5&UFeQ zsZ1qhZiiEtDdl$3DPp9I+jCRd%%n@Z37B{6@d$lE$nVPMU0Y+QGlnUX{8kNrvWLdG7Oqy2b+cXH#@ zHawz*jEa)97^XyL!Xp*-))_0<6E59G7`{}@j?vA8x#uS&ue1$ztIn7Cg5z5R3$imk zLzhd30!zV6=xTW^=ErtAZqnBlirML6gHH?7c5#w!3TVuL9f~5=2ne^3-RV#p^Dy>| zQ=l~Lz3bS8B3&H#MtRa93a|?DOMgQIJmFF+@kl96x!Gykb!bl!qayVf9-&#`veAo%g2_7^ zd6&FXwPw(3WP>Ci4YorRRH$@_pN;xqj=WA@B#)7wlDo*QdK7*hn6)CfrqDe%%z6{ zzt>YhH>Fn6QCcQL(cFx}A|Ndmhlx!K?P z^g7=U;|buFC$>_Xrt=f&t%1>_ap0H4&sfbIKE2j=XtNI3*18R|PGOhrj!mXJnq!`G z0HxzmsvaGzozrwjTW@be#QWL-luB68)?y9Qqn6$b9(b+^#CG%M7Y{7KONsZF18CV= z1E_XmH9b*jSjU8$UI{@XeW|5G!$N%}1QnQZ2F^z@tN~T84Z$%_cj#ddn!=X`u2UEC zatBeotkPcUAcPaTs3C|0h5}TxGEzH3x=cIDtAfKGmq1)DF{98vwZTN->qTZpL!j>v zhHEiI;X#h_D+_K214`f#dL+SZEKRLn?Z;xB{FQ4Y-JBPC8TD0Hyo~;4l(E>zb0*@& z6s@q>z@&Ow31X6w2}Z`5RL80qtpqX3qzIENCYiKSM8YbAwdt%)V^x?|s8xjPgbuH= zO7U4yW|icV-U}yDqXjFGp+g921b$6UKWO1MNMo2!A@G1AjiNfeu(Ui!{;1`(Uu)M; z@72nmbYTs!3rpbU6?k7iZfk?+4R?oM;EujV3_^bs6#Td|%i?GVE;OewUK)2gXsE}6 zE=!^7BDJgShQ*Mu{FdH*a9`D41@9{dZ~gH7|1SiWDP%p~`Xgw{`{faI(A)M1y4d^v zBj|lRANKD3F>2`#8xhmAta#Wo%m|4@qTxCjuJKqCJk)jmDOyp}|J!f_?M+6ABc~wT zJPzUJ9`aREAy-1USx?R-j3lB8l>BA{t5^8GQKz>g?+5o~LwSk?8l{tHAuIPsAeU18| zwU;>sJqbceO%6=uGa08~B|vOd6Kk?XH(!_=C{0Y%#eq6UjjywFnUbAx)|KH3$vFj5 z2Yjf)Vn8fZV;d*)Za!16XC|G376q*%9n zSqDa0?KnG$22``EjpS#u4qb#5_I1MRZMRf#*kB=`TGY_0tebO+#Z`8WsD3YXAfMmq ztHcx_mZ-{>f<5a@4ey?TE6*vEP1)}$4?^f0v5S!T#3Wx)+Tx5&4(HrSh%CUHqOTXk zqfyr`=mIb)l?ElcI*kXhUZpV!hBvXV&f*fY4-z@GS^Z#hb?QI_B|Uis?iEOyB*7t` zF-)n6=OQ$vgiu9mZ}A5FgQXw~0nZ0D4r*{=s`s&2Q9b>4q?>+Ls~zCTtJ(qWCGA@< z#J*1s5A^;|9QZG6+n#QVJ&ST2Fj>C98euv06O&mbU~KkYj=|X^q2wYwF1x=2|$0; z2MBfGfN6^bpuH{t9q|BkCIWCpS294|^#SN<2taSj2MBfY0q7C}&`rM${LPR8&?^U^ zPYFQ3NXo-ZS1bo;7}9+-H2#xWSk+CX7*Ig|W z+D(fvij-?y8!-*wz!FA4^&6(n7(HP6bW>xD7BIb<8D>m4V0yx4h%upn=??P>Uz2xo#r_#u)y1dWg> zqI2ZW>BS&AA{lZ$1|ZvG0P;NsAmd{Iay|wi>tg`&J_aE3V*qkL1|a)m0P;TuAOmCo zazF;kkOndYi68@z3Niq>AOnyMG64A?1CS9i068H8A_WkLWw-@m^vg|#Yk)Cu4={%2 zGF0con}B;Tg8xLSr?+F>YzJ#b`6oD%2JhOUozkw;l<=3s3qwCt-&EdG*2~Yx6VmUc zaq)zB75@ak8GrZwP3B&V?(|OX!ru-xbqquMBz*?8C?J*pJPB04XtzZvX%Q delta 4815 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 K)h}FO=6?hAPOQ}c diff --git a/web_server/database/text_search.sql b/web_server/database/text_search.sql new file mode 100644 index 0000000..98f1b31 --- /dev/null +++ b/web_server/database/text_search.sql @@ -0,0 +1,114 @@ +/* Full text search queries for categories */ +DROP TABLE IF EXISTS category_fts; +CREATE VIRTUAL TABLE category_fts +USING fts5 (category_id, category_name); + +INSERT INTO category_fts (category_id, category_name) +SELECT category_id, category_name +FROM categories; + +-- Triggers that inserts new titles into category_fts +DROP TRIGGER IF EXISTS insert_category_fts; +CREATE TRIGGER insert_category_fts +AFTER INSERT ON categories +BEGIN + INSERT INTO category_fts(category_id, category_name) + VALUES (NEW.category_id, NEW.category_name); +END; + +DROP TRIGGER IF EXISTS update_category_fts; +CREATE TRIGGER update_category_fts +AFTER UPDATE ON categories +BEGIN + UPDATE category_fts + SET + category_id = NEW.category_id, + category_name = NEW.category_name + WHERE category_id = NEW.category_id; +END; + +DROP TRIGGER IF EXISTS delete_category_fts; +CREATE TRIGGER delete_category_fts +AFTER DELETE ON categories +BEGIN + DELETE FROM category_fts + WHERE category_id = OLD.category_id; +END; + +/* Full text search queries for users */ +DROP TABLE IF EXISTS user_fts; +CREATE VIRTUAL TABLE user_fts +USING fts5 (user_id, username, is_live); + +INSERT INTO user_fts (user_id, username, is_live) +SELECT user_id, username, is_live +FROM users; + +-- Triggers that inserts new titles into user_fts +DROP TRIGGER IF EXISTS insert_user_fts; +CREATE TRIGGER insert_user_fts +AFTER INSERT ON users +BEGIN + INSERT INTO user_fts(user_id, username, is_live) + VALUES (NEW.user_id, NEW.username, NEW.is_live); +END; + +DROP TRIGGER IF EXISTS update_user_fts; +CREATE TRIGGER update_user_fts +AFTER UPDATE ON users +BEGIN + UPDATE user_fts + SET + user_id = NEW.user_id, + username = NEW.username, + is_live = NEW.is_live + WHERE user_id = NEW.user_id; +END; + +DROP TRIGGER IF EXISTS delete_user_fts; +CREATE TRIGGER delete_user_fts +AFTER DELETE ON users +BEGIN + DELETE FROM user_fts + WHERE user_id = OLD.user_id; +END; + + +/* Full text search queries for users */ +DROP TABLE IF EXISTS stream_fts; +CREATE VIRTUAL TABLE stream_fts +USING fts5 (user_id, title, num_viewers, category_id); + +INSERT INTO stream_fts (user_id, title, num_viewers, category_id) +SELECT user_id, title, num_viewers, category_id +FROM streams; + +-- Triggers that inserts new titles into stream_fts +DROP TRIGGER IF EXISTS insert_stream_fts; +CREATE TRIGGER insert_stream_fts +AFTER INSERT ON streams +BEGIN + INSERT INTO stream_fts(user_id, title, num_viewers, category_id) + VALUES (NEW.user_id, NEW.title, NEW.num_viewers, NEW.category_id); +END; + +DROP TRIGGER IF EXISTS update_stream_fts; +CREATE TRIGGER update_stream_fts +AFTER UPDATE ON streams +BEGIN + UPDATE stream_fts + SET + user_id = NEW.user_id, + title = NEW.title, + num_viewers = NEW.num_viewers, + category_id = NEW.category_id + WHERE user_id = NEW.user_id; +END; + +DROP TRIGGER IF EXISTS delete_stream_fts; +CREATE TRIGGER delete_stream_fts +AFTER DELETE ON streams +BEGIN + DELETE FROM stream_fts + WHERE user_id = OLD.user_id; +END; \ No newline at end of file