From 2912f7c4550ba622acc1eb4ede3ba04955adc366 Mon Sep 17 00:00:00 2001 From: Jurgen Rentinck Date: Sat, 29 Aug 2026 16:54:25 +0200 Subject: [PATCH] delete list --- .env | 11 ++++ .gitignore | 2 - controllers/ShoppingListController.js | 11 ++++ database.sqlite | Bin 0 -> 69632 bytes repositories/ShoppingListRepository.js | 8 +++ routes/web.js | 7 ++ storage/database.sqlite | Bin 0 -> 28672 bytes views/lists/index.ejs | 87 +++++++++++++++++++------ 8 files changed, 105 insertions(+), 21 deletions(-) create mode 100644 .env create mode 100644 database.sqlite create mode 100644 storage/database.sqlite diff --git a/.env b/.env new file mode 100644 index 0000000..7c2ec79 --- /dev/null +++ b/.env @@ -0,0 +1,11 @@ +PORT=3010 + +NODE_ENV=development + +SESSION_SECRET=MijnSuperGeheimeSleutel123! + +DATABASE=database.sqlite + +OPENAI_API_KEY=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 + +OPENAI_MODEL=gpt-5.4-mini diff --git a/.gitignore b/.gitignore index 46acc44..f50fddb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,4 @@ node_modules/ -.env -database.sqlite database.sqlite-shm database.sqlite-wal tmp-delete-test.sqlite diff --git a/controllers/ShoppingListController.js b/controllers/ShoppingListController.js index 00dc966..ee82fa3 100644 --- a/controllers/ShoppingListController.js +++ b/controllers/ShoppingListController.js @@ -72,6 +72,17 @@ class ShoppingListController { res.json({ success: true }); } + deleteList(req, res) { + const list = ShoppingListRepository.findById(req.params.id, req.user.household_id); + if (!list) return res.status(404).json({ error: "Lijst niet gevonden" }); + + const result = ShoppingListRepository.deleteList(list.id); + if (result.changes === 0) return res.status(404).json({ error: "Lijst niet gevonden" }); + + this.broadcastUpdate(req, list.id); + res.json({ success: true }); + } + broadcastUpdate(req, listId) { if (req.app.locals.io) { req.app.locals.io.to(`list:${listId}`).emit("list:updated", { listId }); diff --git a/database.sqlite b/database.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..f838b6e551da51b5c7241d1f8409fdcd7ca731e4 GIT binary patch literal 69632 zcmeI*ZEPEN9S86`Kb`Hy{&(v#E39cRYf9s#X?%Ba9xM>egVUzXL+dzegEU!=eM#K- zA-S`&WJpMD8Hg9`4dOwXU=m}37f49FL1+>}@M@aa8$e8GykP=OLO>gVDO^2S*hvj zW~G?VG&LucoK4cK)5&E!T^}gqqtSb{lR_jKdB13N?%%} zy7NgIB*U7yMi0-YFn%+XV`WwG#HHDzZ@1K!^8ZShaK+g*oTuBbpE5F!OO|+4vIf(UqHfB=!K|?r6e36x5o-35|>Ylz+q+!csYt;%H&NOPVB9xI1j5>LDxJ!ui^zip4 z*j!-FJLcbzBi`n?Lj?KYf<`nWK(QY=hP2azAz$QkJ)JsjHZvoc|HJopP6!c2;lC0v zySG`{-Y%3kGR1;k%}}nAt{)uLFr61g*;1ueuF}QFvWH#wZvi|Kh$C z>Fwpe6lz{aG}g*`(81SOY#jowBT9V}XTNDJLAmZN1O(Qs(y?lmu{2wwVXWk>O@c>W zz&+~b6V+f#(dLh06I$Ca+uMz7BOw^Q`xzhG^1L_AJWGWQEn6*A%DVkdaD>_(eESWh}9nL`|CuD9*% zVP*L6CAHBEN8yjTu|#LZn8%zI2c2QDDj0w z>$O_S7K+Y2LhEyBsBC9-{YAPF;mmUJ5ZiFksLL1mY^2i%mUSy5v43v5PwhAMt3%{I z=LrvR;(n_dh?jEsgG9nwsBGZcDk{{nW^mtS&9@?QdPXmfB1& zriUwQ(#_{LN{c%q)BBY>8>89yz8sTBhhpPHu?bNcOUM%mX{6#7xU)mF^0cZ~#T9yT zh@MBQURL+ArR}2HRN>W`*|p@1wvoDVdn&&3qB6ESmP}nLuTCvZYST9gE3rLQFD0+1 z3(~dg!>ig#b!Kl#H7gt≦h+B{?xNzU30QXQEbbWmcWp)l21Ky?0wF+Lhta^13W< zYQP&O=`3$m`_i&8-Y)`C;0Ykd=N8TYnA+OLuydVGp2tWV=5P$##AOHafKmY;|cwB*q;8u9Y&3ooO zlffr_bl=^Pp!>sacOP%xJL2i`x_kM?Jz>T@`Qd<-+U;=<+j$$e+;{>mcZ6rx{d>ba zEzQ1B=@h%EpIqn2@5m3y7wH?kAOHafKmY;|fB*y_009U<00Izrn1JN*aFea~M~IuX zg7J)nyjpH^W5a;k!wuIj@;{KXaYq8XPJhtl;o|oF4;?eJ+ZUp|hm-0pk=tdpZ$2>h z|KH-sKk51Z-;=i<)Hyv`~URe{CGhC0uX=z1Rwwb2tWV=5P$##An-932pWCE z{{P1~!sr?VAOHafKmY;|fB*y_009U*F7&fd zvGoUD5P$##AOHafKmY;|fB*y_@X-W5{iK)c>sGE>cZ5H9?FVl&AJz8?H+w*KvO|3v!Ge6R;bc~UTITMD7?mn!cTGGN%BYXCiyne z$W1atPJ}-Q|1$iY@E%RV3jz>;00bZa0SG_<0uX=z1U{w$gCT(%bsq_T|uE)rAy|TVuP`z!kh<<^K7+KhkcfG2{L-<%B&k6$f49k%%XUl5Y)uxoQ zzP28AOZvT?+smHI$JF{f9olPW5#8&*bw%e#L!DRkzmY>32Q1ncd!QJiEVfFhCwp z#Nrp|$$b8TUvZ^rS>k+w{*h$GS*WZeq*Qs! zPOg$D35NelN8$wm2tWV=5P$##AOHafKmY;|IDP_Wf`0l0d_Le;{Gs}V2-eO&y^?>V zH(;a({C>q(ze2#g*uc0GAR#He{)Z*Yy@Hi2nETv~sp)M3Bg$zXO%4QT<&LuH1qyVx zUGDX=iH+2QmoP|Ur#&4eRz~UcXWYibJZ-n&u`jSN4_X*i_qtf&MtaL-4I|@p^3yyk z+(>pFE1;=L9MAthels#!1OW&@00Izz00bZa0SG_<0uVTA0X+Zzs6|m81Rwwb2tWV= z5P$##AOHafK;ZZZ;QasbiwRl;0SG_<0uX=z1Rwwb2tWV=5IAZ9oc}*+QIrP(2tWV= v5P$##AOHafKmY;|IDP^+|9|{qf)+sl0uX=z1Rwwb2tWV=5P$##j#}V9G>6tN literal 0 HcmV?d00001 diff --git a/repositories/ShoppingListRepository.js b/repositories/ShoppingListRepository.js index a6e0b05..06426ff 100644 --- a/repositories/ShoppingListRepository.js +++ b/repositories/ShoppingListRepository.js @@ -77,6 +77,14 @@ class ShoppingListRepository { DELETE FROM shopping_list_items WHERE id = ? AND list_id = ? `).run(itemId, listId); } + + deleteList(listId) { + db.prepare(` + DELETE FROM shopping_list_items WHERE list_id = ? + `).run(listId); + return db.prepare(`DELETE FROM shopping_lists WHERE id = ? + `).run(listId); + } } module.exports = new ShoppingListRepository(); diff --git a/routes/web.js b/routes/web.js index 26d3c6f..dfd0b9a 100644 --- a/routes/web.js +++ b/routes/web.js @@ -179,4 +179,11 @@ router.delete( ShoppingListController.deleteItem.bind(ShoppingListController) ); +router.delete( + "/lists/:id", + auth, + ShoppingListController.deleteList.bind(ShoppingListController) +); + + module.exports = router; \ No newline at end of file diff --git a/storage/database.sqlite b/storage/database.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..b74fbcdef383f4babb546e3b4f35d0f4d5f8e090 GIT binary patch literal 28672 zcmeI(yKd7^7{GBmZ4(qVZ5L#*olcFFh)^*j)ug9YMB=oLEztp4Zev8GTxgsK))w&y zOw2qD;yqZ{898*b`18ffUReLEa} zKI!MesWmL;O1zL)qBuWpS)@alY0a~yBWvgOYE4r(@=Q9?uFBSI>QS-NHbv7`1J|XB zxN5bk)~TG#exa}FIP=}aWovrKn^rb!cokji^xNV4=(ekNY<@5v4U%Vn7DSo^|9GV+ zclTsFXB-~t_ocAZCZAjal1ltdKOUam&-weZG6t;b} z(L7aa!mTyr?<`e4M}fM2T-b80#zo$|*vcBEl75v;IE^|AZ^vQ(CR}>lUYPpQ%VIpA zvTAAGz0z}rVdx(oC4DC5$tknYJ}LTVQHQ;t(_LDdo?W~2(xve>h@y9cVSBO4Ux}HS ztntiPw@#9<{Nv;j@8uuF-ztUpbP%675I_I{1Q0*~0R#|0009ILKwwh^@^N77|2H+g z#DxF?2q1s}0tg_000IagfIuR^@Bb_W1Q0*~0R#|0009ILKmY**HeZ1K|K{hI2oXR4 z0R#|0009ILKmY**5Mck$8bAO61Q0*~0R#|0009ILKw$F)`2YXr=a>i)KmY**5I_I{ M1Q0*~0R#~E1p_cNjsO4v literal 0 HcmV?d00001 diff --git a/views/lists/index.ejs b/views/lists/index.ejs index 2cbd1e2..1f7e884 100644 --- a/views/lists/index.ejs +++ b/views/lists/index.ejs @@ -4,27 +4,45 @@
-
-
- <% if (lists.length === 0) { %> -

Je hebt nog geen boodschappenlijsten.

- <% } else { %> -
- <% lists.forEach(list => { %> - -
- <%= list.name %> - <%= list.checked_count || 0 %>/<%= list.item_count || 0 %> gedaan -
- - Aangemaakt <%= new Date(list.created_at).toLocaleDateString("nl-NL") %> - -
- <% }); %> + +
+
+ <% if (lists.length === 0) { %> +

Je hebt nog geen boodschappenlijsten.

+ <% } else { %> + -
+ <% } %> +
+
+ + + +
@@ -40,3 +58,34 @@
+ +