From 5b03696ed48bdae0534a061dd88c6ada3122fc3f Mon Sep 17 00:00:00 2001 From: Jo Date: Wed, 11 Sep 2024 23:40:12 +0200 Subject: [PATCH] chore: setup prisma testing: add user registration example base --- .gitignore | 3 ++ bun.lockb | Bin 2248 -> 4436 bytes example.env | 3 +- package.json | 4 +- .../20240911211516_clear/migration.sql | 9 ++++ prisma/migrations/migration_lock.toml | 3 ++ prisma/schema.prisma | 17 +++++++ src/index.ts | 2 +- src/routes/v1/users/index.ts | 46 ++++++++++++++---- 9 files changed, 74 insertions(+), 13 deletions(-) create mode 100644 prisma/migrations/20240911211516_clear/migration.sql create mode 100644 prisma/migrations/migration_lock.toml create mode 100644 prisma/schema.prisma diff --git a/.gitignore b/.gitignore index 9b1ee42..9af116e 100644 --- a/.gitignore +++ b/.gitignore @@ -173,3 +173,6 @@ dist # Finder (MacOS) folder config .DS_Store + +# Prisma DB +prisma/dev.db \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index edc9ee64aa4c9b4df91409d120cca58c0d27eaad..f3a76d52cc9631f2d022afea68cbf05252575c6a 100644 GIT binary patch literal 4436 zcmeHKdr*{B6yJr#a1mq_1)nS-lEk-fV0j1vnxj%{Id6dwsjW(X0MDQbx#6Lv5AUHM|bQ2L{q&dl9&&%NLIopaB* zkF$;rJOioY$p|$MSI2N<1~nTrOsNTvmJ>=GlWTM;sUC~rvrQNb#y3sZ&XrxMBfKwn zJt7_y?`t+ccgC`;Fd!)4gp;_!C$r8Pd<2MXWDN5mJb{vB=z{@yJcE&-)e)ph%3#Pz zJO)?m$<<(HA{c*z$za$5&IH^B@HQ}R3HTkrp&Y4EYe1I)Fc?-q4k=b$S{FLA#5C>n zM?8MdPbYV6woSa7bR*`dgJJav{sqsYfq~X0$*J-3e8<|99#ioe|BvQk&Y@QE<#t(fKLW(w75v006G$&4`oxT0rr=K z^bdhA{l;K_8*n&w82u11?gGYJY!+s1-*I5YP=}CxCg>~~Mt|t{LuI7D6m-1Dpr1HK z`xk(|0N7^%2Vo8^hB`WejQoEJI`dz`e+Y~64Y8nYNRUHc;J$|hIowm|U_lP`z*!j} z$l*MszZb86Vm|^l!jJtI;4v9STskz1Osf)dTBAD`n7(H4nmeaEx5Z0QRl0uuqp-fT zz6LMrV)rx4gf9fzGnJrklpa zALNy{GCf;24R4;iUaf+5vzW7arrO3Trw)C-`}jM zvTsgKd}4}l-p+Y?#ckX33&n-AdoD~;y#FM}YCpf&aA{_n%LiG@kC#tzyZJ4a{9*lC zT71!dg4nDQ=K|-u56TxgX4@x(r1e#83hV4xAGxB$LUr?Ear4#9w!vE~dQ}-(Gl!go z%zb;C+oI|VUeCC{CG|348ok{^PQx9CoQ1f1nWs$ioM(i&?y|_^EXxW@UteEWzy8lUt1{&r$*Ev`^5T&3$D4NF|4~xyAD0(q z+UVO{{+&Gy7rj&vo^@NgHo5dpGE?i|Z*_L2 zcB-Q8v@Brx&igr$@k^^}>^Mzqx!^skdvDWl(fJ&}JsUS}szuU)2COf+*D-Pb?ma!` zQIW^@*o5-7e$tZ}Ea+-Y3CucS88orz;f7WFSkpvj8(v-Zb&_SuVYaJiLsu+))6(Jq zhtc~9-pYY@kT(6F=z@^`PyfmY6i`o6CB@l3q%NFGs7bw4spO(Ule$$C&M75D9&O;s_9M55cnn?`ZUn!+Q$e zDe(MDC>-r5@SuID12G{U#6?)>ZH6*zNQU0$P}mcwhnelOM(7@5kbtGTKl58KxO8X- z*0rb}HDS7O1)f|`ilE9DRjek=bz&}<6g;~NPz?-bC?!-?qiT2%4b|PKUS=_cToG3U ztha#%oJ~NL@}SNgFav9FR67sOplTge*@H8vo=0`K33CbvA*`%Mwlng~%h*9TC5ny> z(*>*p(z{en5dZT|C2>^@uH!D+sK<3`sd9y0N2nFP9Km4PB+t^8Kp|D4|3f}7!-8QF z9H~*^q*fY^FEIMW3s(~0|BuW-C?j};Is)IwjUprUdM)Y2fXs%univV%8f>7hn!$7&`VLa5u2C@%fo@0B61)xsZ8pewVTxL)p1v#z{ zkHm~0qcH`p$FxeR9{%ApE&}-A?it}B7UH;&FOvw|A|w)A;DNh|BV=N!Q0gHS$wYjS zP>hQZ2(k|nMG_kI=mAE*N{qs$t(F?0R{a8Qk21dW&;YY^krwGuEMXuC0AYZ?m?}MG j0D&%!4hUXXKoK&`cu$RT^~M7MRE-^)HRGxM=l%WxLT_p3 literal 2248 zcmY#Z)GsYA(of3F(@)JSQ%EY!;{sycoc!eMw9K4T-L(9o+{6;yG6OCq1_p*-+g{Dx z{(F1Z_L$EpQ@?wkS#;_0r3c$Z9j32%n?CXRRS^pgpduh(flv%kE}U+FikH9?fccyZ z3=Jkg7B7&N0MY_LIwLzCtU$~S#KZ!S88CA|G$>4% zku>9%|HuE2(m+JA3(N$X$H)LNm#Ri1nG5qTy47Uyk<3L7HQ{;YdrM`9E+*t);=|}b@IR*56T#!-kwfB&O!g;PV!*IS2 zfmHQ8Sv~`&1(I}<>}HZRFzkTl{xeXT%ci&}SuZoMxFj(rM-Nu?=!F!errIeO87LHI zR;A{r=_r^eB<5tM=jEqyL45S@KLmhypm_TMHID_9fq;O^rqtNT4yX->0U(!y(vbmF zy$uoikn>joRQ*1~!%m4&b} zPYIs*IoLq{WMF{Ns3BRLnp>7yq~}^ul3J9Pm=j!5l$n=qr(lS1oCVx*7EqH`L1|#v z0sUc!%Nq}6Y q9>CpMipQ6j{?y=rxCK@-WA!I2WgvWsmTDOoV5t - -// Demo Data for usage before integrating Prisma ORM -const userArray = [ - { id: 1, name: "Jo", email: "jo@thevoid.cafe", hashedPassword: "jo-hash" }, - { id: 2, name: "Danil", email: "semiko@thevoid.cafe", hashedPassword: "semiko-hash" }, - { id: 3, name: "Rhys", email: "rhys@thevoid.cafe", passwordAsHash: "rhys-hash" } -]; +prisma.$connect().then(() => { + console.log("Successfully connected to database"); +}) //====================================================> // Fetch user information by ID -app.get("/:id", (ctx) => { - return ctx.json(userArray.filter(user => user.id === parseInt(ctx.req.param("id")))); +app.get("/:id", async (ctx) => { + const user = await prisma.user.findFirst({ where: { id: parseInt(ctx.req.param("id")) } }); + + console.log(user); + + return ctx.json(user); +}); + +app.post("/create", async (ctx) => { + const body = await ctx.req.json(); + const { name, email } = body; + + if (!name || !email || !body) { + ctx.status(422); + return ctx.json({ msg: "You are missing some of the required parameters! If you didn't know -name- and -email- are expected :3" }); + }; + + if (typeof name !== "string" || typeof email !== "string") { + ctx.status(422); + return ctx.json({ msg: "The provided parameters should be of type String!" }); + }; + + const newUser = await prisma.user.create({ + data: { + name: name, + email: email, + }, + }) + + console.log(newUser); + return ctx.json(newUser); }); //====================================================>