From bf16fda969718cb32bdefcc92db09f4b49513584 Mon Sep 17 00:00:00 2001 From: Felix Dangers Date: Sun, 14 May 2023 21:16:23 +0200 Subject: [PATCH 01/23] Added GUI to add polls --- frontend/src/App.vue | 102 ++++++++++++++++++++++-- frontend/src/assets/logo.png | Bin 0 -> 6849 bytes frontend/src/components/CreatePolls.vue | 78 ++++++++++++++++++ frontend/src/components/HomePage.vue | 3 + frontend/src/components/MyPolls.vue | 32 ++++++++ frontend/src/main.js | 10 ++- 6 files changed, 214 insertions(+), 11 deletions(-) create mode 100644 frontend/src/assets/logo.png create mode 100644 frontend/src/components/CreatePolls.vue create mode 100644 frontend/src/components/HomePage.vue create mode 100644 frontend/src/components/MyPolls.vue diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 3b6d7ca..bacc807 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1,16 +1,102 @@ - + + + - diff --git a/frontend/src/assets/logo.png b/frontend/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 GIT binary patch literal 6849 zcmaKRcUV(fvo}bjDT-7nLI_nlK}sT_69H+`qzVWDA|yaU?}j417wLi^B1KB1SLsC& zL0ag7$U(XW5YR7p&Ux?sP$d4lvMt8C^+TcQu4F zQqv!UF!I+kw)c0jhd6+g6oCr9P?7)?!qX1ui*iL{p}sKCAGuJ{{W)0z1pLF|=>h}& zt(2Lr0Z`2ig8<5i%Zk}cO5Fm=LByqGWaS`oqChZdEFmc`0hSb#gg|Aap^{+WKOYcj zHjINK)KDG%&s?Mt4CL(T=?;~U@bU2x_mLKN!#GJuK_CzbNw5SMEJorG!}_5;?R>@1 zSl)jns3WlU7^J%=(hUtfmuUCU&C3%8B5C^f5>W2Cy8jW3#{Od{lF1}|?c61##3dzA zsPlFG;l_FzBK}8>|H_Ru_H#!_7$UH4UKo3lKOA}g1(R&|e@}GINYVzX?q=_WLZCgh z)L|eJMce`D0EIwgRaNETDsr+?vQknSGAi=7H00r`QnI%oQnFxm`G2umXso9l+8*&Q z7WqF|$p49js$mdzo^BXpH#gURy=UO;=IMrYc5?@+sR4y_?d*~0^YP7d+y0{}0)zBM zIKVM(DBvICK#~7N0a+PY6)7;u=dutmNqK3AlsrUU9U`d;msiucB_|8|2kY=(7XA;G zwDA8AR)VCA#JOkxm#6oHNS^YVuOU;8p$N)2{`;oF|rQ?B~K$%rHDxXs+_G zF5|-uqHZvSzq}L;5Kcy_P+x0${33}Ofb6+TX&=y;;PkEOpz%+_bCw_{<&~ zeLV|!bP%l1qxywfVr9Z9JI+++EO^x>ZuCK);=$VIG1`kxK8F2M8AdC$iOe3cj1fo(ce4l-9 z7*zKy3={MixvUk=enQE;ED~7tv%qh&3lR<0m??@w{ILF|e#QOyPkFYK!&Up7xWNtL zOW%1QMC<3o;G9_S1;NkPB6bqbCOjeztEc6TsBM<(q9((JKiH{01+Ud=uw9B@{;(JJ z-DxI2*{pMq`q1RQc;V8@gYAY44Z!%#W~M9pRxI(R?SJ7sy7em=Z5DbuDlr@*q|25V)($-f}9c#?D%dU^RS<(wz?{P zFFHtCab*!rl(~j@0(Nadvwg8q|4!}L^>d?0al6}Rrv9$0M#^&@zjbfJy_n!%mVHK4 z6pLRIQ^Uq~dnyy$`ay51Us6WaP%&O;@49m&{G3z7xV3dLtt1VTOMYl3UW~Rm{Eq4m zF?Zl_v;?7EFx1_+#WFUXxcK78IV)FO>42@cm@}2I%pVbZqQ}3;p;sDIm&knay03a^ zn$5}Q$G!@fTwD$e(x-~aWP0h+4NRz$KlnO_H2c< z(XX#lPuW_%H#Q+c&(nRyX1-IadKR-%$4FYC0fsCmL9ky3 zKpxyjd^JFR+vg2!=HWf}2Z?@Td`0EG`kU?{8zKrvtsm)|7>pPk9nu@2^z96aU2<#` z2QhvH5w&V;wER?mopu+nqu*n8p~(%QkwSs&*0eJwa zMXR05`OSFpfyRb!Y_+H@O%Y z0=K^y6B8Gcbl?SA)qMP3Z+=C(?8zL@=74R=EVnE?vY!1BQy2@q*RUgRx4yJ$k}MnL zs!?74QciNb-LcG*&o<9=DSL>1n}ZNd)w1z3-0Pd^4ED1{qd=9|!!N?xnXjM!EuylY z5=!H>&hSofh8V?Jofyd!h`xDI1fYAuV(sZwwN~{$a}MX^=+0TH*SFp$vyxmUv7C*W zv^3Gl0+eTFgBi3FVD;$nhcp)ka*4gSskYIqQ&+M}xP9yLAkWzBI^I%zR^l1e?bW_6 zIn{mo{dD=)9@V?s^fa55jh78rP*Ze<3`tRCN4*mpO$@7a^*2B*7N_|A(Ve2VB|)_o z$=#_=aBkhe(ifX}MLT()@5?OV+~7cXC3r!%{QJxriXo9I%*3q4KT4Xxzyd{ z9;_%=W%q!Vw$Z7F3lUnY+1HZ*lO;4;VR2+i4+D(m#01OYq|L_fbnT;KN<^dkkCwtd zF7n+O7KvAw8c`JUh6LmeIrk4`F3o|AagKSMK3))_5Cv~y2Bb2!Ibg9BO7Vkz?pAYX zoI=B}+$R22&IL`NCYUYjrdhwjnMx_v=-Qcx-jmtN>!Zqf|n1^SWrHy zK|MwJ?Z#^>)rfT5YSY{qjZ&`Fjd;^vv&gF-Yj6$9-Dy$<6zeP4s+78gS2|t%Z309b z0^fp~ue_}i`U9j!<|qF92_3oB09NqgAoehQ`)<)dSfKoJl_A6Ec#*Mx9Cpd-p#$Ez z={AM*r-bQs6*z$!*VA4|QE7bf@-4vb?Q+pPKLkY2{yKsw{&udv_2v8{Dbd zm~8VAv!G~s)`O3|Q6vFUV%8%+?ZSVUa(;fhPNg#vab@J*9XE4#D%)$UU-T5`fwjz! z6&gA^`OGu6aUk{l*h9eB?opVdrHK>Q@U>&JQ_2pR%}TyOXGq_6s56_`U(WoOaAb+K zXQr#6H}>a-GYs9^bGP2Y&hSP5gEtW+GVC4=wy0wQk=~%CSXj=GH6q z-T#s!BV`xZVxm{~jr_ezYRpqqIcXC=Oq`b{lu`Rt(IYr4B91hhVC?yg{ol4WUr3v9 zOAk2LG>CIECZ-WIs0$N}F#eoIUEtZudc7DPYIjzGqDLWk_A4#(LgacooD z2K4IWs@N`Bddm-{%oy}!k0^i6Yh)uJ1S*90>|bm3TOZxcV|ywHUb(+CeX-o1|LTZM zwU>dY3R&U)T(}5#Neh?-CWT~@{6Ke@sI)uSuzoah8COy)w)B)aslJmp`WUcjdia-0 zl2Y}&L~XfA`uYQboAJ1;J{XLhYjH){cObH3FDva+^8ioOQy%Z=xyjGLmWMrzfFoH; zEi3AG`_v+%)&lDJE;iJWJDI@-X9K5O)LD~j*PBe(wu+|%ar~C+LK1+-+lK=t# z+Xc+J7qp~5q=B~rD!x78)?1+KUIbYr^5rcl&tB-cTtj+e%{gpZZ4G~6r15+d|J(ky zjg@@UzMW0k9@S#W(1H{u;Nq(7llJbq;;4t$awM;l&(2s+$l!Ay9^Ge|34CVhr7|BG z?dAR83smef^frq9V(OH+a+ki#q&-7TkWfFM=5bsGbU(8mC;>QTCWL5ydz9s6k@?+V zcjiH`VI=59P-(-DWXZ~5DH>B^_H~;4$)KUhnmGo*G!Tq8^LjfUDO)lASN*=#AY_yS zqW9UX(VOCO&p@kHdUUgsBO0KhXxn1sprK5h8}+>IhX(nSXZKwlNsjk^M|RAaqmCZB zHBolOHYBas@&{PT=R+?d8pZu zUHfyucQ`(umXSW7o?HQ3H21M`ZJal+%*)SH1B1j6rxTlG3hx1IGJN^M7{$j(9V;MZ zRKybgVuxKo#XVM+?*yTy{W+XHaU5Jbt-UG33x{u(N-2wmw;zzPH&4DE103HV@ER86 z|FZEmQb|&1s5#`$4!Cm}&`^{(4V}OP$bk`}v6q6rm;P!H)W|2i^e{7lTk2W@jo_9q z*aw|U7#+g59Fv(5qI`#O-qPj#@_P>PC#I(GSp3DLv7x-dmYK=C7lPF8a)bxb=@)B1 zUZ`EqpXV2dR}B&r`uM}N(TS99ZT0UB%IN|0H%DcVO#T%L_chrgn#m6%x4KE*IMfjX zJ%4veCEqbXZ`H`F_+fELMC@wuy_ch%t*+Z+1I}wN#C+dRrf2X{1C8=yZ_%Pt6wL_~ zZ2NN-hXOT4P4n$QFO7yYHS-4wF1Xfr-meG9Pn;uK51?hfel`d38k{W)F*|gJLT2#T z<~>spMu4(mul-8Q3*pf=N4DcI)zzjqAgbE2eOT7~&f1W3VsdD44Ffe;3mJp-V@8UC z)|qnPc12o~$X-+U@L_lWqv-RtvB~%hLF($%Ew5w>^NR82qC_0FB z)=hP1-OEx?lLi#jnLzH}a;Nvr@JDO-zQWd}#k^an$Kwml;MrD&)sC5b`s0ZkVyPkb zt}-jOq^%_9>YZe7Y}PhW{a)c39G`kg(P4@kxjcYfgB4XOOcmezdUI7j-!gs7oAo2o zx(Ph{G+YZ`a%~kzK!HTAA5NXE-7vOFRr5oqY$rH>WI6SFvWmahFav!CfRMM3%8J&c z*p+%|-fNS_@QrFr(at!JY9jCg9F-%5{nb5Bo~z@Y9m&SHYV`49GAJjA5h~h4(G!Se zZmK{Bo7ivCfvl}@A-ptkFGcWXAzj3xfl{evi-OG(TaCn1FAHxRc{}B|x+Ua1D=I6M z!C^ZIvK6aS_c&(=OQDZfm>O`Nxsw{ta&yiYPA~@e#c%N>>#rq)k6Aru-qD4(D^v)y z*>Rs;YUbD1S8^D(ps6Jbj0K3wJw>L4m)0e(6Pee3Y?gy9i0^bZO?$*sv+xKV?WBlh zAp*;v6w!a8;A7sLB*g-^<$Z4L7|5jXxxP1}hQZ<55f9<^KJ>^mKlWSGaLcO0=$jem zWyZkRwe~u{{tU63DlCaS9$Y4CP4f?+wwa(&1ou)b>72ydrFvm`Rj-0`kBJgK@nd(*Eh!(NC{F-@=FnF&Y!q`7){YsLLHf0_B6aHc# z>WIuHTyJwIH{BJ4)2RtEauC7Yq7Cytc|S)4^*t8Va3HR zg=~sN^tp9re@w=GTx$;zOWMjcg-7X3Wk^N$n;&Kf1RgVG2}2L-(0o)54C509C&77i zrjSi{X*WV=%C17((N^6R4Ya*4#6s_L99RtQ>m(%#nQ#wrRC8Y%yxkH;d!MdY+Tw@r zjpSnK`;C-U{ATcgaxoEpP0Gf+tx);buOMlK=01D|J+ROu37qc*rD(w`#O=3*O*w9?biwNoq3WN1`&Wp8TvKj3C z3HR9ssH7a&Vr<6waJrU zdLg!ieYz%U^bmpn%;(V%%ugMk92&?_XX1K@mwnVSE6!&%P%Wdi7_h`CpScvspMx?N zQUR>oadnG17#hNc$pkTp+9lW+MBKHRZ~74XWUryd)4yd zj98$%XmIL4(9OnoeO5Fnyn&fpQ9b0h4e6EHHw*l68j;>(ya`g^S&y2{O8U>1*>4zR zq*WSI_2o$CHQ?x0!wl9bpx|Cm2+kFMR)oMud1%n2=qn5nE&t@Fgr#=Zv2?}wtEz^T z9rrj=?IH*qI5{G@Rn&}^Z{+TW}mQeb9=8b<_a`&Cm#n%n~ zU47MvCBsdXFB1+adOO)03+nczfWa#vwk#r{o{dF)QWya9v2nv43Zp3%Ps}($lA02*_g25t;|T{A5snSY?3A zrRQ~(Ygh_ebltHo1VCbJb*eOAr;4cnlXLvI>*$-#AVsGg6B1r7@;g^L zFlJ_th0vxO7;-opU@WAFe;<}?!2q?RBrFK5U{*ai@NLKZ^};Ul}beukveh?TQn;$%9=R+DX07m82gP$=}Uo_%&ngV`}Hyv8g{u z3SWzTGV|cwQuFIs7ZDOqO_fGf8Q`8MwL}eUp>q?4eqCmOTcwQuXtQckPy|4F1on8l zP*h>d+cH#XQf|+6c|S{7SF(Lg>bR~l(0uY?O{OEVlaxa5@e%T&xju=o1`=OD#qc16 zSvyH*my(dcp6~VqR;o(#@m44Lug@~_qw+HA=mS#Z^4reBy8iV?H~I;{LQWk3aKK8$bLRyt$g?- +

