diff options
Diffstat (limited to 'db/functions.sql')
-rw-r--r-- | db/functions.sql | 30 |
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 ; + |