From a89279ee650d52c1c6ca69c5582455f5e734ed99 Mon Sep 17 00:00:00 2001 From: akhdanre Date: Thu, 10 Oct 2024 14:41:12 +0700 Subject: [PATCH] feat: simulasi repository pattern --- app/blueprints/__init__.py | 2 ++ .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 232 bytes .../__pycache__/auth.cpython-313.pyc | Bin 0 -> 1096 bytes .../register_blueprint.cpython-313.pyc | Bin 0 -> 581 bytes .../__pycache__/user.cpython-313.pyc | Bin 0 -> 603 bytes app/blueprints/auth.py | 22 ++++++++++++++++ {blueprints => app/blueprints}/user.py | 4 +-- app/controllers/__init__.py | 2 ++ .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 255 bytes .../auth_controller.cpython-313.pyc | Bin 0 -> 1182 bytes .../user_controller.cpython-313.pyc | Bin 919 -> 914 bytes app/controllers/auth_controller.py | 19 ++++++++++++++ .../controllers}/lstm_controller.py | 0 .../controllers}/user_controller.py | 2 +- {controllers => app/models}/__init__.py | 0 app/repositories/__init__.py | 1 + .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 201 bytes .../user_repository.cpython-313.pyc | Bin 0 -> 1022 bytes app/repositories/user_repository.py | 24 ++++++++++++++++++ app/services/__init__.py | 2 ++ .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 240 bytes .../__pycache__/auth_service.cpython-313.pyc | Bin 0 -> 1059 bytes .../__pycache__/user_service.cpython-313.pyc | Bin 0 -> 824 bytes app/services/auth_service.py | 21 +++++++++++++++ {services => app/services}/lstm.py | 0 {services => app/services}/user_service.py | 4 +-- blueprints/__pycache__/user.cpython-313.pyc | Bin 629 -> 0 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 139 -> 0 bytes main.py | 3 ++- models/__init__.py | 0 repositories/__init__.py | 0 .../__pycache__/__init__.cpython-313.pyc | Bin 140 -> 0 bytes .../user_repository.cpython-313.pyc | Bin 588 -> 0 bytes repositories/user_repository.py | 3 --- services/__init__.py | 0 services/__pycache__/__init__.cpython-313.pyc | Bin 136 -> 0 bytes .../__pycache__/user_service.cpython-313.pyc | Bin 834 -> 0 bytes 37 files changed, 99 insertions(+), 10 deletions(-) create mode 100644 app/blueprints/__init__.py create mode 100644 app/blueprints/__pycache__/__init__.cpython-313.pyc create mode 100644 app/blueprints/__pycache__/auth.cpython-313.pyc create mode 100644 app/blueprints/__pycache__/register_blueprint.cpython-313.pyc create mode 100644 app/blueprints/__pycache__/user.cpython-313.pyc create mode 100644 app/blueprints/auth.py rename {blueprints => app/blueprints}/user.py (69%) create mode 100644 app/controllers/__init__.py create mode 100644 app/controllers/__pycache__/__init__.cpython-313.pyc create mode 100644 app/controllers/__pycache__/auth_controller.cpython-313.pyc rename {controllers => app/controllers}/__pycache__/user_controller.cpython-313.pyc (52%) create mode 100644 app/controllers/auth_controller.py rename {controllers => app/controllers}/lstm_controller.py (100%) rename {controllers => app/controllers}/user_controller.py (84%) rename {controllers => app/models}/__init__.py (100%) create mode 100644 app/repositories/__init__.py create mode 100644 app/repositories/__pycache__/__init__.cpython-313.pyc create mode 100644 app/repositories/__pycache__/user_repository.cpython-313.pyc create mode 100644 app/repositories/user_repository.py create mode 100644 app/services/__init__.py create mode 100644 app/services/__pycache__/__init__.cpython-313.pyc create mode 100644 app/services/__pycache__/auth_service.cpython-313.pyc create mode 100644 app/services/__pycache__/user_service.cpython-313.pyc create mode 100644 app/services/auth_service.py rename {services => app/services}/lstm.py (100%) rename {services => app/services}/user_service.py (67%) delete mode 100644 blueprints/__pycache__/user.cpython-313.pyc delete mode 100644 controllers/__pycache__/__init__.cpython-313.pyc delete mode 100644 models/__init__.py delete mode 100644 repositories/__init__.py delete mode 100644 repositories/__pycache__/__init__.cpython-313.pyc delete mode 100644 repositories/__pycache__/user_repository.cpython-313.pyc delete mode 100644 repositories/user_repository.py delete mode 100644 services/__init__.py delete mode 100644 services/__pycache__/__init__.cpython-313.pyc delete mode 100644 services/__pycache__/user_service.cpython-313.pyc diff --git a/app/blueprints/__init__.py b/app/blueprints/__init__.py new file mode 100644 index 0000000..85b8a28 --- /dev/null +++ b/app/blueprints/__init__.py @@ -0,0 +1,2 @@ +from .auth import auth_blueprint +from .user import user_blueprint diff --git a/app/blueprints/__pycache__/__init__.cpython-313.pyc b/app/blueprints/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f5fb878ad3291723285d5e805626329d1a93d995 GIT binary patch literal 232 zcmey&%ge<81dkfn(_Mh{V-N=hn4pZ$GC;;uhG2$ZMsEf$#v(=q5Sz)H$&0y&S%D#) zS(D`@BT$JZ<1N0#(vpn$q@2>!f}+g45|Bt~acU7l#7~pu77IvG5i?N7Ef$b$5etyH zlHoIuWVog4W)+j1pOP9=SejWCpPQJSS`?F5P!Iz*vp6O`J~J<~BtBlRpz;=nO>TZl gX-=wL5y&4PR}^yti4V+-jEr{~6z(x76mbCg0HT3BM*si- literal 0 HcmV?d00001 diff --git a/app/blueprints/__pycache__/auth.cpython-313.pyc b/app/blueprints/__pycache__/auth.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..895a8eb8ee9dec3ae87a3acef47adf44c286b5b3 GIT binary patch literal 1096 zcmb_a%Wl(95WUxr#EF}v4FrjF0<`s33&IBVDwppt`$SvO;2#C{ApyodsD% zd;t=w#FC}^Bdil;QDLbo*sx3GAK;GjGLgFLNFL8zpL^!ajDu7viKqo%;th#G=r<&D z<7YwelLluvv-Ames5?Wai*Ltpx?=OW z6wx_8QW!r2rS#gewlFVxjsm#rEBnv1npHQnPrX)O?^N3c(W+e5h(&gFq?s9hy;owxz^=`Fe=(?W{m%CWhY(|83XiRq%PA07W|Hypd zdB>{vOydQ)ODQqP`bOP^#TZ|r%}ca%6+_w0?@xa0jW-?)(!a9OI9nKGCIVvCFK}*z zb6?xuzPC5Txgmah#bA6dU=dTEKomtay*r)|q8&0U{kcw9vs)5Db*q##r0hc+w2Is6V3M;2-ek z2#ONuBo1zc;3#-bNNu2a;GXlH_v6O-{0b1=-|F5E$q!a$q@*C;BQS;rG(-)m0!5Lr zQd6obstHzWvZ|p*SlVJoX=nyqNX&UTQ~%;3riipk-wApI)|_y3-a74vu8-Zz5nIB* z#knO?9p7&Y&Pz!p$uB-8Hijk~WxZ+8$!uKMO})kcB4wJAiS%g3x~WDR=z85?l${4T z95rI5z#NHy>ldT_%7NV;c3k@^?B28nPR~V~Cb$1q3+%;WmVX@;7R>?jH|Sh^i`X5! zOZ`n6&(e4-zsOQXdzGb_BA{;Sk#@#6MLtbbpw`yBwZ&IXCSUOIwUc#{o=`+(_Scw{87N^z26JT_dHIq7KwUbtjH^f)!pq6f|Tj<@WgKi zttUz#eW~IkOCnvs@#EW}>^_UB@47H>U@LJ!?sr==U9-bOHx>N>i5!mYolVyA+nk+8 zrvta!JmbWg{XY9RbssRvU+#Y)`LWX^K~NNF2*0h$ja9$4>SL=h(i$``x(Buy>z}-4 za7NN&ToC(~XC?yDWH;-&y=IrYZk$hDJ_?d4pLO!1kUwZzqLFT$fA1zoQqT z6h9t~Xy0SdF5&?40ahqQq5uE@ literal 0 HcmV?d00001 diff --git a/app/controllers/__pycache__/auth_controller.cpython-313.pyc b/app/controllers/__pycache__/auth_controller.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7da4babc8fa97a960aec7b56745c714184196537 GIT binary patch literal 1182 zcmZ8f%}*0i5P$pCT}w;Xq);FxY>|Yl3BC1VjM0#IfXIQhr#5+6%cHJrcguUbL^ydM zrbjQF_y_dA5z#<48cjTLQ>yXm%yt)qNjp2=Z{{~MDwm4{=;%Q2nKB_iP{~QngwZ1q z4v9k?X^pH(Tw0a6Y@sf%DXS`1Q&|C7NmSPMH;;GfOdzVtQG3)CY1rLC=vZG`;i#q5-N z#Fo}=m19s+ieVrMf1HTpvq{N?UUCx*sS4(A2`p|U%_sLe-Efn2c4BXz_T6p9JMLfr zw!C%GNz<F%=ulov1A9%r+*vw$I#fRyvzheSm>q%VIv}|8 z6p#ZD4oMpWQrgItnd|snxCA1QT4V!rZ_oxdaD!S>GlMjM%{g*Qc9ez^DD7K$U`xp( z7KyE{KijX0xZ7nySe!-N+hx|K8@aZU6h!1ku}JhjINcsg)YPGIY$Y*zETVXAyo9Re zhdnRgI32913?Dv~+HqGRF*p;0Fc3^&vIWE^F{Xww)f@Pxr6#~5R)7JxmFd&U{Kv}t zNu@qi&&=wnSwA-Gr{>bJx%5swF_(wh_vyK_+VWX-_Lr_!i$mjgk(jl&uTCn~2gBmG zp^h!5opLO^ZtJ+;!0j{GZ;{e|xEcE>mnhwdT|e_wDBbe7hED> delta 91 zcmbQlKAoNSGcPX}0}zP&v!`2aVNJ$c ze4)juMM0?r`Nf$f`9+m}noPI&OMyc1MR2hqW}woQ44;7{!!3O`tC-~cl+>8Q(#)#( z+{EnEqL{>jf*82+%+%tT`1s7c%#!$cy@JYH95%W6DWy57c10XO{UBS5L5vT~jEs!; K7_^JnfE)nj(=_V< literal 0 HcmV?d00001 diff --git a/app/repositories/__pycache__/user_repository.cpython-313.pyc b/app/repositories/__pycache__/user_repository.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..55836a8dc3cc4d5b9813569fca3b50d89fd75f65 GIT binary patch literal 1022 zcmZ`%&ubGw6n^_Fzte3^Lep66B2`#~h>C)xND(Viw1*A>4}oEmY~#{RHl5jElT$$u zdlJN=N3Z@jf(T)*o_cE=#GCkLHz`K+!G812%$xV#_uh{4`3#`_dX;QHRRO-s&D8V> z8JCe9Lm93DfeH}iE_zC1&{l1&8E;}tOg7_nB*#z(rVwB%QJ6*)q7seh#Hi{dL6RgD z^P4KuNxA~eAQ{92$+BcSXXnLSjk|2e?FHNm12#BOFr-L0doNl}cX%mYnY+>MIG$f^ z1|5;@Ih?-?SnJm9JGL%VuO;-Z({Y92N*|G$-k(STLVFlAhGrvZY`6zbr{}veNK_N^T)ahwz6$2!suhU9Er|df0xU*mbmwLt=Ob6MT# z_3CUY%X4{MKBN~XgKBRe@@+Syj_=bbs92tDMRn$O0Wz!rS4|@JniGEGukI z1|>PjaYkb5Nd70L08f?yx@t|`k-mQ!j(*afnzHsBpoQ_DVQ*?GS1nkDELhM6Tis@9 zd}*s}4i}+ewYJ7g(k~p(;h8eewRHnptN$DfcYXTp#Nvswo@WSsr)%86&Xr9L96de zo}+ZX@A#7&lhR#}@zD3WZa1Jb62xS~*&>1{QOZLn^qSNOL*_O5q07;0Njk_(kvJxm zMj)HV?<2ehtfo*L6_-aPdsM!5mNwFv)4AwqX;iv?ab)K6iNnqFD~eJ1kM7s1(luA*${-MqTm_ literal 0 HcmV?d00001 diff --git a/app/repositories/user_repository.py b/app/repositories/user_repository.py new file mode 100644 index 0000000..0142264 --- /dev/null +++ b/app/repositories/user_repository.py @@ -0,0 +1,24 @@ +class UserRepository: + users = [ + { + "id": 1, + "name": "akhdan", + "email": "akhdanre@gmail.com", + "password": "password123", + }, + { + "id": 2, + "name": "Bob", + "email": "bob@example.com", + "password": "password123", + }, + ] + + def get_all_users(self): + return self.users + + def get_user_by_email(self, email): + for user in self.users: + if user.get("email") == email: + return user + return None diff --git a/app/services/__init__.py b/app/services/__init__.py new file mode 100644 index 0000000..e3e2049 --- /dev/null +++ b/app/services/__init__.py @@ -0,0 +1,2 @@ +from .auth_service import AuthService +from .user_service import UserService diff --git a/app/services/__pycache__/__init__.cpython-313.pyc b/app/services/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ae7392efa2c430603093c951381b3bf87ae65b1 GIT binary patch literal 240 zcmey&%ge<81P%@C>3%@^F^B^LOi;#W86aaSLoh=yqc?*WV-ceQh|T29=$TAW%0<@#x|+~P?DO2-4mK=MV*Ks~p3N`YLs z5DQRfCBtVR$#6^C%_=52KP5G$ur#wOJ~uHtwJ0XBpdbdSy*MU5J~J<~BtBlRpz;=n kO>TZlX-=wL5y(Fv*A#ODi4V+-jEr{~RPQmU7I6Ui037T-cK`qY literal 0 HcmV?d00001 diff --git a/app/services/__pycache__/auth_service.cpython-313.pyc b/app/services/__pycache__/auth_service.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6740b4b7f22e2efb68d06b92ab7cbbf00ed7c185 GIT binary patch literal 1059 zcmZ`%OKTHR6ux&J>7;2)Vy3i8u(4F^_-Ne(N)VwNkqTL42#7{5(_}gh=GA*AN?mm! zlBHdQX6aJ@fj^@qNW-8|aMhhOh~Ua|ZXOoF1M~5nbI;?ucg`>#pCw?w-_CftLdbV? zCZ>(aa0N)0*uZh3)cJe#JdQO_fOpY=q-g_=d{> zUGi*tmIEKHL~7HR2igjj!m%Jsv_T`|Q;{HB6K-usV0t!Of0!>)%l@^$HMe`&p=eK9ga2$0J7 z4Ux;s$P0Z0r%Ot-IF&EYCD=4Kjy9D4WGK@NwM2>+Cyd(^QPDqE`dg)yG@Im~5aPfj zkASCOK}nS{pcsh)uE43K7DC;vJAN%RT86;zn)Lc9%UHcxZP$>`F}B-wYU7gxV>><< zLCtTtjV5C}20i#ZKse8s2%NyLFeeDOzugX8!PqAv$H)tFyuSq8dNBv^j+`r0zxOi| z*UeEP<`m$mldzj>(`EKuA(wpAB7=QU{pcNy`y;gv_%(>(9*N5UKU7NTH*)(|Bt^}0 I0w8Pt0FB`2LjV8( literal 0 HcmV?d00001 diff --git a/app/services/__pycache__/user_service.cpython-313.pyc b/app/services/__pycache__/user_service.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8d37cd36d9c3095f63a788b2fe0cc65062f39391 GIT binary patch literal 824 zcmZ`%&1(};5TCanX{?RwC)Oe~wDquvsimz45sw}ea>&w?3&WbehQ&=bowpI{DJStC z$RCma#!{rR=t(cVNrQNGW;cno;K2TN=FP|Z&CHwBYKy?~V7Sov!T;}K%*2^0lMPlz z5I~?_!AnJ|4$H6xfwcmGy=#?GWOW?hJrl!M`L#Wxsipg=iL;cB+GR|MYHCdCtc)N8 zQUQ<^D6*v_If2dS1`bs^u3yQoO07WCySS~-gj0J~K?=$BHh+^fh7r7;`*ztD*@I+$ z)`78V`W8t-?hUvu(wyX2<&M$GfsycfzWL&5*iQF#csPjPV>f!MDUAC4kduUo35)cp z)#xAPRm8X#XNdXj3yd4HQAT$KLv> zw{`4oop{@ys@vqT&sW7&O@Bd#(2Kg7hp>p)P4@?h=u3!)gD9DLJj8>TOqRqw-AfTk zrcx5QgJ`lSi`y7w8O3h~nKp=HD6T09%N$8So`R7cKES!9+{eEv%H1gg#ohGn{5mhJ vG2d{kO|khRo0d7|Z`r*1tYrI~R@fm=z}#f`X)C3^!NcDbSM8hwLy_|bT=ldH literal 0 HcmV?d00001 diff --git a/app/services/auth_service.py b/app/services/auth_service.py new file mode 100644 index 0000000..a33ba37 --- /dev/null +++ b/app/services/auth_service.py @@ -0,0 +1,21 @@ +from app.repositories import UserRepository + + +class AuthService: + def __init__(self): + self.user_repository = UserRepository() + + def login(self, data): + email = data.get("email") + password = data.get("password") + + user_data = self.user_repository.get_user_by_email(email) + + if user_data == None: + return None + + if user_data["password"] == password: + del user_data["password"] + return user_data + + return None diff --git a/services/lstm.py b/app/services/lstm.py similarity index 100% rename from services/lstm.py rename to app/services/lstm.py diff --git a/services/user_service.py b/app/services/user_service.py similarity index 67% rename from services/user_service.py rename to app/services/user_service.py index 7d562ed..5bf4ff9 100644 --- a/services/user_service.py +++ b/app/services/user_service.py @@ -1,6 +1,4 @@ -# /services/user_service.py - -from repositories.user_repository import UserRepository +from app.repositories import UserRepository class UserService: diff --git a/blueprints/__pycache__/user.cpython-313.pyc b/blueprints/__pycache__/user.cpython-313.pyc deleted file mode 100644 index a2038828e376404fadd49f06d96e3b6541ba988a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 629 zcmZ8fJ5L)y5T3aw=3;|U+&GP88KR3K9t9{5lp;}rWF#VSNtKgMj=dO%^Bv6I6;L_< zfCedLO7d@vT%fF!B1)QcL|3HE?qOrZNIN^T`^|jcKC)tQ7NmWCYj>X`z%P|d%p3<< zB!e^Xz{725B4JY_t)_BqTW=a<)WF9&c)D+{Yu7bo`9>Yq#|_B#t=;lCxixu)XRe@U zJ=HwBIz<<{Gj8FJ!nv9#ybM!zNWCZ#_9q@ky}e@>Md>|f^eT=Lio=kRFjASHSSxDc zLf?A*PJ-+{OZMXqZ{MN>B~X_mdnDZ%e7M=$RjYSwa)1W7xFf~Pss2HG%3J8NB*;m> zL8gku;+toFJMJ+5DD9mD{nh~^|KsEc+*jD;!((zJHh1d!xw@MH{C29BPUFI9jGU#R zu|!3=y5r6Yb1!W115*0PkWM_9D&Wg^B$0YGF%tw)tIvW!l=A%>1*G_dNpYI6YZ3QU zTSY~symGT2chZo(p!+hFUjq1+bXPhe{<8oVf567ia`nr`*C(U$<3Z{BLT$8AAIx1@ hpv_-m>P{wB#AY&>+I)f&o-%5reCLr%KNa~iBn^jD5eoAUg zVQFSnd~RZPY7vm1S5lOplapFh91|a(nU`4-AFo$Xd5gm)H$SB`C)KWq6{r>P{wB#AY&>+I)f&o-%5reCLr%KNa~ihn^jD5eoAUg zVQFSnd~RZPYEev4YC(Q+W=VcgW@>Rve0*kJW=VX!UP0w84x8Nkl+v73yCPPgUXa055S`t-vxO7cP7zy(6d?q{g&>nanqUkzwn`OV(j5%v(^@P!>Fn9NLLr5# z`~&rF(>Yy!hTWNMUAZ$pLR#tJfs$>YPz4kX!Z>p4U#+HNeO6dg z7Bs%+&TP@nDm*^$yWa9J@ne-#K}V`kMI3kJTZmVB#APnp&rPOd>7?nqaFh=9J$rP) zL2>d6V&Ouo^Ha<6uidBamn19tIytY*cO0hQG$ph!Vzf;v?+pKc8F$Xct~t;prg@Ic zS@&w$d}oQ}$#&br1>A18F5lg3zQ6kTN8fxnyxusvZXDH~0($157q7SmBKt*jYly?5 zU*()XM?A06e9mkjo*J@cZbo`kAkw;Tb}tcanU*HQv@FS-RHe3_V`184Xfp6GoC06o wHaz@>P{wB#AY&>+I)f&o-%5reCLr%KNa~iln^jD5eoAUg zVQFSnd~RZPYEevaYEfBca%yo*e0*kJW=VX!UP0w84x8Nkl+v73yCPPgK9IS^AjU^# LMn=XWW*`dyXmB2) diff --git a/services/__pycache__/user_service.cpython-313.pyc b/services/__pycache__/user_service.cpython-313.pyc deleted file mode 100644 index a878751ada2f2afb510607c1dc06fb496afd0859..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 834 zcmZ`%PiqrV5TCdI5^LikR;;Da(Dt&3(b85##G?m=9J2IeU|7@Fuym8O^EN^}^(20Q zT>J+4HkKll#ha(zq@j3qW;a=D!GWEfKfjsz&3kWJt1SS_mu98wD}bNk%*B}*(@i$U z5JITl!W%`Z4$H6(p|t{`y=xUHvbs*-UWgN@?9QIi)Y3--6Q=_jbqY+Oc}yg3KRsU!;=cL}iZA$$=4gJ$v-}MY}WD*X`qB{1JQ6p{6z$2n*BBOJ`o= zXp~hE<9?hXW=q%DHs;X^cQiFtC-7tK@!8sw&(62%>XZZjS>_pM#!S5>kQ>qx_BUj{ z>?Tl^Q@r9W{$;hUPBBUn6uyS!s*CMtkxjZQn1|O1|AWur4;XU--~D^%{>G`laqe%O z`derI_Sfn*`J4+>KB^g1z|L07n~k+; x