Create Polls

+
+
+ + + +
+
+ + +
+
+ + +
+
+ + + \ No newline at end of file diff --git a/frontend/src/components/HomePage.vue b/frontend/src/components/HomePage.vue new file mode 100644 index 0000000..b24d914 --- /dev/null +++ b/frontend/src/components/HomePage.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/frontend/src/components/MyPolls.vue b/frontend/src/components/MyPolls.vue new file mode 100644 index 0000000..210a16f --- /dev/null +++ b/frontend/src/components/MyPolls.vue @@ -0,0 +1,32 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/main.js b/frontend/src/main.js index 4ba6774..cc957c6 100644 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -1,6 +1,10 @@ -import './assets/main.css' - import { createApp } from 'vue' import App from './App.vue' -createApp(App).mount('#generated-frontend') +import { library } from '@fortawesome/fontawesome-svg-core' +import { faHome, faTrash} from '@fortawesome/free-solid-svg-icons' +import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' + +library.add(faHome, faTrash) + +createApp(App).component('font-awesome-icon', FontAwesomeIcon).mount('#app') From 2595d9ad717e58354972d169dd2bbcbfd2e277ae Mon Sep 17 00:00:00 2001 From: Felix Dangers Date: Thu, 18 May 2023 00:15:10 +0200 Subject: [PATCH 02/23] database part adapted to task --- database/db.js | 11 ++++ database/package.json | 5 ++ database/postgres.sql | 123 +++++++++++++++++++++++++++++++----------- database/yarn.lock | 103 +++++++++++++++++++++++++++++++++++ 4 files changed, 211 insertions(+), 31 deletions(-) create mode 100644 database/db.js create mode 100644 database/package.json create mode 100644 database/yarn.lock diff --git a/database/db.js b/database/db.js new file mode 100644 index 0000000..4c2a023 --- /dev/null +++ b/database/db.js @@ -0,0 +1,11 @@ +const { Pool } = require('pg'); + +const pool = new Pool({ + user: 'postgres', + password: 'Get Out Of My Shed', + host: 'localhost', + port: 5432, + database: 'pollshed' +}); + +module.exports = pool; \ No newline at end of file diff --git a/database/package.json b/database/package.json new file mode 100644 index 0000000..7fef64c --- /dev/null +++ b/database/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "pg": "^8.11.0" + } +} diff --git a/database/postgres.sql b/database/postgres.sql index fd2b0b1..4708c71 100644 --- a/database/postgres.sql +++ b/database/postgres.sql @@ -6,22 +6,24 @@ CREATE DATABASE pollshed WITH OWNER = pollshed; \connect pollshed; -DROP INDEX IF EXISTS "idx_poll_user"; -DROP TABLE IF EXISTS "poll_user"; -DROP INDEX IF EXISTS "idx_option__poll"; -DROP INDEX IF EXISTS "idx_option__fixed_in_poll"; -DROP TABLE IF EXISTS "option"; -DROP INDEX IF EXISTS "idx_poll__owner"; DROP TABLE IF EXISTS "poll"; +DROP TABLE IF EXISTS "polloption"; +DROP TABLE IF EXISTS "polltoken"; DROP TABLE IF EXISTS "user"; +DROP TABLE IF EXISTS "vote"; +DROP TABLE IF EXISTS "poll_user"; +DROP TABLE IF EXISTS "edittoken"; +DROP INDEX IF EXISTS "idx_polloption__poll"; +DROP INDEX IF EXISTS "idx_polltoken__poll"; +DROP INDEX IF EXISTS "idx_poll_user"; +DROP INDEX IF EXISTS "idx_vote__owner"; +DROP INDEX IF EXISTS "idx_vote__poll"; +DROP INDEX IF EXISTS "idx_edittoken__vote"; +DROP INDEX IF EXISTS "idx_polloption__vote"; --- https://editor.ponyorm.com/user/luckydonald/Pollock/snapshots/20 --- https://editor.ponyorm.com/user/luckydonald/Pollock/snapshots/20/postgres - -CREATE TABLE "user" ( - "id" SERIAL PRIMARY KEY -); +-- https://editor.ponyorm.com/user/luckydonald/Pollock/snapshots/115 +-- https://editor.ponyorm.com/user/luckydonald/Pollock/snapshots/115/postgres CREATE TABLE "poll" ( "id" SERIAL PRIMARY KEY, @@ -29,33 +31,28 @@ CREATE TABLE "poll" ( "description" TEXT, "voices" BIGINT, "worst" BOOLEAN, - "deadline" TIMESTAMP, - "owner" INTEGER NOT NULL, - "visible_to_all" BOOLEAN NOT NULL DEFAULT true + "deadline" TIMESTAMP ); -CREATE INDEX "idx_poll__owner" ON "poll" ("owner"); - -ALTER TABLE "poll" ADD CONSTRAINT "fk_poll__owner" FOREIGN KEY ("owner") REFERENCES "user" ("id") ON DELETE CASCADE; - -CREATE TABLE "option" ( +CREATE TABLE "polltoken" ( "id" SERIAL PRIMARY KEY, - "text" TEXT NOT NULL, - "poll" INTEGER NOT NULL, - "fixed_in_poll" INTEGER + "admin" UUID UNIQUE NOT NULL, + "share" UUID UNIQUE NOT NULL, + "poll" BIGINT NOT NULL ); -CREATE INDEX "idx_option__fixed_in_poll" ON "option" ("fixed_in_poll"); - -CREATE INDEX "idx_option__poll" ON "option" ("poll"); +CREATE INDEX "idx_polltoken__poll" ON "polltoken" ("poll"); -ALTER TABLE "option" ADD CONSTRAINT "fk_option__fixed_in_poll" FOREIGN KEY ("fixed_in_poll") REFERENCES "poll" ("id") ON DELETE SET NULL; +ALTER TABLE "polltoken" ADD CONSTRAINT "fk_polltoken__poll" FOREIGN KEY ("poll") REFERENCES "poll" ("id"); -ALTER TABLE "option" ADD CONSTRAINT "fk_option__poll" FOREIGN KEY ("poll") REFERENCES "poll" ("id") ON DELETE CASCADE; +CREATE TABLE "user" ( + "id" SERIAL PRIMARY KEY, + "name" TEXT UNIQUE NOT NULL +); CREATE TABLE "poll_user" ( - "poll" INTEGER NOT NULL, - "user" INTEGER NOT NULL, + "poll" BIGINT NOT NULL, + "user" BIGINT NOT NULL, PRIMARY KEY ("poll", "user") ); @@ -63,4 +60,68 @@ CREATE INDEX "idx_poll_user" ON "poll_user" ("user"); ALTER TABLE "poll_user" ADD CONSTRAINT "fk_poll_user__poll" FOREIGN KEY ("poll") REFERENCES "poll" ("id"); -ALTER TABLE "poll_user" ADD CONSTRAINT "fk_poll_user__user" FOREIGN KEY ("user") REFERENCES "user" ("id") +ALTER TABLE "poll_user" ADD CONSTRAINT "fk_poll_user__user" FOREIGN KEY ("user") REFERENCES "user" ("id"); + +CREATE TABLE "vote" ( + "id" SERIAL PRIMARY KEY, + "time" TIME NOT NULL, + "worst" BOOLEAN NOT NULL DEFAULT false, + "owner" BIGINT NOT NULL, + "poll" BIGINT NOT NULL +); + +CREATE INDEX "idx_vote__owner" ON "vote" ("owner"); + +CREATE INDEX "idx_vote__poll" ON "vote" ("poll"); + +ALTER TABLE "vote" ADD CONSTRAINT "fk_vote__owner" FOREIGN KEY ("owner") REFERENCES "user" ("id") ON DELETE CASCADE; + +ALTER TABLE "vote" ADD CONSTRAINT "fk_vote__poll" FOREIGN KEY ("poll") REFERENCES "poll" ("id") ON DELETE CASCADE; + +CREATE TABLE "edittoken" ( + "id" SERIAL PRIMARY KEY, + "token" UUID UNIQUE NOT NULL, + "vote" BIGINT NOT NULL +); + +CREATE INDEX "idx_edittoken__vote" ON "edittoken" ("vote"); + +ALTER TABLE "edittoken" ADD CONSTRAINT "fk_edittoken__vote" FOREIGN KEY ("vote") REFERENCES "vote" ("id"); + +CREATE TABLE "polloption" ( + "id" SERIAL PRIMARY KEY, + "text" VARCHAR(512) NOT NULL, + "vote" BIGINT NOT NULL, + "poll" BIGINT NOT NULL +); + +CREATE INDEX "idx_polloption__poll" ON "polloption" ("poll"); + +CREATE INDEX "idx_polloption__vote" ON "polloption" ("vote"); + +ALTER TABLE "polloption" ADD CONSTRAINT "fk_polloption__poll" FOREIGN KEY ("poll") REFERENCES "poll" ("id") ON DELETE CASCADE; + +ALTER TABLE "polloption" ADD CONSTRAINT "fk_polloption__vote" FOREIGN KEY ("vote") REFERENCES "vote" ("id") ON DELETE CASCADE; + +-- INSERT TEST DATA +INSERT INTO "poll" ("title", "description", "voices", "worst", "deadline") VALUES ('Favorite Color', 'What is your favorite color?', 0, false, '2023-06-30 23:59:59'); +INSERT INTO "poll" ("title", "description", "voices", "worst", "deadline") VALUES ('Best Movie', 'What is the best movie you have ever seen?', 0, false, '2023-07-15 23:59:59'); + +INSERT INTO "polltoken" ("admin", "share", "poll") VALUES ('4f8401ef-2f2f-4a6d-8c7b-4b392ef0739f', '2a1e0fc0-4be0-480d-b0bc-170729625ca6', 1); +INSERT INTO "polltoken" ("admin", "share", "poll") VALUES ('a8ff771d-68fd-4f22-b70b-61c255430d79', 'bd0e06e4-9505-4175-b9ef-1939d285a84d', 2); + +INSERT INTO "user" ("name") VALUES ('John'); +INSERT INTO "user" ("name") VALUES ('Emily'); + +INSERT INTO "poll_user" ("poll", "user") VALUES (1, 1); +INSERT INTO "poll_user" ("poll", "user") VALUES (1, 2); +INSERT INTO "poll_user" ("poll", "user") VALUES (2, 2); + +INSERT INTO "vote" ("time", "worst", "owner", "poll") VALUES ('10:30:00', false, 1, 1); +INSERT INTO "vote" ("time", "worst", "owner", "poll") VALUES ('11:45:00', true, 2, 1); + +INSERT INTO "edittoken" ("token", "vote") VALUES ('4b8401ef-2f2f-4a6d-8c7b-4b392ef0739f', 1); +INSERT INTO "edittoken" ("token", "vote") VALUES ('5c8401ef-2f2f-4a6d-8c7b-4b392ef0739f', 2); + +INSERT INTO "polloption" ("text", "vote", "poll") VALUES ('Red', 1, 1); +INSERT INTO "polloption" ("text", "vote", "poll") VALUES ('Blue', 1, 1); diff --git a/database/yarn.lock b/database/yarn.lock new file mode 100644 index 0000000..0690e64 --- /dev/null +++ b/database/yarn.lock @@ -0,0 +1,103 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +buffer-writer@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04" + integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw== + +packet-reader@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" + integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ== + +pg-cloudflare@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.0.tgz#833d70870d610d14bf9df7afb40e1cba310c17a0" + integrity sha512-tGM8/s6frwuAIyRcJ6nWcIvd3+3NmUKIs6OjviIm1HPPFEt5MzQDOTBQyhPWg/m0kCl95M6gA1JaIXtS8KovOA== + +pg-connection-string@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.0.tgz#12a36cc4627df19c25cc1b9b736cc39ee1f73ae8" + integrity sha512-x14ibktcwlHKoHxx9X3uTVW9zIGR41ZB6QNhHb21OPNdCCO3NaRnpJuwKIQSR4u+Yqjx4HCvy7Hh7VSy1U4dGg== + +pg-int8@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== + +pg-pool@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.0.tgz#3190df3e4747a0d23e5e9e8045bcd99bda0a712e" + integrity sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ== + +pg-protocol@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" + integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== + +pg-types@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== + dependencies: + pg-int8 "1.0.1" + postgres-array "~2.0.0" + postgres-bytea "~1.0.0" + postgres-date "~1.0.4" + postgres-interval "^1.1.0" + +pg@^8.11.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/pg/-/pg-8.11.0.tgz#a37e534e94b57a7ed811e926f23a7c56385f55d9" + integrity sha512-meLUVPn2TWgJyLmy7el3fQQVwft4gU5NGyvV0XbD41iU9Jbg8lCH4zexhIkihDzVHJStlt6r088G6/fWeNjhXA== + dependencies: + buffer-writer "2.0.0" + packet-reader "1.0.0" + pg-connection-string "^2.6.0" + pg-pool "^3.6.0" + pg-protocol "^1.6.0" + pg-types "^2.1.0" + pgpass "1.x" + optionalDependencies: + pg-cloudflare "^1.1.0" + +pgpass@1.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== + dependencies: + split2 "^4.1.0" + +postgres-array@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== + +postgres-bytea@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== + +postgres-date@~1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== + +postgres-interval@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== + dependencies: + xtend "^4.0.0" + +split2@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== From 83a6984f1a1bdc785edcda12cddab03c2a35c112 Mon Sep 17 00:00:00 2001 From: Felix Dangers Date: Thu, 18 May 2023 00:16:59 +0200 Subject: [PATCH 03/23] Frontend roughly adjusted and prepared for further adjustments for backend section --- frontend/src/components/CreatePolls.vue | 287 ++++++++++++++---- frontend/src/components/HomePage.vue | 122 +++++++- .../components/{MyPolls.vue => MyTokens.vue} | 2 +- frontend/src/components/PollTokenInput.vue | 233 ++++++++++++++ frontend/src/components/VoteTokenInput.vue | 241 +++++++++++++++ 5 files changed, 818 insertions(+), 67 deletions(-) rename frontend/src/components/{MyPolls.vue => MyTokens.vue} (95%) create mode 100644 frontend/src/components/PollTokenInput.vue create mode 100644 frontend/src/components/VoteTokenInput.vue diff --git a/frontend/src/components/CreatePolls.vue b/frontend/src/components/CreatePolls.vue index e0286e7..5affbfa 100644 --- a/frontend/src/components/CreatePolls.vue +++ b/frontend/src/components/CreatePolls.vue @@ -1,78 +1,237 @@ - - \ No newline at end of file + }, +}; + + + \ No newline at end of file diff --git a/frontend/src/components/HomePage.vue b/frontend/src/components/HomePage.vue index b24d914..23d16b4 100644 --- a/frontend/src/components/HomePage.vue +++ b/frontend/src/components/HomePage.vue @@ -1,3 +1,121 @@ \ No newline at end of file +
+
+

