summaryrefslogtreecommitdiff
path: root/app/serializers
diff options
context:
space:
mode:
Diffstat (limited to 'app/serializers')
-rw-r--r--app/serializers/cart_serializer.rb11
-rw-r--r--app/serializers/product_cart_serializer.rb6
-rw-r--r--app/serializers/product_serializer.rb6
3 files changed, 22 insertions, 1 deletions
diff --git a/app/serializers/cart_serializer.rb b/app/serializers/cart_serializer.rb
new file mode 100644
index 0000000..cbe46d8
--- /dev/null
+++ b/app/serializers/cart_serializer.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+# CartSerializer
+class CartSerializer < BaseSerializer
+ attribute :products do |object|
+ ProductSerializer.new(
+ Product.joins(:product_carts).select('products.*', 'product_carts.quantity AS quantity')
+ .includes(picture_attachment: :blob).where('product_carts.cart_id = ?', object.id)
+ ).serializable_hash
+ end
+end
diff --git a/app/serializers/product_cart_serializer.rb b/app/serializers/product_cart_serializer.rb
new file mode 100644
index 0000000..a82715f
--- /dev/null
+++ b/app/serializers/product_cart_serializer.rb
@@ -0,0 +1,6 @@
+# frozen_string_literal: true
+
+# ProductCartSerializer
+class ProductCartSerializer < BaseSerializer
+ attributes :quantity
+end
diff --git a/app/serializers/product_serializer.rb b/app/serializers/product_serializer.rb
index ab23d01..0104ba4 100644
--- a/app/serializers/product_serializer.rb
+++ b/app/serializers/product_serializer.rb
@@ -11,7 +11,11 @@ class ProductSerializer < BaseSerializer
object.picture.url
end
- attribute :company do |object|
+ attribute :quantity, if: Proc.new { |object| object.respond_to?(:quantity) } do |object|
+ object.quantity
+ end
+
+ attribute :company, if: Proc.new { |object| object.respond_to?(:company_short_name) } do |object|
{ name: object.company_name, short_name: object.company_short_name }
end
end