From 28d20f7aca673e71201b464cf70a7bf40fe117cc Mon Sep 17 00:00:00 2001 From: Araozu Date: Thu, 29 Feb 2024 08:15:31 -0500 Subject: [PATCH] Use sqlite, ts modules --- bun.lockb | Bin 110852 -> 112350 bytes package.json | 7 +-- pseudosubs.sqlite | Bin 0 -> 86016 bytes srv/Admin/ED/nuevoED.ts | 9 ++-- srv/Admin/ED/obtenerEDs.ts | 9 ++-- srv/Admin/Eps/crearLink.ts | 9 ++-- srv/Admin/Eps/estadisticas.ts | 9 ++-- srv/Admin/Eps/obtenerLinks.ts | 9 ++-- srv/Admin/Eps/obtenerVariantes.ts | 9 ++-- srv/Admin/OP/nuevoOP.ts | 7 ++- srv/Admin/OP/obtenerOPs.ts | 7 ++- srv/Admin/crearAnime.ts | 7 ++- srv/Admin/obtenerTodosAnimes.ts | 7 ++- srv/Animes/obtenerDatos.ts | 10 ++-- srv/GestorDeTareas/GestorDeTareas.ts | 4 +- srv/LinksAnimes/modificarLink.ts | 9 ++-- srv/LinksAnimes/obtenerLinks.ts | 17 +++--- srv/index.ts | 37 +++++++++++-- srv/tablas.sqlite | 75 +++++++++++++++++++++++++++ 19 files changed, 166 insertions(+), 75 deletions(-) create mode 100644 pseudosubs.sqlite create mode 100644 srv/tablas.sqlite diff --git a/bun.lockb b/bun.lockb index 32a4774ed8fdc93818278d715b77c85bcbaca69c..7396f0eb15fb90c8ad4ae6c02fd85270c8ac380f 100755 GIT binary patch delta 21525 zcmeHvdt8*&*8j6dMi>MY1i1?+3SPJ)cV<8nu>llsco)PGP;N4yfZ~9c@{-q`ZcR(A zG^~M@cGRpCU+w*_=OWap&N;u|d4In@-k#6rJ8Q4C*WP=r zwJ*<}=b72_FSI>(we5yS(#re6_*uRDvPVEHIP$7kD?q=OHDCQew9A~N>&~PrG9Z!X*-n;N06x>4}*Gw_5-E z32?_9)a<1Uj18dFKq4p^INMwCGz*mKjZvwktg5)G*kTP<`DvgoXun|$B|t06tyKjW zDO=GhHB^>gR$h!?r6Hd@D)*BlAJAYlM4ok48?*;S)Eic-2Et&ZBuO&}O~tg_@o)dRTi`_NvQyNP-UsKS}G-p1u7oofs*`IfYLSj1?80(0@4NWogue%l_a#? za1j(iYba9bs%}bztoiT;SDzrId_fVqXmWn#6su(hqG7GHhe4&6rav&P|)D;HsG&XL4C;9~_ z<-Y@p_G}I3VJTH)hJY$~5!4fO9jH6#VodB!M(+X`5D3Pfso>EJ*pcp*WYZ;)dD_23?G5#6~(iMw_gHl81kwNp_ zYAKyT(=i=9$;YAs3aNjFQn5QI8T+)wboi?DV=I{8luRx#qAsLG zHrX0dksxovhAKv4F_ew|9y~QLX_%5f1eChx3gqPNQP2QTK3vJy^cuiZxhCY3{$nGQ z`XG}X@ENI;pD0sr>AnGr>_d8X85!|fOtaIz+|@fK?96byrpxGk;;G8x(_S9;rY-w? z`RA`qXjgQrIOe&(JlUat`ez+duEt;6F>~ZZ*TXMlCLWx+KIVz6arwvIyOQb9XkCW9TE!^bS`u`4BkN4RFN*Lba~N&h!E62ntEC+Q2Z=SifL zZZqSF-bTY`5M;t<#?##6biq2_1mPqdv>DurnAERLm zwos`M>Uf%Goc=Lz5AuCz?(aw$d5T+-KGcp(*yoX?%eUjrzD8Y>9dGJv)ZMh>iJnG7 zlpcdyuHc|socGw^1R-3Fc* zXf)i!7{bz~w%!LrTd|CxT!kZV4m9d^IP%1$Ab3j}g6vNU0Hmjc+*frtU_=H3$_05H^D^X1iis8Vnc?jw;gg#;$R?Rqc6G52N7- zglb5=<8<*Icw(?oSKoox1se@tV4`BtQ)A-RQIh(BQzAPO+u!!Qj1f1d}3K))ni;?rttnMc_ zUf0K{8|coP`WOwf+%?TK#N#!0o)~J>89MVikc`f}38bMjZw@sY4tJKMDAdx1MjEdP zcH;9rVst4UyeSM31i{qViyKRx(o$zkKu=y5j)CXNo5GFy*RYmn^7`;3-54*P7-7^u zgFRLv-xrZ=heSG0iAd5f!>u!eQo57gJkiZ)@Wh>nIstRhEzU3o9QCgqKiDTu_lys3 zb~Ea~gfN}oMK#!8%GKz~eR*>yqhUJ)6ia1JHT&`=H={1hk0(YMb&LIYU6fIO7Rzl0 z8Kv*ug{CQ`ijhi{4Slu?Z*n#2zV5=CU5$D-f4L#oB;9;}Uf0Q}d)=Qmf!y-viS9;S zLIAIeHtLE4coWDA0lXQcQy@=_F&d^}$El7Ubl|gryeY=0yBf%wkr&VvCcsLGAH<@y zwkxmeYc$-0kh)V2wl1R^Z-(%hZZJUh2R)#>+Ktzt+5SPi38X%VH-nrB;)z&@+`7x$ zi0<;Tv>Y6SA9d%69x$l~uLBv}gEx5?4Nvz_8p0|R7|(jh>sKFaGikh_akn_#)L`C( zMeP*`X^GIw1B`_zBhsEGw>}A6JWp{?Vsm+ItcktJ_r{tG5k2t@P&Suz)__aqcSDj4 zA0mZYKlN#F9P7&W#+mfZy(MWl-xrsp&&G7lmQx$r#w{CDE`$j%i~`9J|YJr+22wPT*0SEDN6)~kD(hh?>|INX43abq9Brqb15YoaS->$ zQ{Xa5t`EXI8%M3^8<2XC);+^}NGXH95&iFwLaQJ-l84k#xsJx@IK#`})IklcTi`H~ zdL1E%VOR=ol*~~CzXoUI`+}16-B3K9-^D&-AySEQ z>P@5~C}p^T6xohx+9%G?i0P9DPPW#dgW(j>%mha6r8Jf^HR2OpK@DJdW-B6-gF-k6Br~`*y#V(Bk_#rsV zAiA63Ms9~#5~u7WV!@GXSk*C%7lA{xi9l3H{h&1E?x64*`V@d~(1xMDjkv-hX_YO4~Za}6E1?+Xg21^pgD$P}J)4(YH8V#kxBnh)$9i2~u8^G^&Nn+pdgj^Hz9;bK4 z-hUv!YfNIpdF?1NVehCoUg7Fs_$zYy%6g62aV|la(wNE(Oj0gC9_boPdM-uCi9wD7 zGO&A<9Pj6BKn|@RZjiPEJdo4dg*XCTL>+kOXb&6J>qjD7M2YW046fFcCRT313>b}0bDjM zAyYDBqb&b9CHZDmPLw>{3Q$GQ0CW*G0NVk|-v!Y1dsHU{OVS=FQ3HDc3d!pLU9BnO zkB{?U5`STwhmCaK2FRPk0A0UE+d=-ZoU2gMKLt?v)2jT}DCM6~_0Fk!M9H@ElGIBU zAt4LCk~v8tN(;dil_$!0%6Mghf2&G~Qq2CY@mS_`UWZCYE3EsfGTfI zsr(@)HRBLfz)SNy(x~{KRcUKVqIXFP^gT8I*C@KR*n@gVI<9K{8YQPbMn0*WQ1x0< z5}j1@KT-3EQt}i&$codT_S|o(zkF}FKv}q2QxbiN529bG`9#U}OQ2-M-&FapQPTT6 z@~O4!s$OeK^6wb75R`WlA4I>$2W9-I^0!n9k-VMwV{0MD|BtQ3A6pCBa{RHiP?n89 zwid0o9)D~t=vIR3kFA9g2ij`dV&>KZe1<_E#mlsoh8wPx0V zPp{2o9rse^AR>P3*?(^ zxqQ?NXRdEBvu-@60p87oci_5n)(G#wSsKkOnC}2rR0HqknpsbtKNsHB!aH!ixyw9w z2d;XanT7I$;A-mN-F!0(=hNrs@{n21`~JZ z{?)@jaB)2HVfY7b^}}YCz|VtQI|u$PG~@By%7yUH2LHgN@U%tn58ReTW@h5o!EI}R ze~Zm5jc;BI{~F=n5;N=1bC$rrx$qC%0L~tPf8Z>SnAt$S16Sbn@#Sen3Spff*o7rGKeL4Jl2>yY~;ejjQAGif8%xoAx4sPMY@NcD= zjo^(d;om~|2QHUKu7ZEyRb-$hM!Qa1I#2ns=Dobg_ftm>Z=C1*_@}eN-o5@-wDZOd_CuyF zSl?sj*yZJ?8u}-WjCyVD$w@n3{^G}h7e^Z#CKsAIh7aA0$KqIGlzLnL(9^E)>%Ixz zKYg0I{q1iu3SE-VZCGv#JzTzM?%kX#9UYFltu0)VuseC`@;#%*zjf{GoR}j&+z#KI zGtJL#&DJ}O+mbVX{A;U<{aPFR#$?x=Kc8N+s@HMGX&z-<)5#_4A6|m1m=V zGLKx<&7s4+y+7nUl`vv+?v}uXJN`U&lY{HLhioafH)h#+ezD_btBSj{uGo_Pe8@9@ z+3VUa<7DXP`DMxbUhxb2WxRbS2*qVikUEP@-wkzOU~W7oHys~ zi$A;_5wQH&jt;TflR{K49q-rc&BLQ9rF@r@fAPw_jz;s2N0a|exG~+%{NvBJ;d#g1 zxYG$Io0q5ZYZm%;Nf%K~CJX*&WwwU@n?@+$t9+E-3$-@-Uzg!)kGmu_{9a-D`mFuJ z@`|q#Ei(E)BD4LcD^%+vqqU!NR{JZzm?EQpDU+X8{8C7T={KKLAS^)nH58?PDI-1Y zr=U+k&k>P?=--jqZ%dw&=Ur1rI+fLcS8 zsL3+*=b(G|^iMjmR-f*BpoK@q4Wy<0Ce(u;gx3GpPj?SIa3;HGIuqzgr3c^qDcSYM z=YKE)_ajXsK>HzPKhDl|V*k$PX6PT|*Z{dF0z|FNEGjN20{t^j`@9qTU-7x~ z?)j)#p6VL$3)ndpsr!XnexhMCa}!yfthepnPs)WLNu6-Bp!)?yj;_|ciz1TTR2_O0 z>#EA!RT<49da6oSXH`be{k2EA9;%FH+SiJnP4ZNQSZ1V)ico$@K}iQ-BS4q8sz*;6 z!eoiEu_8UJs`P?gzQ{?E(OarOMI_OFhGg`<&P$ciRz!Y_L+?v}pj=$^j}}U{2eb#r z0jjJ6WZ$ZKfuIznj=<9Z8QM+Nqe!g==n7J06sexFM3TCzvQFR=<+m+J^iYK%>JI5p zS8>^kRrVw$3Mqw6fQxfV03k(df;(p-1IcY0?E0`x2nnbSHq5z$d_A z;6307a1?kScndfLP@ww&p#TLqT;%vLe;eNH)6W~E1OV^e>770OB!Pa2KtETIOh77- z2J{2^1JoA-fOKFWkO5#;(l2JD03Z@DP1Y9652XvzKK4N6^tF0e^gk)XKK z3xIC`dO>g=pw|x{0v`eNwBZPF6nGyv2GGk8dLOeBcm<$P(;%YV_*ZD)Yk)Sr7lBK_ zH^60pUR{0$&@0VPCGo8f8)@r+GJC-{0rZaWN8lFlHt;U68F&(S3fKbBOW-GfM}QRo zjRyf(fP7#wFcFvw%mbzXV*oP{1oQxc0U9&C=w-4$5?ug4fZnrw4EzQ70HC)#hk*mY zLEuf`EnqjW7od%DC13@rfNG+UR|7KunlUs(Xy|nXXdu(Tr7;-{gfKC|k43RqvC@x4 z+a7?3_Vn}sl-|2u1?V;I=fD|YKX3pz2y6ph0J4BXDEBtd1iS`h0$YJ6fv12?z#?EO zkPQq0uA|%z;2os*1FzG7$U$N#FbueX%nP7hL9xq~U*_BZPj81V15ZP?3K$E70NDG< zFM7U19=$2L20RPdV?b|U0m&!`xIXTsP{-uz=qO`AOn|kx&QdP!d9n7+G>GW=r!!D3 zj(1_5Yz-(f1E7ASFqZ>m0DUbP1$YCrhUfsQnAR9tkQ@O6KntKAumjovZ2<>>7BXjm z7A{&xXnmn|hb9Y68hRg%No12VXhzYRK}sWm5kL+w1Q-lt1JoH&08RD?ARGt-Xz+ys z7;y4T9Rx}PF$Ty01^}@@cc3po1C?em#Xb=2%Y%~wOdSyb(14|Zt2IIuQ6a7I$X0n| zfYvyTdg?4{oEi%RXf}|+w_51_J2-Iifjd(?UhoW&#wV;Q)obwZ|0RVF2kt*H#@ zYx%@e-%}KGfw2IMtx})_m~6rPzdA!Qvt0(%G31709sEf0BUy%^?xN2(}6XzK$&Sao@xj-Y32dn@d0hUm>76A_f4*~N5YIpLgUQ-cn#0 zupA&g$|t?mz@q>M62-G!nJvqNx5mjTk+0g%Q{U>87n`+#J@f|yTt$|4m4Wf7(9)>Wj4v>>cN zKNCS^|1Z^A$!NH1`I?UpKt?vd4NzU0{FiAedsx-c%!2PzWH*kqDol#+15`1kj{($x zRw4POHAXT51(9@VzS6`dBS=m%$}@?C?#w@wlGHY-ogp!x*{i931le)Q6AQYt_1$T> zRRQGy{f?p?U;rEddw_;yl^D>24emm>M7kYnw?(@DJM_i}uAvje6Fpd%%@N-nwZ9NK z=;SPX_yO&av;VDaW8Z!G^f?DMAto#`E-WgdH*%biv-kS0uKph{8-$#wu*kk)QPHW$ z!Ax(^{&?iT$Z-QCW>9y~(R0oed^0TO8@WtG7}lIT5gE+9m{piTq8rp2>cWzmzjE1m zQE4@-FD7Ze^1soc7yB)CSy@zroXD`a$goIJAIyB%60t6r#fGCerf%$=EA#&P-EO&& zxG>nT8d7pIcdU=8$&guvoanH=VKL&pVCKs4({DR>-Q}LT>6(ri+sL=e z`+rjJGxoVo_nb!RQAZ@|h{CM5Q#z(Luj#=IU><;`ad_wSq zz>7N8H!PBhQu`61Xun1;9t>rfzS=+8k0hlhiCJ3)>)0HM1AKYOZcP|-*Te6%dT|tG ze7EYAq4H$($?T0=ZpT5FEP{rt8|AD0n|l6WhqB~(>&EC9`i=6XH|#}r7^=|zn0>Z? z+L^OC&Clu>q7oJZjWhOQZWxQwU9uOu!&s*7mc3XO2}7BK=n@XOlYuG8HKhJpWo|E)noLa`YZ?0H3EI7{c*nSrNE#bMh$qnCFAboQSNg(-!!9Bq7WrBWn&F^j zt>vl%qA3=AsGR{Y>*mP>+w&Eps1GqD(T5Lq64zq?G0s{jX$WNN(2WP;poH;sGmcHs z#*1$RrX(#5hhH)_O&*>cK-I>CMPcYEBj_#R&XI<|r83TIqQ zIFf%;o-~nR(J?qbK)jg1Jbkot0y=g%x8t*S{`M8M79Agko4^urK7o1Z?7hT)K~dM) zOKeI84fYZdiOe%r```Wxn;(eHum55#f*lR_qvIs)$bl_AJ}+VqZbw|SoDE)L4wcmo z7tsE83Jt8|(P&jWhCus+DspI+V?jvs7Dp2it}O30NibuKx99?MeC6{AXo*w*xvFE) z6fF#)+1?_XG}T6R!QNtS5~j^>H=$Oo70{^K)cuOoihZ?b@YDN2nbVs~wb}{S{Z% z#Bzr_xR>(pvfs z!z`sycRi9tUBwwv*3M|Cy}s+zXQtQZKpDf3M&ZS-qN54ksxj;mBWdS0oWJ+}iy<-2 zH1O2LUD5H3{q5ScvmFW#EFSM;3UAV}EJ(ZPU-ge6ey%GlRg*HVEgVjZRZer0s z+8GV++7A)wmrCEXqdO8DjF-wpXew&Z4t3bMap}3I|Le%L7KJq;9}4VwF^lxHLm^`N zthtjC{_Kw}dVdiwK_T}3DH3Tnx|sE|-CGoX?4|4|wmcuyIMkYQwI#>Cx44&z?#fdLoY{}Uu-lw{?<25$#{yfXE+|k;ia8R&*u;C-&1LC6{&*A*NwR^Tp z`NkGKqZr%|As-a2OpzgTN?t#+W9OgHC$v4o=4-fkoGQu_d-|~~AMMNr$1pcr#-L%d z<-Uuhu}~%a`(uq(ZoQuDy!bp5#cqgFNLjMjp93;nY$mQ;>=?*8>(SxbjT%Yqey85o ze6&*|+NZ9$>@#Z^E#0*I!cHMl9$;R++Hn&TvcDMiO-@LfY)WJpmK61t$@YmQP(%#2 zJiwyW8>_oN7VzJ=*`sdlX5V7~#_L&;HUQ->i?JZS+6f@-KE1hm)b4iE<@T_O;bBf+ zv0?y=^3hJr@Lcfjx;I8W`=zWQo7_vBrJAC}LHzoLr3sgGgi76tFtd1`LN!uMgtV`A zJV!TMde85!1h~nS;0px4J)<{VaDS-@?ftjey}U1}4rA?FEM7oSAMFH?Z8vHj9mO}&D`77-%BwaT1mCmYRsL?J#bQy#Rt)1B7_VFYA-`INOs#+Glxrv-X z_uF!}L!e~Cy%hUf2E8h+5m!lF9oz!HMTztI?IEWOioUxuNQwe{~=rfJiB zRVSx9kbix$`>H2ZHJtE0aAw#mhn{Zf17&aPZik>NgZ|fR_+4r1UA=fT3wv^HL@3cG zmIfGYsPAQgYEwEQ`@XKb9Y(3VLdj!K^(t075ode5)1@^FcGGuMT5>RWe$}N&`VOW= zWTN={5cIj~p&mm-wL@76e>TQ{?z?Kgd&_$0>8l+gcIBm%&2GC!gvcS3zdoq#3A-Wm zZAAIL<9i+}7frg1Ln)oJE3J%57bC{oc8_;@4jf@@QdqX%6#jMxPMC+avxapATOs5vN zVK=@Vd1`C%Z>+SfqOL63KH3pLgBH6lbDFzfLX9!#QVhUiaTZN7oA_}ki)QJf_b@gf zWyApGuCE=&O?DIdQ9aUMfh+C-Nm5cFvDNe6L~`HAYr;V0^*|`KQwy(xB3m| zt}25;{)Yaf_=)tk3$GEZki9AzN3bk5TYNAALixt-<)a-tv~2UsBktCJFaqY#W($j2 zqwpJvw$_Q9kx;)RrV&XM3r3=jJK`hc`J{O(&aT;Qe##;4(2ppLFF>)l=Q)YMTvq6# z9YVCi?WI@OJ>#J)sxe`>69OwJ;gub;;)UNiG&wGY;gI?@gmqQ@Nw489|zqO#UsSLjZtddMdp!Kfdo#R@44o zWp!C-1#%--zH_S5U;n`&;WCE#C!WMCaK#9H_ql6#>YW#^Xn+ctq&+sggnZQ0@Cu9l z)1X03O%)TB2Ge(osbg4bn@QDW;;AvL#*xnPt1Pd^FPj9bW40sRmdeun!s3EZNQ%n}t>x8~ z1(wj#{0badB~oTHA@+@9jv{9~9-4nVn@to~#K+v8XdG3jaM zCzgz7`NHE-=CkK?JW0K<0@|kN`qL=E_(_kh#JTA%vNPP(UE_1PO#n1Z0-s0EbBw zaiFzD1_uZrpy&e|2e6S*1ls{^K(M=Q2@m|geFqY4^!a+d_y24C%e(SrpS{n%=j^@D zKIfjgRrg-H-g^FLtye~M+ZtP(<1u#n*0mvfPlcWD+h<|@0nbdQ=(bnqbe^66W4~6F zJDEgBz^a^JM^9gsQ6!RwB-PjC6%`WqJm3Ppy2`FpWm5Zxnd*Z;-9S4d4rHLWMrBY>$w40Hm6zw$NCm~y?BxZO72o3o z>d0NA_F0HJ!d9JEUPA`mL2J}71vIjtLVB&eYG6@8kv($qBi7yMwOe5?o=okWCO#5^-CBcod*qaY@`}nLWr*Mr8YIPaTK!HBex3!nI5f7}jmvU` zL-(^xJ1gB=?PfbDb-M`^uGUY>t0FuHl&_?uWPd+N zLb3iZ{$arCrjiiWcB$aB{K@ZkJ0M;gL*)o21d6<`< zZ!fK^kZuL31}#PG0wKpFima^2mm0v6p%;TC$qRIEh?*J3P_+Ynl6?T4JY54y?b?eg z3oz*_-T+Syyrj{spl#8AeQ765XwYZTAX&TyloS_e9aI-oDg&7)sU20?%PZ{Vl2jM2 zc61SxJgfv&=1zV|IYvsF03M@JeE|P@Ns{b53(RN)CfAXZfq_D86RFaUV zC56>?sZBRYf|K=kp+Fvg3ra&_ub5O-P&iq-&|QtdaZvK~b&Wm`N<*<$z?ufIlPx+DH%VUVU^0;Ln~KBP8uU883~>BM(Hsl(l%NS^wwprpS{tFP7SCxcSE z!$3)|T8rHDIMws3pstXc6A^!EfG4VBIi;jL(w>(;?b~=&!466d?KVpi^0L0GrdN}s z8sw6!hCC!erA?4i1il8Pb}xg{kQ9Sbhu%1!9Owppis+9H6lg52YV>1JQaAug9iD-u z)KCU^YTy}AU(gkxUZC}$$X{A_%k5L`vr52|zP>7r22Tz&SyXwpRgFj{cq8gC}YsFSqAS zjx3!qwW^O28Ap9-!IT;dk2DbiYItm4b=v&})C>IReyTx(K&hiMkgMxpQ8mqiH1H(P z!ub?ZuK{YvT|vpg2qlT)(i6w+=a?~fHK>5-6 z5!FaEsu=xO@YKPm;c9(9P#T`kASY+v1PuXQJVLG4^{T0`YW^5_7=D4+AU~g z^#1s!wg+?8?wXJ@Ho)3wc`WgQswiEH%3`xcbPYV3<2qGF>J=xrZ+$6m1?|%QW{)h{77b!b1O+ghSs;@%*QO3 zwc;t=EykB1L_i@t;$fEm(u&u{T8zm~l9U3W6VHe-8!NzJPLoQY*>H+De%C$K=wfIo zw}DIHb?9^fN=Q)Zr=!_;92|Av#2b9gMq_K$AelG#m<@fw_2GAM&PJ4wd-XDB0cPXp z;4q2n4LrlkYz)IbNwxb3xLk1LQX786$83B79Q9>TxPO8pyW1!|$2i}&53UtB^CowT z;R^^;$b322$ZI_;@@OM(1bNoTn>;MW%SaSzp|#S2Kk`?#oje%^E*f=CR43QF@Fq`- zeAb1hcv)m$S6&NJzBPKBh!1 z5ghe}p~q-fw&#t07Wr^{-UM>DJx}qs$nhO`t-r-kjzu(yAM{BzzJL-%6I~`Gu?{>X zz#{i_=d~cY?z|D?DR+?rw2}vmHg@L!5afDa=8a@3bYsxppL9m zOfdW>xM+SiFjem1$s0RbXh2K_?qGqD0vU8$Ha%Q{dEy9tkkZ?Y((Zu*EpgTkp341OJ*guMM&AynFg)LUr@S!Vb%IMobyETI@L-&A8Jl@yHzf3y6UFHZ?W20=K49}Gw}OvFxO zlrqm=M=4V^3W?InUmpkxeVjk9?PM{|gOKu8<{4pT`J_K@g3uM04eCImw3qt^@Y>E6 z<6;Qafv4<01de8g8bl*@X}u^g#(^l&tWeXVE|52dTjaL`c~iK>c$>78ItoB?M_wCY zkr#I4jUexIG z4pYO8Oo3Z7z$Kw$Or{94VH>!9%6VVwCAnuO-q^z;FYUyedLZMlaU4Kh86r9>^97~p zDD_ghf3-8O?P-y}=*$~Ix`p#5kQL!PCE8;ADqNoka8VAA;EmB1xgdf!fozW8DKQq= zvkR|{u^4N+sG(MZAs_9+n;`7e6{ab%#OZ7n- zJBrdUrQ{iSS2m0I_ny51y|)N^;Bq_+IS{ZenN5vnQcP*P3#9HmE;RuW_A z-1Ou$Clpk*k5N+9IwMsED{5sZ4WyF%eJpQGw-_7ZUGCnRyKgwSgeMp zk;}*gEb>=TqA^Fddze`WPqtbO6U@{Nh3y1Ni5 z&GO)6Wi~E^aDa0D2Pml%1p{UDgJ!ex@Dy5?jjJG0rzz$I`-CU=wi?1xDS%|&EGnr6 z;M(*)IOH}KBmXoQMqL=HQ5vL7{lh3>weU$b+(T)UV!+6BSgM@g(9>+#4h|`eW$gw^ zSS&lG8Y8e&sU|XSv#}H$B0_nBmFziiBh=opgt%hwN}9@KVFmnlU#npsWVo!SryA~{ zl&08b#xx(HtW`@61|cZT7K{Ri0aLHxhChN+7I5ao_YJlh`wvu?3W?)t z!WQu4Ay(rl$Y_)#-hlb<%=ZnkvMhcZH9Ijt)E2Z6fotHD%eXNb+hwv$Im1{A4nvC_ z1x521I7}U^+Gx$tL>yh!3_TFye#*M;KnWpN*LA}YaO$=BHkH&fk-IT`UzXLlV6f_` zL5bjTaLtitL$Dm^`o=79WCh|0&o=Yhk5~;?Aww2?7po zhtkf5dGX{CRyKs!;QtoB5C3oQ+xQ>Ple4Xc8Cm3fdiPZJGT)bNW#91I_#e%aM_O4K zuNi5T?>)jBM_P>e!zBsx9ClD%ZUontr~9U|PkBv_m3i=e_`inV&aoO#AT>x6R>YVM zt+FMlKTo%&vO#>`C^F&pC^N5jcS^>tf_Cr9(UQuLU~?cj0k}FVM@!m@r|0|d%zS4Z zj#kjYg-$t$Is>>OCCBC~R@1aqw>53j!Z{+}WNMtgm zhte?yQaM^uY6y#*au6jRsjVC>Dao;VDF;#Fk*Lbil2T}TsbWxvS|ULk0Fy{Lh*ATX zD$4O&C`E6orr(m1g9QM!H(jg0PqqGkQb86L114a$b^=jqV2;K=h#FAWpw<6Y>S(D* z9XzTv@E}U{^8hk%p{7TaI$j1){c?bgU!$bI8fZ=9za9lTaf3!TYIGAQCFd4^LiiLw z$5YDxU#D%L^Sq|_Yn0J|Z--)A;1z&8+Y69E`v5vxQZi(}BK;|qdEIy)zGg~$hY__W z0P^vqrrDBG3m*YQPXpA`#{eBf>AVZX;2=u%7Xeq`D}WB7Wa(c4YUesY2Phvq)yT(9 zb#{>aTY%^-fDWP*(!UdfgDAEC4}j!90CcpZRDT=r2Hc4GZB)(c|HcWwwc+2Wm#XL~ z7So8(7b)an04S|ieLyMF13~d84brHM7=Cb~PX~(cFmR-mO||^`L?0!pV>I2dq>F(&Q~Eo&T05f2*_Bz}uRDC>7t)c!l!ic|I}J z+;L6%AW8%CzIOHpq{ly*?xQ5_huT?0$*GSttv_q>mXt)Nwfc{>dZJW3gMVbjInXws zmr3|DN}?;89F)(PVdRA~+SABOf6?SbDF|PIl0DyO@&{4UyMcP@_ok-Tl9K#8$h9hE z3(<1>fNGM3DGmI-k5Kj#6swl|2Z|B#6zg699l!4*91UtDlnn@l>`{$>5T*Kg0EKX& zrbm<}m+*xpai*2kEUsVk6X2E7~;XI=R-qo1+vn4jxh2H{q6yQ9mBTx5_HrBR$#;RP-A? zaB;jtCH$Lf;#HM4mcWmI+Y2td%ErvRtP1`)O#C#sWFA@#|LRSALA8yg@{{0>flHWa zW9htMCj4uFf8g+q_AL1KDEymcV;TGkxU=B;*4Ws?d{qtnn+N~E_2n70@NYi+tF^KI z{1&*Y;Ie1i*g(E@HvC%v|K`}3jc3h)e~-aGaDzFkgMZ-cbv8DX?*g}dA^e+b!;Qnd zx$tih`~x?fcW}VJ#qiHzW7+%&xV_-Q>uoHDm(|0+CGZd2Xdc=C|CYkP1{)j8Pl7uJ zF5yud8_ydag@4Q7AGnD;W*+=o4*%xaSRTIu?ku>z^KC4jubL149*2M6>^x%u{96J4 z7TDNSehb`HaM_R9aKm-$WAJY!{99;aGkDfQ__qrFfh*!{5&Q#ZUu0t?d>6RwtKr{b z8}9YxErx#_{(-CD9hShqHSlkVjaBg@;P!$GUut7BdD&9w0AQN*in78&<+UaCgDY;{#X0zYWOpRW{td zHLihw8%?}ujg2kj`@mfV*Kw_lE#?Jl;ol|`e-GSJ?zay9Z8q_`bvCw~9|!jXxJY4R zD|n57e@~eBC&IRS%e0>KSwJ~X#&+ud#yGVs^IPu^RX!5yKRf&r792N8s;Bz@NtulH z^q(yH<3mt8^g(OexK{YA0^90!A$1JlPh|3*TW7noJvYzxQ2+5>=PvK@JhiKWdncf$<(p_Q@Vn#YN{(T?Pql_@vQS6 zti^w?m!O3^clD&D|G3V?w?gax>3=U1Zq<`rH0}hte`Vqg7s;;Q|Njq0;C`ej11jw5 zFWQp$mCGLNzw^K0iU&K&PySc`y^bQ6X>p|9W=<=}p9Xr6hkoY4{=fRaC-RHfM3-6G z&*LxqiO4`^RX!@-`%yjMx6~e&2)arT=+Jozj!BW=H+Gs1-C0B6l*3(<(Zta2!g**i zx<&E1)}W^*qsjB7esk7K6Vffe{Qw=_nvCw94pJoeX{9EkyVJRvjQqhL{eY0ZnN$ux zO-A?s6EvB>CZlgH^xJy@baR$YCeN-@0Y@Mxc}t!h2FR!&?POf1rCk6W!J4c+%6%1y zB!y_Q4&akfrXy6>BMWe>r^ax&q*cYmigRJiM|2Ki!@?u0 z8V=x#R4E%63FH8yfYHDhU@Sm;nDLSnB~3tKB9IH@0h54yU@~9_rT}!mj|RjlOu;PJ z5r|?(APAt_r=9?f!!>|HPq%8X0-phw0lH;;5;z6W&FFUl+A5s@-UH~iHQh_!4eS9Z z4`|#e%J@!4x&izZxCY?67|}h1Wjp-9_yhj{z6bsZ90c9~4gp7ieLy3y9rzSTfKVU|=mc~I!U62b=r_5_ z&2hScPPf?UcKd$-#{jy+e;7Cdya~`J{Jp?(obx!a0$2&G0xBS{1gd}lfRef+3sAE$ z3`{2=9EbqA0Nq4gD2roeu?xg;3r&0nd<&cf&H?9vqrh>X0O$#H2f6`Wfw$1gQD7g? z2+-F;&jMS4r-3JdML+>C7#Iq?hx2*>^qs^T0Dajpj3KqMP{6c^Rb^%ZYR04?rIZat?0$KqwfK!z3L!Cfffi^&EzyQ$7WCWZ6H=vzbb|}+< zGLi<}8=xscQ=g#sY}B^xCfC0G}L zMk)b_0wU>qF$#S=5C_BpF#tt88ld5&ayd{26aj_63}8AyDKG>W0AvC-fYzC*z(AlM zFa@v!G$m-QnGECsj{q4I|16*vU5c<( zftIp~;Ku``OF9JoJk&Xq6>}1V*8y!vuo_qevp2HF6WVhcpsLu{zaF}e`qs2(jYJ;b7X+F=G9 zdTaaGW4q5^a%L0aqhicavC*L-y*u*@NQ5HhN&TvxW0ps}nx5>;A|WwCk|D~Vz($It zq*nl`3DWm0A03%6`tTVv6de^46^CxbAt;FNx-);)AWS`2qObBeo!=`ro;efPb(x|W zmlTyGEfp(zu&ECHA=5{`>b<1Hs%f)iHX$a;91|5I>5sFPCEmF<@5{fvhML$YbCkLH zfmii$l*~%h#6=}U#bc6ckHqQ^tSINiM@3^7r#;lFKaZlE6B8ATs!T+v1H5@@YoElt zy36ZjM*YMf7~9yoH0CYBtSnI8$wV(Jd#E#Q0Z3cF1*JdmqBIys<}HxLjdbSgt3PL} zKOzH-n5gKeSaCUndAfKysh`fmoW#8h=Ii;d+TESRL%mr_p#Bu?mdEx#y!~#w=VUfF z0nv`dF2G6D_hzy3Q77?AZq|B1l?j`*(;6GhAjLL{Ogx0BX46PK| zR?Nk@59psX5I*Vqwqkb_%amo)x}NAnf8sXuLeB|ZCWL;a4IVW0XN&ir`f}3tidPn* zhMYuAXOkF$b7gckttW=Jr<>ReK2U$Swa2@suf6o4M_-vCCd#1ocM~7d8DreUxMb!l z(%~lB$DwiyRW5N8jnQa(otwBpm0R6}a}4<1ZsKqf=s`D8 z8Uy*C+{6-+pLP>(5D%Nq5`V=_w2cLS-A&w!XR%^bEE>JzCMshQd;O{ANu!@{*!ks( zB$-7cI!F*a|192w#?Nfp_%q&DT#94yx^1FIJQ&q5U)>O~CZ0{xdzW{5h}Z;ltUu3e z^8R7W&1IMCl*B;-;_B)x>Jwn^YHvZ0B*>e*#Q~z*y~X=2t9y1*R?tI z2Kk7cLztHV12o)6v>%K})(>Ppw1WKdNr!#KP3lJL_E(zM4Lap3t|elywMVAwPX`{p zIQ*5P&omqIo7&nu6806EnSY@EO!m|5*6*uYzQ30i6S$!pr*$2uKmC2}<@BwduV#1E zy2P@sYieDKuq2H3A%9^>f^WzC#VAUdpXHf0VpAw(x+bGuP0lI$u+lnk3CXIDtZ1LY z9&K5z@p- z@6mmMeNub&5F~Ug2oY%(n6M^9%!Ov+vmweSkosQzF6>&g`p{q{ag(BwA9RtxqK7$e zmiC5-6F65khKdi8{uytv#8G1Q-%pa0{lTkiOJ(N&AC z#+be8mEFsL;^z?}3K!!<{UQ3ATd$tIU_CGw%Cv$Z5AyM$!v`kk4$OBATbzAfF&Pcv z(}^00pm>QMwfBO~m3!~)=o)XrhC=BI1FGuy`u$@2;+&NQ1nQ6AZ<}6SRda7_M>K$| zIIW;}yNZxL%$Kzh$$fBJW0)xFgZ-HP1pJHr3dWaPyKHvC6o|ndAxWwgTcN;~iT$Lv z6?xwQhE-+;4#?xKdz$rji*KQjpg(f|SZcGIcR@D89Ixh@>mt1` z+SZ@q_p55Xt#wL3Y_oz%ltF<7iKV26*8nI_e)oUB{IPa_TRFE`ufI41g#`V*0ongp zRCE4rs};=(`kMv5$z?O;rSDH}u9+`P{m{1lDuPbw1H)V`iQAhMo);NVV6Tg@q^G~i zps=cg^hNb6SDN)Mh!vz4FaFRE;kAlSNL_yxJUs4_`;$4(dTQB#@f;~S^k;+FL@}{H z^9$5pIB;WF=Y!+lDYGfLp`;kDJ|S5cwlm_;BbY15maAfG7CMR*S8yg9B<@fH`U?n3 zHq5{JOwi#gTH;{ifd--nU^V&KLd<51x&g3Ie=h&}!e`bK3IR#Mr=ktq1Izj*A}$usFHDpBOhB9jRA4U%ADl&YyiGHVs5?mof9)kVZut z4}`ADd*e;bPe{KNA3#BFiWlDuWU70s30-3wtLi*-$tQjd_svzz-Ljw8+~?i^y~JwYauiSkkf{*L|n(I0s6ZUW^Wrh zC~wCJ+R@VdM&Bz$s0}?nBT_*E^mi@zMtl`|Y30UFnjS3sSm0M2ehK=^89Xx*dRM*q z!39kLqx~anpt;}h%voa}YsU}=L6dRym7PrU-yKv2f z*Xm}(OQdEpGvi`cHuG+=tq9QHN8x(z?`ucB=31sSqkO#DEskjCQ#u9eFPe~&|6cuc z|E05=`_qOkL4S3H*WM_!V;`d)qkO#Fv;ik#+YjyetP3x9UdEkV7@U~3dgZqhV!!XCyRQ|;lezl_I7FFEH z!o^%SL=7Ub(D4dJCO&YthKpYF_H@Z3Y6H}&y7c(zeg^8V2-)d+zG&8h*XYAnEJhcj z5$7k`(F&mL^;ovZ7>;4q7Y5A&T<;}iHPaK|=Z=%9%95pdKub`M5zXz22_u+);xBL5 z^>?8RIGXM~q(0?kH!dAlF2e_3Z$Cw^&WA*UCLx@;u9{)(5UHn=1P z?_2h*mh|^?TklDmwc<`T>!>Z_`q(r_hAE4@Pf#4}R3}^b;LxXzS}%Gi%_{3NqC#8s zUs+R?MfCof5d^P)dHu~29dqD?{&tl+!zcKiyR?L6z4qz2N@V5W!j>i$(7J7e|KEJV&Ve(oTwPhrm`L4!e}-)p&a+2>5i4l*Et=nPc3Ug zL)z|7e`(8*o^L+w_wHMCVWB-Jy2uyf$H29jV&)iFv_iZHEA&zJXZ zc;1I%9)oQ^R^>zyJOMrFFLyDPq`mV^*2ewHorBm!EWkTO%s3eKrmzwDOtA4Fe-#dJ z3HmEv{;*z0g+4yb!TU*Na?`f`4J7gNs+N%};Xf{B9Rm}GTQ?~bh zFLhb-S);^I>Q}Q?e`U-c#$+w-@WqR`X6c`?e$u+j;n9pfcuBcq#JCBpmw0Ldiw?bo zJEat?`AG>U*sON<%BzYaOQ96A>YcOY!G;eS#jOb}IOPP=#2sqKUbuOu&a`M{HB=~> zYNJw{KJT#St4pZ&1^)_5{NuoZjg2eEsC^ag6oV$BuQd}{nQ+TxfiCoxukw;A{OU+_ z$YTMbUoMLl@pIX*4!uy-Gry#$w4l&l9$7IZUu4x_x*VR%Tui+t+tthD~&$mYw<&{Q?Bjv24*iz42MPV(jT9@ZDCt;m~9ilv&6^eNdbSBW_ z>$B#u8BS`kI+rE;io>(m89#dky__g=W?tb8dwEgb)Pnp-ND7Llig#<65Zh|ekhubF pJUN%SiMrXW?)80hST1{gi-R3%_4;2HvWiGv=5EDv!O=js{{uPFPA&id diff --git a/package.json b/package.json index 052f17d..10086bd 100644 --- a/package.json +++ b/package.json @@ -13,12 +13,10 @@ "express": "^4.18.2", "mysql": "^2.18.1", "mysql2": "^2.2.0", - "sass": "^1.71.1", - "vue": "^2.7.7", - "vue-router": "^3.5.4", "yaml": "^2.4.0" }, "devDependencies": { + "@types/bun": "^1.0.8", "@types/express": "^4.17.20", "@types/mysql": "^2.15.23", "@types/node": "^16.11.45", @@ -26,9 +24,12 @@ "@vitejs/plugin-vue2": "^1.1.2", "@vue/tsconfig": "^0.1.3", "npm-run-all": "^4.1.5", + "sass": "^1.71.1", "terser": "^5.14.2", "typescript": "~4.7.4", "vite": "^3.0.2", + "vue": "^2.7.7", + "vue-router": "^3.5.4", "vue-tsc": "^0.38.8" } } diff --git a/pseudosubs.sqlite b/pseudosubs.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..9174ca5fe9fca2dc0a663c3b4325eaf33d973537 GIT binary patch literal 86016 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 literal 0 HcmV?d00001 diff --git a/srv/Admin/ED/nuevoED.ts b/srv/Admin/ED/nuevoED.ts index 5be5439..9c7f523 100644 --- a/srv/Admin/ED/nuevoED.ts +++ b/srv/Admin/ED/nuevoED.ts @@ -1,3 +1,5 @@ +import {sqliteConnection as con} from "../../index"; + interface Data { anime_ID: number, num_ED: number, @@ -6,17 +8,16 @@ interface Data { eps: string } -const nuevoED = (req: any, res: any) => { +export const nuevoED = (req: any, res: any) => { const YAML = require('yaml'); const data: Data = YAML.parse(req.body.data); - const con = require('../../index').conexionMySQL; if (data) { const query = `INSERT INTO ED (anime_ID, num_ED, nombre, artista, eps) VALUES ( ${data.anime_ID}, ${data.num_ED}, ${con.escape(data.nombre)}, ${con.escape(data.artista)}, ${con.escape(data.eps)} )`; - con.query(query, (err: Error) => { + con.query(query, (err) => { if (!err) { res.send("exito: true"); } else { @@ -31,5 +32,3 @@ const nuevoED = (req: any, res: any) => { } }; - -module.exports.nuevoED = nuevoED; \ No newline at end of file diff --git a/srv/Admin/ED/obtenerEDs.ts b/srv/Admin/ED/obtenerEDs.ts index d6e6735..b2095f8 100644 --- a/srv/Admin/ED/obtenerEDs.ts +++ b/srv/Admin/ED/obtenerEDs.ts @@ -1,3 +1,5 @@ +import {sqliteConnection as con} from "../../index"; + interface RespuestaED { ED_ID: number, anime_ID: number, @@ -7,17 +9,16 @@ interface RespuestaED { eps: string } -const obtenerEDs = (req: any, res: any) => { +export const obtenerEDs = (req: any, res: any) => { const YAML = require('yaml'); const anime_ID: number = req.params.anime_ID; - const con = require('../../index').conexionMySQL; if (anime_ID) { const query = `SELECT * FROM ED WHERE anime_ID=${anime_ID}`; - con.query(query, (err: Error, response: RespuestaED[]) => { + con.query(query, (err, response: RespuestaED[]) => { if (!err) { res.send(YAML.stringify(response)); @@ -34,5 +35,3 @@ const obtenerEDs = (req: any, res: any) => { } }; - -module.exports.obtenerEDs = obtenerEDs; \ No newline at end of file diff --git a/srv/Admin/Eps/crearLink.ts b/srv/Admin/Eps/crearLink.ts index 8cd76c9..b22a15b 100644 --- a/srv/Admin/Eps/crearLink.ts +++ b/srv/Admin/Eps/crearLink.ts @@ -1,3 +1,5 @@ +import {sqliteConnection as con} from "../../index"; + interface formatoDataARecibir { opcion_ID: number, num_ep: number, @@ -6,9 +8,8 @@ interface formatoDataARecibir { peso: string } -const crearLink = (req: any, res: any) => { +export const crearLink = (req: any, res: any) => { - const con = require('../../index').conexionMySQL; const YAML = require('yaml'); const parametros: formatoDataARecibir = YAML.parse(req.body.params); @@ -18,7 +19,7 @@ const crearLink = (req: any, res: any) => { const query = `INSERT INTO eps (opcion_ID, num_ep, visitas, link, peso) VALUES (${parametros.opcion_ID}, ${parametros.num_ep}, ${parametros.visitas}, ${con.escape(parametros.link)}, ${con.escape(parametros.peso)} )`; - con.query(query, (err: Error) => { + con.query(query, (err) => { if (!err) { res.send("error: false"); @@ -35,5 +36,3 @@ const crearLink = (req: any, res: any) => { } }; - -module.exports.crearLink = crearLink; \ No newline at end of file diff --git a/srv/Admin/Eps/estadisticas.ts b/srv/Admin/Eps/estadisticas.ts index 126d5ba..d7b077c 100644 --- a/srv/Admin/Eps/estadisticas.ts +++ b/srv/Admin/Eps/estadisticas.ts @@ -1,16 +1,17 @@ import {Connection, MysqlError} from "mysql"; import * as core from "express-serve-static-core"; +import {sqliteConnection as con} from "../../index"; + -const con: Connection = require('../../index').conexionMySQL; const YAML = require('yaml'); interface respuesta { peso: string } -const estadisticas = (req: core.Request, res: core.Response) => { +export const estadisticas = (req: core.Request, res: core.Response) => { - con.query(`SELECT peso FROM eps`,(err: MysqlError, respuestas: respuesta[]) => { + con.query(`SELECT peso FROM eps`,(err, respuestas: respuesta[]) => { if (!err) { let totalMB = 0; @@ -30,5 +31,3 @@ const estadisticas = (req: core.Request, res: core.Response) => { }); }; - -module.exports.estadisticas = estadisticas; \ No newline at end of file diff --git a/srv/Admin/Eps/obtenerLinks.ts b/srv/Admin/Eps/obtenerLinks.ts index 0f77d9d..547c0fb 100644 --- a/srv/Admin/Eps/obtenerLinks.ts +++ b/srv/Admin/Eps/obtenerLinks.ts @@ -1,3 +1,5 @@ +import {sqliteConnection as con} from "../../index"; + interface epsRespuesta { ep_ID: number, opcion_ID: number, @@ -7,9 +9,8 @@ interface epsRespuesta { peso: string } -const obtenerLinks = (req: any, res: any) => { +export const obtenerLinks = (req: any, res: any) => { - const con = require('../../index').conexionMySQL; const YAML = require('yaml'); const opcion_ID = req.params.opcion_ID; @@ -17,7 +18,7 @@ const obtenerLinks = (req: any, res: any) => { if (opcion_ID) { const query = `SELECT * FROM eps WHERE opcion_ID=${opcion_ID}`; - con.query(query, (err: Error, response: epsRespuesta[]) => { + con.query(query, (err, response: epsRespuesta[]) => { if (!err) { res.send(YAML.stringify(response)); @@ -34,5 +35,3 @@ const obtenerLinks = (req: any, res: any) => { } }; - -module.exports.obtenerLinks = obtenerLinks; \ No newline at end of file diff --git a/srv/Admin/Eps/obtenerVariantes.ts b/srv/Admin/Eps/obtenerVariantes.ts index b6b6a96..58b6513 100644 --- a/srv/Admin/Eps/obtenerVariantes.ts +++ b/srv/Admin/Eps/obtenerVariantes.ts @@ -1,3 +1,5 @@ +import {sqliteConnection as con} from "../../index"; + interface respuestaLinks { opcion_ID: number, links_ID: number, @@ -8,9 +10,8 @@ interface respuestaLinks { color: string } -const obtenerVariantes = (req: any, res: any) => { +export const obtenerVariantes = (req: any, res: any) => { - const con = require('../../index').conexionMySQL; const YAML = require('yaml'); const anime_ID: string = req.params.anime_ID; @@ -19,7 +20,7 @@ const obtenerVariantes = (req: any, res: any) => { const query = `SELECT * FROM links_opciones WHERE links_ID=(SELECT links_ID FROM links WHERE anime_ID=${anime_ID})`; - con.query (query, (err: Error, response: respuestaLinks[]) => { + con.query (query, (err, response: respuestaLinks[]) => { if (!err) { res.send(YAML.stringify(response)); @@ -36,5 +37,3 @@ const obtenerVariantes = (req: any, res: any) => { } }; - -module.exports.obtenerVariantes = obtenerVariantes; \ No newline at end of file diff --git a/srv/Admin/OP/nuevoOP.ts b/srv/Admin/OP/nuevoOP.ts index c4ca932..e2d9cfa 100644 --- a/srv/Admin/OP/nuevoOP.ts +++ b/srv/Admin/OP/nuevoOP.ts @@ -1,6 +1,7 @@ -const nuevoOP = (req: any, res: any) => { +import {sqliteConnection as con} from "../../index"; + +export const nuevoOP = (req: any, res: any) => { - const con = require('../../index').conexionMySQL; const YAML = require('yaml'); const data = YAML.parse(req.body.data); @@ -21,5 +22,3 @@ const nuevoOP = (req: any, res: any) => { ); }; - -module.exports.nuevoOP = nuevoOP; \ No newline at end of file diff --git a/srv/Admin/OP/obtenerOPs.ts b/srv/Admin/OP/obtenerOPs.ts index 5304311..93d7009 100644 --- a/srv/Admin/OP/obtenerOPs.ts +++ b/srv/Admin/OP/obtenerOPs.ts @@ -1,6 +1,7 @@ -const obtenerOPs = (req: any, res: any) => { +import {sqliteConnection as con} from "../../index"; + +export const obtenerOPs = (req: any, res: any) => { - const con = require('../../index').conexionMySQL; const YAML = require('yaml'); const animeID: number = req.params.id; @@ -24,5 +25,3 @@ const obtenerOPs = (req: any, res: any) => { res.send("error: true"); } }; - -module.exports.obtenerOPs = obtenerOPs; \ No newline at end of file diff --git a/srv/Admin/crearAnime.ts b/srv/Admin/crearAnime.ts index 936afee..63c6b9d 100644 --- a/srv/Admin/crearAnime.ts +++ b/srv/Admin/crearAnime.ts @@ -1,6 +1,7 @@ -const crearAnime = (req: any, res: any) => { +import {sqliteConnection as con} from "../index"; + +export const crearAnime = (req: any, res: any) => { - const con = require('../index').conexionMySQL; const YAML = require('yaml'); if (req.body.data) { @@ -28,5 +29,3 @@ const crearAnime = (req: any, res: any) => { res.send("Error. El servidor no recibio ningun dato."); } }; - -module.exports.crearAnime = crearAnime; \ No newline at end of file diff --git a/srv/Admin/obtenerTodosAnimes.ts b/srv/Admin/obtenerTodosAnimes.ts index 0769dfb..5934d26 100644 --- a/srv/Admin/obtenerTodosAnimes.ts +++ b/srv/Admin/obtenerTodosAnimes.ts @@ -1,6 +1,7 @@ -const obtenerTodosAnimes = (req: any, res: any) => { +import {sqliteConnection as con} from "../index"; + +export const obtenerTodosAnimes = (req: any, res: any) => { - const con = require('../index').conexionMySQL; const YAML = require('yaml'); con.query( @@ -18,5 +19,3 @@ const obtenerTodosAnimes = (req: any, res: any) => { ); }; - -module.exports.obtenerTodosAnimes = obtenerTodosAnimes; \ No newline at end of file diff --git a/srv/Animes/obtenerDatos.ts b/srv/Animes/obtenerDatos.ts index 179de17..498a026 100644 --- a/srv/Animes/obtenerDatos.ts +++ b/srv/Animes/obtenerDatos.ts @@ -1,4 +1,6 @@ import {Connection} from "mysql"; +import {sqliteConnection as con} from "../index"; + interface RespuestaDatos { estudio: string, @@ -39,8 +41,6 @@ const obtenerDatos = (req: any, res: any) => { const anime_ID = req.params.anime_ID; - const con: Connection = require('../index').conexionMySQL; - const respuesta: any = {}; const gestor = new GestorDeTareas(() => { console.log(YAML.stringify(respuesta)); @@ -49,7 +49,7 @@ const obtenerDatos = (req: any, res: any) => { const query1 = `SELECT estudio, eps, alAire, temporada, anio, fuente, generos FROM animes WHERE anime_ID=${anime_ID}`; gestor.agregarTarea(); - con.query(query1, (err: Error, res: RespuestaDatos[]) => { + con.query(query1, (err, res: RespuestaDatos[]) => { if (!err) { const data = res[0]; @@ -72,7 +72,7 @@ const obtenerDatos = (req: any, res: any) => { const query2 = `SELECT * FROM OP WHERE anime_ID=${anime_ID}`; gestor.agregarTarea(); - con.query(query2, (err: Error, res: RespuestaOP[]) => { + con.query(query2, (err, res: RespuestaOP[]) => { if (!err) { const ops: any = {}; @@ -95,7 +95,7 @@ const obtenerDatos = (req: any, res: any) => { const query3 = `SELECT * FROM ED WHERE anime_ID=${anime_ID}`; gestor.agregarTarea(); - con.query(query3, (err: Error, res: RespuestaED[]) => { + con.query(query3, (err, res: RespuestaED[]) => { if (!err) { const eds: any = {}; diff --git a/srv/GestorDeTareas/GestorDeTareas.ts b/srv/GestorDeTareas/GestorDeTareas.ts index 2b99b4d..4c51a93 100644 --- a/srv/GestorDeTareas/GestorDeTareas.ts +++ b/srv/GestorDeTareas/GestorDeTareas.ts @@ -1,4 +1,4 @@ -class GestorDeTareas { +export class GestorDeTareas { tareas: boolean[] = []; alCompletar: (() => void); @@ -20,5 +20,3 @@ class GestorDeTareas { this.alCompletar(); } } - -module.exports.GestorDeTareas = GestorDeTareas; \ No newline at end of file diff --git a/srv/LinksAnimes/modificarLink.ts b/srv/LinksAnimes/modificarLink.ts index 4f2975f..471fde1 100644 --- a/srv/LinksAnimes/modificarLink.ts +++ b/srv/LinksAnimes/modificarLink.ts @@ -1,12 +1,13 @@ -const modificarLink = (req: any, res: any) => { +import {sqliteConnection as con} from "../index"; + +export const modificarLink = (req: any, res: any) => { const ep_ID = req.body.ep_ID; - const con = require('../index').conexionMySQL; con.query( `UPDATE eps SET visitas=visitas+1 WHERE ep_ID=${ep_ID};`, - (err: Error) => { + (err) => { if (!err) { res.send("Actualizado con exito."); } else { @@ -16,5 +17,3 @@ const modificarLink = (req: any, res: any) => { ); }; - -module.exports.modificarLinks = modificarLink; \ No newline at end of file diff --git a/srv/LinksAnimes/obtenerLinks.ts b/srv/LinksAnimes/obtenerLinks.ts index fe05509..547c465 100644 --- a/srv/LinksAnimes/obtenerLinks.ts +++ b/srv/LinksAnimes/obtenerLinks.ts @@ -1,6 +1,6 @@ -const GestorDeTareas = require("../GestorDeTareas/GestorDeTareas").GestorDeTareas; - -const YAML = require('yaml'); +import {GestorDeTareas} from "../GestorDeTareas/GestorDeTareas"; +import {sqliteConnection as con} from "../index"; +import YAML from 'yaml'; interface links { links_ID: number, @@ -48,9 +48,8 @@ interface Links { } } -const obtenerLinks = (req: any, res: any) => { +export const obtenerLinks = (req: any, res: any) => { - const con = require('../index').conexionMySQL; const animeID = req.body.animeID; @@ -60,7 +59,7 @@ const obtenerLinks = (req: any, res: any) => { con.query( `SELECT * FROM links WHERE anime_ID=${animeID} `, - (err: Error, response: links[]) => { + (err, response: links[]) => { if (!err && response[0] ) { const subData: links = response[0]; @@ -74,7 +73,7 @@ const obtenerLinks = (req: any, res: any) => { con.query( `SELECT * FROM links_opciones WHERE links_ID=${subData.links_ID}`, - (err: Error, response: links_opciones[]) => { + (err, response: links_opciones[]) => { if (!err && response[0]) { for (const opcionID in response) { @@ -93,7 +92,7 @@ const obtenerLinks = (req: any, res: any) => { con.query( `SELECT * FROM eps WHERE opcion_ID=${opcion.opcion_ID}`, - (err: Error, response: eps[]) => { + (err, response: eps[]) => { if (!err && response[0]) { for (const epID in response) { @@ -148,5 +147,3 @@ const obtenerLinks = (req: any, res: any) => { } }; - -module.exports.obtenerLinks = obtenerLinks; \ No newline at end of file diff --git a/srv/index.ts b/srv/index.ts index a78de1f..7bfc2ab 100644 --- a/srv/index.ts +++ b/srv/index.ts @@ -1,6 +1,21 @@ import express from 'express'; import * as core from "express-serve-static-core"; import mysql from "mysql2"; +import {Database} from "bun:sqlite"; + +/* +import {obtenerLinks} from './LinksAnimes/obtenerLinks'; +import {crearAnime} from './Admin/crearAnime'; +import {obtenerTodosAnimes} from './Admin/obtenerTodosAnimes'; +import {obtenerOPs} from './Admin/OP/obtenerOPs'; +import {nuevoOP} from './Admin/OP/nuevoOP'; +import {obtenerEDs} from './Admin/ED/obtenerEDs'; +import {nuevoED} from './Admin/ED/nuevoED'; +import {obtenerVariantes} from './Admin/Eps/obtenerVariantes'; +import {obtenerLinks} from './Admin/Eps/obtenerLinks'; +import {crearLink} from './Admin/Eps/crearLink'; +import {estadisticas} from './Admin/Eps/estadisticas'; +*/ console.log("express??"); @@ -15,7 +30,7 @@ const expressApp = (app: core.Express) => { app.get("/"); app.post('/links', require('./LinksAnimes/obtenerLinks').obtenerLinks); - app.put('/links', require('./LinksAnimes/modificarLink').modificarLinks); + app.put('/links', require('./LinksAnimes/modificarLink').modificarLink); app.put('/a/', require('./Admin/crearAnime').crearAnime); app.get('/a/', require('./Admin/obtenerTodosAnimes').obtenerTodosAnimes); @@ -33,7 +48,24 @@ const expressApp = (app: core.Express) => { app.get('/estadisticas', require('./Admin/Eps/estadisticas').estadisticas); } -export const conexionMySQL = (() => { +const sqlite = new Database('pseudosubs.sqlite'); + +export const sqliteConnection = { + escape: (str: string): string => { + return str; + }, + query: (query: string, callback: (err: Error|null, rows: any) => void) => { + const q = sqlite.query(query); + try { + const result = q.all(); + callback(null, result); + } catch (e) { + callback(e, null); + } + }, +}; + +const conexion = (() => { const con = mysql.createConnection({ host: 'localhost', user: 'root', @@ -52,7 +84,6 @@ export const conexionMySQL = (() => { return con; })(); -const color = '#cc2f66'; expressApp(app); diff --git a/srv/tablas.sqlite b/srv/tablas.sqlite new file mode 100644 index 0000000..9b62229 --- /dev/null +++ b/srv/tablas.sqlite @@ -0,0 +1,75 @@ +-- Tabla Animes + +CREATE TABLE animes ( + anime_ID ROWID, + titulo TEXT, + link TEXT, + imgUrl TEXT, + descripcion TEXT, + estudio TEXT, + eps INTEGER, + alAire TEXT, + temporada TEXT, + anio TEXT, + fuente TEXT, + generos TEXT, + color TEXT +); + +-- Tabla que registra cuales animes estan en el menu principal + +CREATE TABLE enPagPrin ( + pagPrin_ID ROWID, + posicion INTEGER, + anime_ID INTEGER +); + +-- Tabla OP + +CREATE TABLE OP ( + OP_ID ROWID, + anime_ID INTEGER, + num_OP INTEGER, + nombre TEXT, + artista TEXT, + eps TEXT +); + +-- Tabla ED + +CREATE TABLE ED ( + ED_ID ROWID, + anime_ID INTEGER, + num_ED INTEGER, + nombre TEXT, + artista TEXT, + eps TEXT +); + +-- Tabla con los links (y sus tablas complementarias) + +CREATE TABLE links ( + links_ID ROWID, + anime_ID INTEGER, + aviso TEXT, + sigEp TEXT +); + +CREATE TABLE links_opciones ( + opcion_ID ROWID, + links_ID INTEGER, + num_opcion INTEGER, + formato TEXT, + res TEXT, + servidor TEXT, + color TEXT +); + +CREATE TABLE eps ( + ep_ID ROWID, + opcion_ID INTEGER, + num_ep INTEGER, + visitas INTEGER DEFAULT 0, + link TEXT, + peso TEXT +); \ No newline at end of file