Welcome to Pollock!

+

Here you will find everything you need to know about Pollock.

+ +
+
+ +

Create Polls

+

Create polls with different options and settings

+
+ +
+ +

Manage Polls

+

View all your polls to edit, delete or close them

+
+ +
+ +

View Votes

+

Look at your votes and edit them afterwards

+
+ +
+ +

Token Search

+

Search your polls and your votes with unique tokens

+
+
+ + +
+
+ + + + + \ No newline at end of file diff --git a/frontend/src/components/MyPolls.vue b/frontend/src/components/MyTokens.vue similarity index 95% rename from frontend/src/components/MyPolls.vue rename to frontend/src/components/MyTokens.vue index 210a16f..cddd563 100644 --- a/frontend/src/components/MyPolls.vue +++ b/frontend/src/components/MyTokens.vue @@ -1,6 +1,6 @@ From 48f9cd821f8a104e9ca0c6f05699059e0f063c3e Mon Sep 17 00:00:00 2001 From: Felix Dangers Date: Sat, 20 May 2023 21:18:14 +0200 Subject: [PATCH 22/23] yarn.lock update etc. --- database/db.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/database/db.js b/database/db.js index 4c2a023..d42acb6 100644 --- a/database/db.js +++ b/database/db.js @@ -8,4 +8,6 @@ const pool = new Pool({ database: 'pollshed' }); -module.exports = pool; \ No newline at end of file +module.exports = pool; + + From 89d82da900784f2f123b68d268630e1ce3a1f714 Mon Sep 17 00:00:00 2001 From: Felix Dangers Date: Sat, 20 May 2023 21:18:50 +0200 Subject: [PATCH 23/23] yarn.lock update etc. --- backend/yarn.lock | 5 +++++ frontend/yarn.lock | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/backend/yarn.lock b/backend/yarn.lock index fa60797..d2c5d57 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -787,6 +787,11 @@ utils-merge@1.0.0: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" integrity sha512-HwU9SLQEtyo+0uoKXd1nkLqigUWLB+QuNQR4OcmB73eWqksM5ovuqcycks2x043W8XVb75rG1HQ0h93TMXkzQQ== +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + uuidv7@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/uuidv7/-/uuidv7-0.4.3.tgz#5eb5b72ab2f034b0d25cc27a248cc2b36db52acc" diff --git a/frontend/yarn.lock b/frontend/yarn.lock index ef30da1..bb450bf 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -324,6 +324,11 @@ fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +js-cookie@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" + integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== + magic-string@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.0.tgz#fd58a4748c5c4547338a424e90fa5dd17f4de529"