# frozen_string_literal: true module Api # CartsController class CartsController < AuthenticatedController append_before_action :initialize_cart def show render json: serialized_object.serializable_hash, status: :ok end def create product_cart = @cart.product_carts.new(product_id: permitted_params[:product_id], quantity: permitted_params[:quantity]) if product_cart.save render json: serialized_object.serializable_hash, status: :ok else render json: { errors: product_cart.as_json }, status: :unprocessable_entity end end def destroy product = @cart.product_carts.products.find_by(public_id: params[:id]) render status: :not_found and return if product.nil? @cart.product_carts.find_by(cart_id: @cart.id, product_id: product.id).destroy render status: :no_content end private def serialized_object CartSerializer.new(@cart) end def permitted_params params.permit(:product_id, :quantity) end def initialize_cart @cart = current_user_account.cart end end end