aboutsummaryrefslogtreecommitdiff
path: root/db/functions.sql
diff options
context:
space:
mode:
Diffstat (limited to 'db/functions.sql')
-rw-r--r--db/functions.sql30
1 files changed, 30 insertions, 0 deletions
diff --git a/db/functions.sql b/db/functions.sql
new file mode 100644
index 0000000..995e7e9
--- /dev/null
+++ b/db/functions.sql
@@ -0,0 +1,30 @@
+drop function if exists webs.cart;
+drop function if exists webs.add_to_cart;
+
+delimiter $$
+create function webs.cart(user_id int) -- get current order for user_id (cart order id)
+returns int
+begin
+ set @order_id = (select id from webs.order where status = 1 and user = user_id);
+ if @order_id is not null then
+ return @order_id;
+ end if;
+ insert into webs.order (`user`) values (user_id);
+ set @order_id = (select id from webs.order where status = 1 and user = user_id);
+ return @order_id;
+end$$
+
+create function webs.add_to_cart(product_id int, user_id int)
+returns boolean
+begin
+ set @orderproduct_id = (select id from webs.orderproduct where product = product_id and `order` = cart(user_id));
+ if @orderproduct_id is not null then
+ update orderproduct set count = count + 1 where id = @orderproduct_id;
+ return true;
+ end if;
+ insert into webs.orderproduct (`product`, `count`, `order`) values (product_id, 1, cart(user_id));
+ return false;
+end$$
+
+delimiter ;
+